一、前言node
咱們使用hadoop2.6.0版本配置Hadoop集羣,同時配置NameNode+HA、ResourceManager+HA,並使用zookeeper來管理Hadoop集羣linux
二、規劃git
一、主機規劃web
hadoop1/ 192.168.56.131shell |
hadoop2/ 192.168.56.132bootstrap |
hadoop3/ 192.168.56.133centos |
hadoop4/ 192.168.56.134bash |
hadoop5/ 192.168.56.135app |
|
namenodessh |
是 |
是 |
否 |
否 |
否 |
datanode |
否 |
否 |
是 |
是 |
是 |
resourcemanager |
是 |
是 |
否 |
否 |
否 |
journalnode |
是 |
是 |
是 |
是 |
是 |
zookeeper |
是 |
是 |
是 |
是 |
是 |
Journalnode和ZooKeeper保持奇數個,最少很多於3個節點
二、軟件規劃
軟件 |
版本 |
位數 |
說明 |
centos |
6.5 |
64 |
|
jdk |
1.7 |
64 |
穩定版本 |
zookeeper |
3.4.6 |
穩定版本 |
|
hadoop |
2.6.0 |
穩定版本 |
三、用戶規劃
節點名稱 |
用戶組 |
用戶 |
密碼 |
hadoop1 |
hadoop |
hadoop |
123456 |
hadoop2 |
hadoop |
hadoop |
123456 |
hadoop3 |
hadoop |
hadoop |
123456 |
hadoop4 |
hadoop |
hadoop |
123456 |
hadoop5 |
hadoop |
hadoop |
123456 |
四、目錄規劃
名稱 |
路徑 |
全部軟件目錄 |
/usr/hadoop/app/ |
全部數據和日誌目錄 |
/usr/hadoop/data/ |
三、集羣安裝前的環境檢查
1、修改主機名
將5個節點分別修改成hadoop一、hadoop二、hadoop三、hadoop四、hadoop5
修改主機名,請參考「修改主機名」
2、hosts文件檢查
全部節點(hadoop一、hadoop二、hadoop三、hadoop四、hadoop5)的hosts文件都要配置靜態ip與hostname之間的對應關係
192.168.56.131 hadoop1
192.168.56.132 hadoop2
192.168.56.133 hadoop3
192.168.56.134 hadoop4
192.168.56.135 hadoop5
具體請參考,「配置hosts文件」
三、禁用防火牆
永久關閉hadoop一、hadoop二、hadoop三、hadoop四、hadoop5這5個節點的防火牆
具體請參考,「防火牆」
四、配置SSH免密碼通訊
下面對hadoop1節點上的root用戶配置ssh
一、輸入「ssh-keygen -t rsa」,生成祕鑰
二、使用「cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys」命令,把公鑰複製到認證文件(authorized_keys)中,以下所示
三、確保.ssh目錄的權限是700(使用chmod 700 .ssh命令修改),確保.ssh目錄下全部文件(authorized_key、id_rsa、id_rsa.pub)的權限是600(使用chmod 600 .ssh/*命令修改),以下所示
四、輸入「ssh hadoop1」登陸,第一次登陸須要輸入yes,之後就不須要輸入啦
對hadoop二、hadoop三、hadoop四、hadoop5這4個節點上的root用戶也配置ssh,配置過程和上述在hadoop1上爲root用戶配置ssh的過程是同樣
五、在hadoop二、hadoop三、hadoop四、hadoop5這4個節點上都執行一次「cat ~/.ssh/id_rsa.pub | ssh root@hadoop1 'cat >> ~/.ssh/authorized_keys'」命令,將這4個節點上的共鑰id_ras.pub拷貝到hadoop1中的authorized_keys文件中,以下
拷貝完成後,hadoop1中的authorized_keys文件內容以下
六、將hadoop1中的authorized_keys文件分發到其餘節點(hadoop二、hadoop三、hadoop四、hadoop5)上,在hadoop1上,使用scp -r ~/.ssh/authorized_keys root@主機名:~/.ssh/ 命令分發,效果以下
七、而後測測看看,出現以下信息,表示配置成功
說明:第一次可能會出現以下信息,輸入yes就能夠了,之後就不會再出現啦
五、腳本工具的使用
腳本工具已放在「shell腳本」目錄下,若是安裝目錄有所變更,請根據須要修改
一、在hadoop1節點上,建立/usr/hadoop/tools目錄,以下所示
二、將腳本經過rz命令上傳到/usr/hadoop/tools目錄
具體使用rz命令,請參考「上傳下載rz、sz命令」
三、爲後綴*.sh的文件增長執行權限
具體使用chmod命令,請參考「權限chmod命令」
四、將/usr/hadoop/tools目錄配置到PATH路徑中
六、集羣安裝前的環境配置
一、時鐘同步
下面經過腳本對全部節點(hadoop一、hadoop二、hadoop三、hadoop四、hadoop5)進行時鐘同步
一、輸入runRemoteCmd.sh "cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime" all
二、輸入runRemoteCmd.sh "ntpdate pool.ntp.org" all
具體請參考,「時鐘同步」
二、建立hadoop用戶組、hadoop用戶以及設置密碼
下面經過腳本在hadoop一、hadoop二、hadoop三、hadoop四、hadoop5這5個節點上分別建立hadoop用戶組、hadoop用戶以及設置密碼123456
一、建立hadoop用戶組
二、建立hadoop用戶,並指定用戶的組爲hadoop
三、爲hadoop用戶設置密碼123456
具體請參考,「用戶相關命令」
三、建立/usr/hadoop/app/、/usr/hadoop/data/目錄, 並修改/usr/hadoop目錄的全部人,全部組爲hadoop
下面經過腳本在hadoop一、hadoop二、hadoop三、hadoop四、hadoop5這5個節點上分別建立/usr/hadoop/app/、/usr/hadoop/data/目錄,並修改/usr/hadoop目錄的全部人,全部組爲hadoop
一、建立/usr/hadoop/app/目錄
二、建立/usr/hadoop/data/目錄
三、修改/usr/hadoop目錄的全部人,全部組爲hadoop
具體請參考,「目錄相關命令」
四、爲每一個節點中hadoop用戶配置ssh,這裏爲了省事,直接拷貝相應節點中root用戶的配置給對應的hadoop用戶,默認hadoop家目錄是/home/hadoop
接着隨意選擇一個節點,這裏選擇hadoop4節點,以hadoop用戶登陸,而後進行ssh測試,若是出現以下信息,表示配置成功
七、JDK安裝
一、將本地下載好的jdk1.7,上傳至hadoop1節點下的/home/hadoop/app目錄中
可使用rz上傳,請參考「上傳下載rz、sz命令」
二、解壓jdk
刪除安裝包
三、配置環境變量
使配置文件生效
四、查看jdk是否安裝成功
出現以上信息,說明配置成功
五、經過腳本,將hadoop1中的jdk安裝包分發到其餘節點上
切換到hadoop用戶
在hadoop2, hadoop3, hadoop4, hadoop5節點上,重複步驟三、4,完成jdk配置
八、Zookeeper安裝
一、上傳zookeeper到hadoop1節點
一、將本地下載好的zookeeper-3.4.6.tar.gz安裝包,上傳至hadoop1節點下的/home/hadoop/app目錄下
可使用rz上傳,請參考「上傳下載rz、sz命令」
二、解壓
三、刪除zookeeper-3.4.6.tar.gz安裝包
四、重命名
二、修改Zookeeper中的配置文件
一、複製一個zoo.cfg文件
二、編輯zoo.cfg文件
三、經過腳本deploy.sh將Zookeeper安裝目錄拷貝到其餘節點上面,輸入deploy.sh zookeeer/ /usr/hadoop/app slave,以下所示
四、經過腳本runRemoteCmd.sh在全部節點上面建立數據目錄、日誌目錄
一、建立數據目錄(runRemoteCmd.sh "mkdir -p /usr/hadoop/data/zookeeper/zkdata" all)
二、建立日誌目錄(runRemoteCmd.sh "mkdir -p /usr/hadoop/data/zookeeper/zkdatalog" all)
五、分別在hadoop一、hadoop二、hadoop三、hadoop四、hadoop5節點上,進入/usr/hadoop/data/zookeeper/zkdata目錄下,建立文件myid,裏面的內容分別填充爲:一、二、三、四、5, 這裏咱們以hadoop1爲例
一、進入/usr/hadoop/data/zookeeper/zkdata目錄
二、編輯myid文件
三、按esc,輸入「:x」保存退出
六、配置Zookeeper環境變量
一、vi /etc/profile, 輸入內容,而後按esc,輸入」:x」,保存退出,最後,輸入source /etc/profile,使其立馬生效
二、其餘節點和hadoop1同樣的配置
七、查看啓動狀況
一、查看hadoop1節點上Zookeeper是否配置成功
一、啓動Zookeeper
二、出現以下信息,說明配置成功
三、關閉Zookeeper
二、查看全部節點上Zookeeper是否配置成功
一、使用runRemoteCmd.sh 腳本,啓動全部節點上面的Zookeeper
二、查看全部節點上的QuorumPeerMain進程是否啓動
三、查看全部節點上Zookeeper的狀態
出現4個follower,一個leader,表示Zookeeper安裝成功
九、hadoop安裝
一、上傳hadoop
一、將下載好的hadoop-2.6.0.tar.gz安裝包,上傳至hadoop1節點中的/usr/hadoop/app目錄下
二、解壓hadoop-2.6.0.tar.gz
三、刪除hadoop-2.6.0.tar.gz安裝包
四、重命名
二、配置hadoop家目錄下的.bash_profile
三、hdfs
一、切換到/usr/hadoop/app/hadoop/etc/hadoop/目錄下
二、配置hdfs
一、配置hadoop-env.sh
二、配置core-site.xml
三、配置hdfs-site.xml
四、配置 slave
三、向其餘節點分發hadoop安裝包
四、配置完畢後,啓動hdfs
一、啓動全部節點上面的Zookeeper進程(runRemoteCmd.sh "/usr/hadoop/app/zookeeper/bin/zkServer.sh start" zookeeper)
二、啓動全部節點上面的journalnode進程(runRemoteCmd.sh "/usr/hadoop/app/hadoop/sbin/hadoop-daemon.sh start journalnode" all)
三、在hadoop1(主節點)上執行格式化
一、切換到/usr/hadoop/app/hadoop/
二、namenode格式化(bin/hdfs namenode -format)
三、格式化高可用(bin/hdfs zkfc -formatZK)
四、啓動namenode
四、與此同時,須要在hadoop2(備節點)上執行數據同步(bin/hdfs namenode -bootstrapStandby)
五、hadoop2同步完數據後,緊接着在hadoop1節點上,按下ctrl+c來結束namenode進程。 而後關閉全部節點上面的journalnode進程(runRemoteCmd.sh "/usr/hadoop/app/hadoop/sbin/hadoop-daemon.sh stop journalnode" all)
六、若是上面操做沒有問題,咱們能夠一鍵啓動hdfs全部相關進程
七、驗證是否啓動成功
出現上面信息,說明啓動成功
八、使用bin/hdfs haadmin -failover nameService1 nameService2命令,將hadoop2切換成active, hadoop1切換成standby,其中,nameService一、nameService2是在hdfs-site.xml文件中的dfs.ha.namenodes. clusterl指定的
效果以下:
九、上傳文件至hdfs
若是以上操做都沒有問題說明hdfs配置成功
四、yarn
一、yarn配置
一、配置mapred-site.xml(默認沒有mapred-site.xml文件,從mapred-site.xml.template文件複製一份,更名爲mapred-site.xml就能夠)
二、配置yarn-site.xml
二、向其餘節點同步yarn配置(deploy.sh etc/ /usr/hadoop/app/hadoop/ all)
三、啓動YARN
一、在hadoop1節點上執行(sbin/start-yarn.sh)
二、在hadoop2節點上面執行(sbin/yarn-daemon.sh start resourcemanager)
三、查看web頁面
一、訪問hadoop1的web頁面,以下
二、訪問hadoop2的web頁面,以下
四、查看ResourceManager狀態
resourceManager的名字是yarn.resourcemanager.ha.rm-ids屬性指定的
五、Wordcount示例測試
若是上面執行沒有異常,說明YARN安裝成功
至此,基於hadoop2.6搭建5個節點的分佈式集羣搭建完畢