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










































































