這篇文章主要為大家展示了“Hadoop框架中如何配置HDFS高可用環(huán)境”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Hadoop框架中如何配置HDFS高可用環(huán)境”這篇文章吧。
公司主營業(yè)務(wù):成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出羅城免費做網(wǎng)站回饋大家。
在單點或者少數(shù)節(jié)點故障的情況下,集群還可以正常的提供服務(wù),HDFS高可用機制可以通過配置Active/Standby兩個NameNodes節(jié)點實現(xiàn)在集群中對NameNode的熱備來消除單節(jié)點故障問題,如果單個節(jié)點出現(xiàn)故障,可通過該方式將NameNode快速切換到另外一個節(jié)點上。
基于兩個NameNode做高可用,依賴共享Edits文件和Zookeeper集群;
每個NameNode節(jié)點配置一個ZKfailover進程,負責(zé)監(jiān)控所在NameNode節(jié)點狀態(tài);
NameNode與ZooKeeper集群維護一個持久會話;
如果Active節(jié)點故障停機,ZooKeeper通知Standby狀態(tài)的NameNode節(jié)點;
在ZKfailover進程檢測并確認故障節(jié)點無法工作后;
ZKfailover通知Standby狀態(tài)的NameNode節(jié)點切換為Active狀態(tài)繼續(xù)服務(wù);
ZooKeeper在大數(shù)據(jù)體系中非常重要,協(xié)調(diào)不同組件的工作,維護并傳遞數(shù)據(jù),例如上述高可用下自動故障轉(zhuǎn)移就依賴于ZooKeeper組件。
服務(wù)列表 | HDFS文件 | YARN調(diào)度 | 單服務(wù) | 共享文件 | Zk集群 |
---|---|---|---|---|---|
hop01 | DataNode | NodeManager | NameNode | JournalNode | ZK-hop01 |
hop02 | DataNode | NodeManager | ResourceManager | JournalNode | ZK-hop02 |
hop03 | DataNode | NodeManager | SecondaryNameNode | JournalNode | ZK-hop03 |
創(chuàng)建目錄
[root@hop01 opt]# mkdir hopHA
拷貝Hadoop目錄
cp -r /opt/hadoop2.7/ /opt/hopHA/
配置core-site.xml
fs.defaultFS hdfs://mycluster hadoop.tmp.dir /opt/hopHA/hadoop2.7/data/tmp
配置hdfs-site.xml,添加內(nèi)容如下
dfs.nameservices mycluster dfs.ha.namenodes.mycluster nn1,nn2 dfs.namenode.rpc-address.mycluster.nn1 hop01:9000 dfs.namenode.rpc-address.mycluster.nn2 hop02:9000 dfs.namenode.http-address.mycluster.nn1 hop01:50070 dfs.namenode.http-address.mycluster.nn2 hop02:50070 dfs.namenode.shared.edits.dir qjournal://hop01:8485;hop02:8485;hop03:8485/mycluster dfs.ha.fencing.methods sshfence dfs.ha.fencing.ssh.private-key-files /root/.ssh/id_rsa dfs.journalnode.edits.dir /opt/hopHA/hadoop2.7/data/jn dfs.permissions.enable false dfs.client.failover.proxy.provider.mycluster org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
依次啟動journalnode服務(wù)
[root@hop01 hadoop2.7]# pwd /opt/hopHA/hadoop2.7 [root@hop01 hadoop2.7]# sbin/hadoop-daemon.sh start journalnode
刪除hopHA下數(shù)據(jù)
[root@hop01 hadoop2.7]# rm -rf data/ logs/
NN1格式化并啟動NameNode
[root@hop01 hadoop2.7]# pwd /opt/hopHA/hadoop2.7 bin/hdfs namenode -format sbin/hadoop-daemon.sh start namenode
NN2同步NN1數(shù)據(jù)
[root@hop02 hadoop2.7]# bin/hdfs namenode -bootstrapStandby
NN2啟動NameNode
[root@hop02 hadoop2.7]# sbin/hadoop-daemon.sh start namenode
查看當(dāng)前狀態(tài)
在NN1上啟動全部DataNode
[root@hop01 hadoop2.7]# sbin/hadoop-daemons.sh start datanode
NN1切換為Active狀態(tài)
[root@hop01 hadoop2.7]# bin/hdfs haadmin -transitionToActive nn1 [root@hop01 hadoop2.7]# bin/hdfs haadmin -getServiceState nn1 active
配置hdfs-site.xml,新增內(nèi)容如下,同步集群
dfs.ha.automatic-failover.enabled true
配置core-site.xml,新增內(nèi)容如下,同步集群
ha.zookeeper.quorum hop01:2181,hop02:2181,hop03:2181
關(guān)閉全部HDFS服務(wù)
[root@hop01 hadoop2.7]# sbin/stop-dfs.sh
啟動Zookeeper集群
/opt/zookeeper3.4/bin/zkServer.sh start
hop01初始化HA在Zookeeper中狀態(tài)
[root@hop01 hadoop2.7]# bin/hdfs zkfc -formatZK
hop01啟動HDFS服務(wù)
[root@hop01 hadoop2.7]# sbin/start-dfs.sh
NameNode節(jié)點啟動ZKFailover
這里hop01和hop02先啟動的服務(wù)狀態(tài)就是Active,這里先啟動hop02。
[hadoop2.7]# sbin/hadoop-daemon.sh start zkfc
結(jié)束hop02的NameNode進程
kill -9 14422
等待一下查看hop01狀態(tài)
[root@hop01 hadoop2.7]# bin/hdfs haadmin -getServiceState nn1 active
基本流程和思路與HDFS機制類似,依賴Zookeeper集群,當(dāng)Active節(jié)點故障時,Standby節(jié)點會切換為Active狀態(tài)持續(xù)服務(wù)。
環(huán)境同樣基于hop01和hop02來演示。
配置yarn-site.xml,同步集群下服務(wù)
yarn.nodemanager.aux-services mapreduce_shuffle yarn.resourcemanager.ha.enabled true yarn.resourcemanager.cluster-id cluster-yarn01 yarn.resourcemanager.ha.rm-ids rm1,rm2 yarn.resourcemanager.hostname.rm1 hop01 yarn.resourcemanager.hostname.rm2 hop02 yarn.resourcemanager.zk-address hop01:2181,hop02:2181,hop03:2181 yarn.resourcemanager.recovery.enabled true yarn.resourcemanager.store.class org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
重啟journalnode節(jié)點
sbin/hadoop-daemon.sh start journalnode
在NN1服務(wù)格式化并啟動
[root@hop01 hadoop2.7]# bin/hdfs namenode -format [root@hop01 hadoop2.7]# sbin/hadoop-daemon.sh start namenode
NN2上同步NN1元數(shù)據(jù)
[root@hop02 hadoop2.7]# bin/hdfs namenode -bootstrapStandby
啟動集群下DataNode
[root@hop01 hadoop2.7]# sbin/hadoop-daemons.sh start datanode
NN1設(shè)置為Active狀態(tài)
先啟動hop01即可,然后啟動hop02。
[root@hop01 hadoop2.7]# sbin/hadoop-daemon.sh start zkfc
hop01啟動yarn
[root@hop01 hadoop2.7]# sbin/start-yarn.sh
hop02啟動ResourceManager
[root@hop02 hadoop2.7]# sbin/yarn-daemon.sh start resourcemanager
查看狀態(tài)
[root@hop01 hadoop2.7]# bin/yarn rmadmin -getServiceState rm1
以上是“Hadoop框架中如何配置HDFS高可用環(huán)境”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!