Zookeeper NameNode(active) Resourcemanager (active)
Zookeeper NameNode (standby)
Zookeeper ResourceManager(standby)
DataNode NodeManager JournalNode
DataNode NodeManager JournalNode
DataNode NodeManager JournalNode
執行:service iptables stop 再次執行:chkconfig iptables off
配置主機名=》執行:vim /etc/sysconfig/network =》然后執行 hostname 主機 名= 》達到不重啟生效目的 配置hosts文件=》執行:vim /etc/hosts
示例:127.0.0.1 localhost::1 localhost192.168.234.21 hadoop01192.168.234.22 hadoop02192.168.234.23 hadoop03192.168.234.24 hadoop04192.168.234.25 hadoop05192.168.234.26 hadoop06執行:scp /etc/hosts hadoop02: /etc
執行:ssh-keygen ssh-copy-id root@hadoop01 (分別發送到6臺節點上)
配置conf目錄下的zoo.cfg以及創建myid文件 (zookeeper集群安裝具體略)
執行: vim /etc/sysconfig/network 進行編輯
配置hadoop-env.sh 配置 jdk 安裝所在目錄 配置hadoop配置文件所在目錄
配置
<configuration><!--執行hdfs的nameservice為ns,和core-site.xml保持一致--><property><name>dfs.nameservices</name><value>ns</value></property><!--ns下有兩個namenode,分別是nn1,nn2--><property><name>dfs.ha.namenodes.ns</name><value>nn1,nn2</value></property><!--nn1 的 RPC 通信地址--><property><name>dfs.namenode.rpc-address.ns.nn1</name><value>hadoop01:9000</value></property><!--nn1的http通信地址--><property><name>dfs.namenode.http-address.ns.nn1</name><value>hadoop01:50070</value></property><!--nn2的RPC通信地址--><property><name>dfs.namenode.rpc-address.ns.nn2</name><value>hadoop02:9000</value></property><!--nn2 的 http 通信地址--><property><name>dfs.namenode.http-address.ns.nn2</name><value>hadoop02:50070</value></property><!--指定namenode的元數據在JournalNode上的存放位置,這樣,namenode2可以 從 jn 集群里獲取 最新的namenode的信息,達到熱備的效果--><property><name>dfs.namenode.shared.edits.dir</name><value> qjournal://hadoop04:8485;hadoop05:8485;hadoop06:8485/ns</value></property><!--指定 JournalNode 存放數據的位置--><property><name>dfs.journalnode.edits.dir</name><value>/home/software/hadoop-2.7.1/journal</value></property><!--開啟namenode故障時自動切換--><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property><!--配置切換的實現方式--><property><name>dfs.client.failover.proxy.provider.ns</name><value> org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProv ider</value></property><!--配置隔離機制--><property><name>dfs.ha.fencing.methods</name><value>sshfence</value></property><!--配置隔離機制的ssh登錄秘鑰所在的位置--><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/root/.ssh/id_rsa</value></property><!--配置namenode數據存放的位置,可以不配置,如果不配置,默認用的是 core-site.xml里配置的hadoop.tmp.dir的路徑--><property><name>dfs.namenode.name.dir</name><value>file:///home/software/hadoop-2.7.1/tmp/namenode</value></property><!--配置datanode數據存放的位置,可以不配置,如果不配置,默認用的是 core-site.xml 里配置的 hadoop.tmp.dir 的路徑--><property><name>dfs.datanode.data.dir</name><value>file:///home/software/hadoop-2.7.1/tmp/datanode</value></property><!--配置 block 副本數量--><property><name>dfs.replication</name><value>3</value></property><!--設置hdfs的操作權限,false表示任何用戶都可以在hdfs上操作文件--><property><name>dfs.permissions</name><value>false</value></property></configuration>配置代碼:
<configuration><property><!--指定mapreduce運行在yarn上--><name>mapreduce.framework.name</name><value>yarn</value></property></configuration>配置代碼:
<configuration><!--開啟YARN HA --> <property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property> <!--指定兩個resourcemanager的名稱--> <property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><!--配置rm1,rm2的主機--> <property><name>yarn.resourcemanager.hostname.rm1</name><value>hadoop01</value></property><property><name>yarn.resourcemanager.hostname.rm2</name><value>hadoop03</value></property><!--開啟yarn恢復機制--><property><name>yarn.resourcemanager.recovery.enabled</name><value>true</value></property><!--執行rm恢復機制實現類--><property><name>yarn.resourcemanager.store.class</name><value> org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore </value></property><!--配置zookeeper的地址--> <property><name>yarn.resourcemanager.zk-address</name><value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value><description>For multiple zk services, separate them with comma</description></property><!--指定YARN HA的名稱--><property><name>yarn.resourcemanager.cluster-id</name><value>yarn-ha</value></property><property><!--指定 yarn 的老大 resoucemanager 的地址--><name>yarn.resourcemanager.hostname</name><value>hadoop0 1 </value></property><property><!--NodeManager獲取數據的方式--><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property></configuration>配置代碼:
hadoop04hadoop05hadoop06在 hadoop-2.7.1 目錄下創建 : ①journal目錄 ②創建tmp目錄 ③在tmp目錄下,分別創建namenode目錄和datanode目錄
比如向hadoop02節點傳輸: scp -r hadoop-2.7.1 hadoop02:/home/software 然后把/etc/profile 發往其他5臺機器,別忘了每臺機器執行:source /etc/profile
在 Zookeeper 安裝目錄的 bin 目錄下執行:sh zkServer.sh start
在zk的leader節點上執行: hdfs zkfc -formatZK,這個指令的作用是在zookeeper集群上生成ha節點 (ns節點) 注:18–24步可以用一步來替代:進入hadoop安裝目錄的sbin目錄,執行: start-dfs.sh 。 但建議還是按部就班來執行,比較可靠。
在04、05、06節點上執行: 切換到hadoop安裝目錄的sbin目錄下,執行: sh hadoop-daemons.sh start journalnode 然后執行jps命令查看:
在01節點上執行: hadoop namenode -format
在 01 節點上執行: hadoop-daemon.sh start namenode
在02節點上執行: hdfs namenode-bootstrapStandby
在02節點上執行: hadoop-daemon.sh start namenode
在 04,05,06 節點上執行:hadoop-daemon.sh start datanode
在01,02節點上執行: hadoop-daemon.sh start zkfc
在01節點上執行:start-yarn.sh 啟動成功后,04,05,06節點上應該有nodemanager 的進程
在03節點上執行:yarn-daemon.sh start resourcemanager
輸入地址: http://192.168.234.21:50070 ,查看 namenode 的信息,是active狀態 的 輸入地址:http://192.168.234.22:50070,查看namenode的信息,是standby狀態 然后停掉01節點的namenode,此時返現standby的namenode變為active。
http://192.168.234.21:8088(節點01的8088端口) 停掉:yarn-daemon.sh stop resourcemanager 啟動: y arn-daemon.sh start resourcemanager 排錯: 1.排查防火墻 2. 排查 ip ,如果不是固定 ip 的話,要看下 ip 是否被更換 3.主機名 4.hosts ip和主機名是否對應上 5. 排查 zk 的配置文件 6.排查hadoop的配置文件
此外注意,job連接的地址是active的namenode的地址
新聞熱點
疑難解答