1.說明
System Version:Red Hat Enterprise Linux Server release 6.5 (Santiago) Hadoop Version:2.6.0
SSH免密需namenode1到所有節點,namenode2到所有節點。(重要)
ssh-keygen -t rsa ssh-copy-id namenode1 ssh-copy-id namenode1 ssh-copy-id namenode2 ssh-copy-id datanode1 ssh-copy-id datanode2 ssh-copy-id datanode3
2.規劃
IP 主機名 NameNode JournalNode DataNode 192.168.199.126 namenode1 Y Y N 192.168.199.127 namenode2 Y Y N 192.168.199.128 datanode1 N Y Y 192.168.199.129 datanode2 N N Y 192.168.199.125 datanode3 N N Y
3.配置文件
core-site.xml <configuration> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/</value> </property> <property> <name>fs.default.name</name> <value>hdfs://namenode1:9000</value> </property> <property> <name>fs.default</name> <value>hdfs://cluster1</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> </configuration> ================================================= hdfs-site.xml <configuration> <property> <name>dfs.permissions</name> <value>false</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.nameservices</name> <value>cluster1</value> </property> <property> <name>dfs.ha.namenodes.cluster1</name> <value>namenode1,namenode2</value> </property> <property> <name>dfs.namenode.rpc-address.cluster1.namenode1</name> <value>namenode1:9000</value> </property> <property> <name>dfs.namenode.rpc-address.cluster1.namenode2</name> <value>namenode2:9000</value> </property> <property> <name>dfs.namenode.http-address.cluster1.namenode1</name> <value>namenode1:50070</value> </property> <property> <name>dfs.namenode.http-address.cluster1.namenode2</name> <value>namenode2:50070</value> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://namenode1:8485;namenode2:8485;datanode1:8485/cluster1</value> </property> <property> <name>dfs.client.failover.proxy.provider.cluster1</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/hadoop/.ssh/id_rsa</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/home/hadoop/tmp/journal</value> </property> </configuration> ================================================= yarn-site.xml <configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>namenode1</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> ================================================= slaves datanode1 datanode2 datanode3 ================================================= yarn-site.xml <configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>namenode1</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration> ================================================= mapred-site.xml <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
=================================================
4.啓動。(以下命令注意執行順序!)
4.1啓動JournalNode集羣
在namenode1、namenode2、datanode1上執行命令:
./sbin/hadoop-daemon.sh start journalnode
4.2格式化namenode1
在namenode1上執行命令:
hdfs namenode -format
4.3啓動namenode1
在namenode1上執行命令:
./sbin/hadoop-daemon.sh start namenode
4.4格式化namenode2
在namenode2上執行命令:
hdfs namenode -bootstrapStandby
4.5啓動namenode2
在namenode2上執行命令:
./sbin/hadoop-daemon.sh start namenode
這時使用瀏覽器訪問http://namenode1:50070和http://namenode2:50070 。如果能夠看到兩個頁面,證明NameNode啓動成功了,兩個NameNode的狀態都是standby。
4.6轉換active
在任一namenode上執行命令
hdfs haadmin -transitionToActive namenode1
再使用瀏覽器訪問http://namenode1:50070和http://namenode2:50070,會發現namenode1節點變爲active,namenode2還是standby。
4.7啓動DataNodes
在namenode1執行:
./sbin/hadoop-daemons.sh start datanode
會啓動3個datanode節點,執行完畢後檢查。
這時,HA集羣就啓動成功。
4.8故障測試
在任一namenode上執行命令
hdfs haadmin -failover -forceactive namenode1 namenode2
執行後會有提示是否成功,再通過web界面觀察namenode1和namenode2的狀態。
4.9啓動yarn(個人看法,做分析用,所以最後啓動)
在namenode1上執行命令
./sbin/start-yarn.sh
4.10查看當前節點狀態
hadoop dfsadmin -report