<Zhuuu_ZZ>那些年我们踩过的Hadoop HA的坑--高可用集群
高可用集群
- 一.Hadoop集群OK
- 二.Zookeeper集群OK(時區(qū)同步OK)
- 三.修改Hadoop配置文件
- 1.`vi core-site.xml`
- 2.`vi hdfs-site.xml`
- 3.`vi mapred-site.xml`
- 4.`vi yarn-site.xml`
- 四.發(fā)送文件
- 五.啟動集群
- 六.測試集群是否部署成功
一.Hadoop集群OK
鏈接: Hadoop集群配置詳解.
二.Zookeeper集群OK(時區(qū)同步OK)
鏈接: Zookeeper集群與時區(qū)同步配置詳解.
三.修改Hadoop配置文件
- 以往的配置全部刪除,直接插入下方配置信息即可
首先轉(zhuǎn)到配置文件下 cd /opt/hadoop2.6.0/etc/hadoop/
1.vi core-site.xml
<configuration><!-- 指定hdfs的nameservice為ns --><property><name>fs.defaultFS</name><value>hdfs://ns</value></property><!-- 指定hadoop臨時目錄 --><property><name>hadoop.tmp.dir</name><value>/opt/hadoop2.6.0/tmp</value></property><!-- 指定zookeeper地址 --><property><name>ha.zookeeper.quorum</name><value>hadooptest1:2181,hadooptest2:2181,hadooptest3:2181</value></property><property><name>hadoop.proxyuser.root.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.root.groups</name><value>*</value></property></configuration>2.vi hdfs-site.xml
<configuration><property><name>dfs.replication</name><value>3</value></property><!--當(dāng)使用HA配置集群時,則不需要secondarynamenode<property><name>dfs.namenode.secondary.http-address</name><value>192.168.198.111:50090</value></property>--><!--指定hdfs的nameservice為ns,需要和core-site.xml中的保持一致 --><property><name>dfs.nameservices</name><value>ns</value></property><!-- ns下面有兩個NameNode,分別是hadooptest1,hadooptest2--><property><name>dfs.ha.namenodes.ns</name><value>hadooptest1,hadooptest2</value></property><!-- hadooptest1的RPC通信地址 --><property><name>dfs.namenode.rpc-address.ns.hadooptest1</name><value>hadooptest1:9000</value></property><!-- hadooptest1的http通信地址 --><property><name>dfs.namenode.http-address.ns.hadooptest1</name><value>hadooptest1:50070</value></property><!-- hadooptest2的RPC通信地址 --><property><name>dfs.namenode.rpc-address.ns.hadooptest2</name><value>hadooptest2:9000</value></property><!-- hadooptest2的http通信地址 --><property><name>dfs.namenode.http-address.ns.hadooptest2</name><value>hadooptest2:50070</value></property><!-- 指定NameNode的元數(shù)據(jù)在JournalNode上的存放位置 --><property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://hadooptest1:8485;hadooptest2:8485;hadooptest3:8485/ns</value></property><!-- 指定JournalNode在本地磁盤存放數(shù)據(jù)的位置 --><property><name>dfs.journalnode.edits.dir</name><value>/opt/hadoop2.6.0/journaldata</value></property><!-- 開啟NameNode失敗自動切換 --><property><name>dfs.ha.automatic-failover.enabled</name><value>true</value></property><!-- 配置失敗自動切換實現(xiàn)方式 --><property><name>dfs.client.failover.proxy.provider.ns</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value></property><!-- 配置隔離機制方法,多個機制用換行分割,即每個機制暫用一行--><property><name>dfs.ha.fencing.methods</name><value>sshfenceshell(/bin/true)</value></property><!-- 配置sshfence隔離機制超時時間 --><property><name>dfs.ha.fencing.ssh.connect-timeout</name><value>30000</value></property><property><name>dfs.webhdfs.enabled</name><value>true</value></property></configuration>3.vi mapred-site.xml
<configuration><!-- 指定mr框架為yarn方式 --><property><name>mapreduce.framework.name</name><value>yarn</value></property></configuration>4.vi yarn-site.xml
<configuration> <!--非HA模式下指定resourcemanager <property> <name>yarn.resourcemanager.hostname</name> <value>hadooptest1</value> </property> --> <!-- Site specific YARN configuration properties --> <!-- 開啟RM高可用 --><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!-- 指定RM的cluster id --><property><name>yarn.resourcemanager.cluster-id</name><value>cluster_id</value></property><!-- 指定RM的名字 --><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><!-- 分別指定RM的地址 --><property><name>yarn.resourcemanager.hostname.rm1</name><value>hadooptest1</value></property><property><name>yarn.resourcemanager.hostname.rm2</name><value>hadooptest2</value></property><property><name>yarn.resourcemanager.webapp.address.rm1</name><value>hadooptest1:8088</value></property><property><name>yarn.resourcemanager.webapp.address.rm2</name><value>hadooptest2:8088</value></property><!-- 指定zk集群地址 --><property><name>yarn.resourcemanager.zk-address</name><value>hadooptest1:2181,hadooptest2:2181,hadooptest3:2181</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> </configuration>四.發(fā)送文件
在**/opt/hadoop2.6.0/etc/hadoop/**目錄下將配置好的主機配置文件發(fā)送到集群里的其它機器上
scp *.xml hadooptest2:$PWD
scp *.xml hadooptest3:$PWD
當(dāng)然也可以采用多開方式一起配置集群里的虛擬機,條條大路通羅馬,只要沒有Bug我們都是好朋友!!!
五.啟動集群
若遇到Hadoop報錯:NoRouteToHostException: No route to host,關(guān)掉所有節(jié)點防火墻systemctl disable firewalld,重啟所有節(jié)點機器reboot就好。
注:第一次啟動集群需全部執(zhí)行所有步驟,以后啟動集群一般而言直接執(zhí)行第5,6,7,10步就行啦。
1.確保集群處于關(guān)閉狀態(tài)
2.集群所有機器啟動journalnode:hadoop-daemon.sh start journalnode
3.集群所有機器刪除tmp文件夾,選擇主節(jié)點重新格式化hadoop namenode -format
4.把主節(jié)點新生成的tmp文件夾復(fù)制到備用節(jié)點:scp -r tmp hadooptest2:$PWD。或者直接在備用節(jié)點輸入hdfs namenode -bootstrapStandby也可。
5.機器所有機器啟動Zookeeper:zkServer.sh start
6.啟動Hadoop集群: start-all.sh
7. 在備用節(jié)點上啟動備用resourcemanager: yarn-daemon.sh start resourcemanager
8. 主節(jié)點格式化zkfc:hdfs zkfc -formatZK
9. 主,備節(jié)點啟動zkfc:hadoop-daemon.sh start zkfc
10.啟動歷史服務(wù):mr-jobhistory-daemon.sh start historyserver
六.測試集群是否部署成功
總結(jié)
以上是生活随笔為你收集整理的<Zhuuu_ZZ>那些年我们踩过的Hadoop HA的坑--高可用集群的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【密码学五】数字签名、RSA实现数字签名
- 下一篇: PS知识总结