Hadoop HA

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章