CentOS7 Hadoop 安裝(完全分布式)


一、hadoop集群安裝模式
 
單機模式
直接解壓,無需任何配置。主要用於測試代碼。沒有分布式文件系統。
 
偽分布式
完全分布式的一種形式,只是所有的進程都配置要一個節點上。有分布式文件系統,只不過是這個文件系統只有一個節點。
 
完全分布式
包含主節點和從節點,主節點namenode只有一個(一般來說,真實生產環境中namenode只會單獨作為一個節點)namenode主要負責存儲元數據,即datanode存儲數據的描述,如數據存儲在datanode的哪一個節點上,數據是誰上傳的。datanode負責真正干活的,負責數據存儲的。完全分布式中,如果namenode宕機了會造成整個集群無法使用,這也是完全分布式的一大缺點,存在單點故障問題。所以在一般生產環境中不太使用這種模式。
高可用集群
集群可以持續對外提供服務,做到7*24小時不間斷,依賴於zookeeper。完全分布式的架構模式為一主多從,高可用集群架構為多主多從,也就是說高可用集群至少有兩個namenode,但是同一時間只有一個是活躍的。我們把這個活躍的namenode稱為active,其它的屬於熱備份狀態,這們把這個namenode稱之為standby,並且存儲的元數據與active是一模一樣的,當active宕機的時候,standby會立馬切換為active。如果剛才宕機的namenode又恢復正常了,但是這個namenode只能是standby。但是這個集群也存在一個缺陷,就是在同一時間內只能有一個活躍的namenode。如果節點非常多(即元數據過多),這個活躍的namenode很容易崩潰。
聯邦機制
同一個集群中可以有多個namenode,並且同一時間可以有多個活躍的namenode,這些namenode 共同使用集群中所有的datanode,每個namenode只負責管理集群中datanode上的一部分數據。但是聯邦機制也會存在單點故障問題,如某一個活躍的namenode宕機了,會造成存在此namenode的數據無法訪問,因此,一般的來說實際應用使用“聯邦+高可用”模式搭建集群。

 

二、完全分布式的安裝步驟

 

1.集群規划

 

主機名 IP HDFS yarn
hadoop01  192.168.220.141 namenode
datanode
nodeManager
hadoop02 192.168.220.142 secondarynamenode
datanode
nodeManager
hadoop03 192.168.220.143 datanode resourceManager
nodeManager


  

2.修改hostname 及 hosts

$ vim /etc/hostname
$ vim /etc/hosts

  

所有的主機hosts文件均配置

192.168.220.141     hadoop01
192.168.220.142     hadoop02
192.168.220.143     hadoop03

配置完成后重啟

$ reboot

 

3.設置 SSH key

$ ssh-keygen -t rsa

一直按回車即可

 

4.將公鑰信息保存至授權認證中

 將公鑰信息保存至授權認證中 authorized_keys,以后可以進行免登錄處理

$ cd .ssh
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

  

5.登錄測試

$ ssh root@hadoop02

使用hadoop01分別登錄hadoop02和hadoop03測試,是否能免密登錄。然后通過hadoop02登錄hadoop01和hadoop03,是否也能免密登錄,以此類推。

 

6.文件配置

一共需要配置主要的6個文件:
  hadoop-x.x.x/etc/hadoop/hadoop-env.sh
  hadoop-x.x.x/etc/hadoop/yarn-env.sh
  hadoop-x.x.x/etc/hadoop/core-site.xml
  hadoop-x.x.x/etc/hadoop/yarn-site.xml         相關的job處理
  hadoop-x.x.x/etc/hadoop/hdfs-site.xml         可以確定文件的備份個數及數據文件夾的路徑
  hadoop-x.x.x/etc/hadoop/mapred-site.xml

 

1)配置 core-site.xml 
添加tmp目錄 
[root@hadoopm ~]# mkdir hadoop_tmp

<configuration>
    <!-- 指定namenode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop01:9000</value>
    </property>
    <!-- 用來指定使用hadoop時產生文件的存放目錄 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop</value>
    </property>    
</configuration

 

fs.defaultFS:HDFS的URI,文件系統://namenode標識:端口號
hadoop.tmp.dir:namenode上本地的hadoop臨時文件夾
注:hadoop.tmp.dir 如果路徑配置為 hadoop-x.x.x/tmp ,一但重新啟動,所以的信息hadoop環境全部失效


2)配置 hdfs-site.xml 
[root@hadoopm tmp]# mkdir dfs dfs/name dfs/data

如果hadoop出現問題,這些文件需要徹底清除掉,並重新配置

<configuration>  
    <!-- 指定hdfs保存數據的副本數量 -->
    <property>  
        <name>dfs.replication</name>  
        <value>2</value>  
    </property>  
    <!-- 指定hdfs中namenode的存儲位置 -->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/home/hadoop/name</value>
    </property>
    <!--指定hdfs中datanode的存儲位置-->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/home/hadoop/data</value>
    </property>  
    <property>
        <name>dfs.secondary.http.address</name>
        <value>hadoop02:50070</value>
    </property>     
</configuration>

 

3)配置yarn-site.xml 

<configuration>
    <!-- nomenodeManager獲取數據的方式是shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!-- 指定Yarn的老大(ResourceManager)的地址 -->
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>hadoop03:50090</value>
    </property>
</configuration>

 

4)配置mapred-site.xml 

<configuration>
    <!-- 告訴hadoop以后MR(Map/Reduce)運行在YARN上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

 

5)配置slaves
hadoop01 
hadoop02 
hadoop03


遠程發送或者每一個節點都配置一次

創建目錄 
/home/hadoop/data
/home/hadoop/name

 

7.集群配置

 1)在/usr/local/hadoop-2.7.7/etc/hadoop 目錄下創建一個masters文件,配置主機名稱,即內容為hadoopm

$ cd /usr/local/hadoop-2.7.7/etc/hadoop/
$ echo hadoopm > masters

  

2)修改從節點文件 slaves,配置主機名稱,即內容為hadoopm
$ echo hadoopm > slaves

  

8.格式化文件系統

$ hdfs namenode -format

 

出現如下信息表示格式化成功

 

9.啟動hadoop

1)啟動hdfs,在任意節點上啟動均可

$ start-dfs.sh

 

2)啟動yarn,在yarn的主節點上啟動

$ start-yarn.sh

  

 

10.查看進程

$ jps

  

11.測試HDSF是否能正常使用

 

 

 三、安裝過程中可能遇到的問題

 

啟動過程中某些進程啟動不了
 
正常情況下有5個進程:
namenode
secondarynamenode
datanode
nodemanager
resourcemanager
 
解決方式一:
全部關閉集群重新啟動
執行 stop-dfs.sh  命令,可以在任意節點上執行。
執行 stop-yarn.sh 命令,在yarn的節點上執行。
執行 start-dfs.sh 命令
執行  start-yarn.sh 命令
 
解決方式二:
單獨啟動某些未啟動的進程
單獨啟動hdfs相關進程,可以通過執行  hadoop-daemon.sh start 進程 命令來啟動
單獨啟動yarn相關進程,可以通過執行  yarn-daemon.sh start 進程 命令來啟動
 
 
$ cd /usr/local/hadoop-2.7.7/
$ cd /sbin
$ hadoop-daemon.sh start namenode
$ hadoop-daemon.sh start datanode
$ yarn-daemon.sh start nodemanager
$ yarn-daemon.sh start resourcemanager

 

重新格式化datanode啟動不了

 

如果想要重新格式化,則需要先刪除data目錄。

$ rm -rf /home/hadoop/data
$ hadoop namenode -format

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM