轉自:http://blog.csdn.net/dr_guo/article/details/50975851
1.集羣規劃:
主機名 IP 安裝的軟件
運行的進程
drguo1 192.168.80.149 jdk、hadoop
NameNode、DFSZKFailoverController(zkfc)、ResourceManager
drguo2 192.168.80.150 jdk、hadoop
NameNode、DFSZKFailoverController(zkfc)、ResourceManager
drguo3 192.168.80.151 jdk、hadoop、zookeeper
DataNode、NodeManager、JournalNode、QuorumPeerMain
drguo4 192.168.80.152 jdk、hadoop、zookeeper
DataNode、NodeManager、JournalNode、QuorumPeerMain
drguo5 192.168.80.153 jdk、Hadoop、zookeeper
DataNode、NodeManager、JournalNode、QuorumPeerMain
排的好好的,顯示出來就亂了!!!
2.前期準備:
準備五臺機器,修改靜態IP、主機名、主機名與IP的映射,關閉防火牆,安裝JDK並配置環境變量(不會請看這http://blog.csdn.net/dr_guo/article/details/50886667),創建用戶:用戶組,SSH免密碼登錄SSH免密碼登錄(報錯請看這http://blog.csdn.net/dr_guo/article/details/50967442)。
注意:要把127.0.1.1那一行註釋掉,要不然會出現jps顯示有datanode,但網頁顯示live nodes爲0;
註釋之後就正常了,好像有人沒註釋也正常,我也不知道爲什麼0.0
3.搭建zookeeper集羣(drguo3/drguo4/drguo5)
見:ZooKeeper完全分佈式集羣搭建
4.正式開始搭建Hadoop HA集羣
去官網下最新的Hadoop(http://apache.opencas.org/hadoop/common/stable/),目前最新的是2.7.2,下載完之後把它放到/opt/Hadoop下
-
guo@guo:~/下載$ mv ./hadoop-2.7.2.tar.gz /opt/Hadoop/
-
mv: 無法創建普通文件"/opt/Hadoop/hadoop-2.7.2.tar.gz": 權限不夠
-
guo@guo:~/下載$ su root
-
密碼:
-
root@guo:/home/guo/下載# mv ./hadoop-2.7.2.tar.gz /opt/Hadoop/
解壓
-
guo@guo:/opt/Hadoop$ sudo tar -zxf hadoop-2.7.2.tar.gz
-
[sudo] guo 的密碼:
解壓jdk的時候我用的是tar -zxvf,其中的v呢就是看一下解壓的過程,不想看你可以不寫。
修改opt目錄所有者(用戶:用戶組)直接把opt目錄的所有者/組換成了guo。具體情況在ZooKeeper完全分佈式集羣搭建說過。
-
root@guo:/opt/Hadoop# chown -R guo:guo /opt
設置環境變量
-
guo@guo:/opt/Hadoop$ sudo gedit /etc/profile
在最後加上(這樣設置在執行bin/sbin目錄下的腳本時就不用進入該目錄用了)
-
#hadoop
-
export HADOOP_HOME=/opt/Hadoop/hadoop-2.7.2
-
export PATH=$PATH:$HADOOP_HOME/sbin
-
export PATH=$PATH:$HADOOP_HOME/bin
然後更新配置
-
guo@guo:/opt/Hadoop$ source /etc/profile
修改/opt/Hadoop/hadoop-2.7.2/etc/hadoop下的hadoop-env.sh
-
guo@guo:/opt/Hadoop$ cd hadoop-2.7.2
-
guo@guo:/opt/Hadoop/hadoop-2.7.2$ cd etc/hadoop/
-
guo@guo:/opt/Hadoop/hadoop-2.7.2/etc/hadoop$ sudo gedit ./hadoop-env.sh
進入文件後
-
export JAVA_HOME=${JAVA_HOME}#將這個改成JDK路徑,如下
-
export JAVA_HOME=/opt/Java/jdk1.8.0_73
然後更新文件配置
-
guo@guo:/opt/Hadoop/hadoop-2.7.2/etc/hadoop$ source ./hadoop-env.sh
前面配置和單機模式一樣,我就直接複製了。
注意:漢語註釋是給你看的,複製粘貼的時候都刪了!!!
修改core-site.xml
-
<configuration>
-
-
<property>
-
<name>fs.defaultFS</name>
-
<value>hdfs://ns1/</value>
-
</property>
-
-
<property>
-
<name>hadoop.tmp.dir</name>
-
<value>/opt/Hadoop/hadoop-2.7.2/tmp</value>
-
</property>
-
-
<property>
-
<name>ha.zookeeper.quorum</name>
-
<value>drguo3:2181,drguo4:2181,drguo5:2181</value>
-
</property>
-
</configuration>
修改hdfs-site.xml
把Hadoop整個目錄拷貝到drguo2/3/4/5,拷之前把share下doc刪了(文檔不用拷),這樣會快點。
5.啓動zookeeper集羣(分別在drguo3、drguo4、drguo5上啓動zookeeper)
-
guo@drguo3:~$ zkServer.sh start
-
ZooKeeper JMX enabled by default
-
Using config: /opt/zookeeper-3.4.8/bin/../conf/zoo.cfg
-
Starting zookeeper ... STARTED
-
guo@drguo3:~$ jps
-
2005 Jps
-
1994 QuorumPeerMain
-
guo@drguo3:~$ ssh drguo4
-
Welcome to Ubuntu 15.10 (GNU/Linux 4.2.0-16-generic x86_64)
-
-
* Documentation: https://help.ubuntu.com/
-
-
Last login: Fri Mar 25 14:04:43 2016 from 192.168.80.151
-
guo@drguo4:~$ zkServer.sh start
-
ZooKeeper JMX enabled by default
-
Using config: /opt/zookeeper-3.4.8/bin/../conf/zoo.cfg
-
Starting zookeeper ... STARTED
-
guo@drguo4:~$ jps
-
1977 Jps
-
1966 QuorumPeerMain
-
guo@drguo4:~$ exit
-
註銷
-
Connection to drguo4 closed.
-
guo@drguo3:~$ ssh drguo5
-
Welcome to Ubuntu 15.10 (GNU/Linux 4.2.0-16-generic x86_64)
-
-
* Documentation: https://help.ubuntu.com/
-
-
Last login: Fri Mar 25 14:04:56 2016 from 192.168.80.151
-
guo@drguo5:~$ zkServer.sh start
-
ZooKeeper JMX enabled by default
-
Using config: /opt/zookeeper-3.4.8/bin/../conf/zoo.cfg
-
Starting zookeeper ... STARTED
-
guo@drguo5:~$ jps
-
2041 Jps
-
2030 QuorumPeerMain
-
guo@drguo5:~$ exit
-
註銷
-
Connection to drguo5 closed.
-
guo@drguo3:~$ zkServer.sh status
-
ZooKeeper JMX enabled by default
-
Using config: /opt/zookeeper-3.4.8/bin/../conf/zoo.cfg
-
Mode: leader
6.啓動journalnode(分別在drguo3、drguo4、drguo5上啓動journalnode)注意只有第一次需要這麼啓動,之後啓動hdfs會包含journalnode。
-
guo@drguo3:~$ hadoop-daemon.sh start journalnode
-
starting journalnode, logging to /opt/Hadoop/hadoop-2.7.2/logs/hadoop-guo-journalnode-drguo3.out
-
guo@drguo3:~$ jps
-
2052 Jps
-
2020 JournalNode
-
1963 QuorumPeerMain
-
guo@drguo3:~$ ssh drguo4
-
Welcome to Ubuntu 15.10 (GNU/Linux 4.2.0-16-generic x86_64)
-
-
* Documentation: https://help.ubuntu.com/
-
-
Last login: Fri Mar 25 00:09:08 2016 from 192.168.80.149
-
guo@drguo4:~$ hadoop-daemon.sh start journalnode
-
starting journalnode, logging to /opt/Hadoop/hadoop-2.7.2/logs/hadoop-guo-journalnode-drguo4.out
-
guo@drguo4:~$ jps
-
2103 Jps
-
2071 JournalNode
-
1928 QuorumPeerMain
-
guo@drguo4:~$ exit
-
註銷
-
Connection to drguo4 closed.
-
guo@drguo3:~$ ssh drguo5
-
Welcome to Ubuntu 15.10 (GNU/Linux 4.2.0-16-generic x86_64)
-
-
* Documentation: https://help.ubuntu.com/
-
-
Last login: Thu Mar 24 23:52:17 2016 from 192.168.80.152
-
guo@drguo5:~$ hadoop-daemon.sh start journalnode
-
starting journalnode, logging to /opt/Hadoop/hadoop-2.7.2/logs/hadoop-guo-journalnode-drguo5.out
-
guo@drguo5:~$ jps
-
2276 JournalNode
-
2308 Jps
-
1959 QuorumPeerMain
-
guo@drguo5:~$ exit
-
註銷
-
Connection to drguo5 closed.
在drguo4/5啓動時發現了問題,沒有journalnode,查看日誌發現是因爲漢語註釋造成的,drguo4/5全刪了問題解決。drguo4/5的拼音輸入法也不能用,我很蛋疼。。鏡像都是複製的,咋還變異了呢。
7.格式化HDFS(在drguo1上執行)
-
guo@drguo1:/opt$ hdfs namenode -format
這回又出問題了,還是漢語註釋鬧得,drguo1/2/3也全刪了,問題解決。
注意:格式化之後需要把tmp目錄拷給drguo2(不然drguo2的namenode起不來)
-
guo@drguo1:/opt/Hadoop/hadoop-2.7.2$ scp -r tmp/ drguo2:/opt/Hadoop/hadoop-2.7.2/
8.格式化ZKFC(在drguo1上執行)
-
guo@drguo1:/opt$ hdfs zkfc -formatZK
9.啓動HDFS(在drguo1上執行)
-
guo@drguo1:/opt$ start-dfs.sh
10.啓動YARN(在drguo1上執行)
-
guo@drguo1:/opt$ start-yarn.sh
PS:
1.drguo2的resourcemanager需要手動單獨啓動:
yarn-daemon.sh start resourcemanager
2.namenode、datanode也可以單獨啓動:
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
3.NN 由standby轉化成active
hdfs haadmin -transitionToActive nn1 --forcemanual
大功告成!!!
是不是和之前規劃的一樣0.0