<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    The important thing in life is to have a great aim , and the determination

    常用鏈接

    統(tǒng)計(jì)

    IT技術(shù)鏈接

    保險(xiǎn)相關(guān)

    友情鏈接

    基金知識

    生活相關(guān)

    最新評論

    Hadoop-2.4.1學(xué)習(xí)之QJM HA的自動(dòng)故障轉(zhuǎn)移

    前面學(xué)習(xí)了使用命令hdfs haadmin -failover手動(dòng)進(jìn)行故障轉(zhuǎn)移,在該模式下,即使現(xiàn)役NameNode已經(jīng)失效,系統(tǒng)也不會(huì)自動(dòng)從現(xiàn)役NameNode轉(zhuǎn)移到待機(jī)NameNode,下面學(xué)習(xí)如何配置部署HA自動(dòng)進(jìn)行故障轉(zhuǎn)移。自動(dòng)故障轉(zhuǎn)移為HDFS部署增加了兩個(gè)新組件:ZooKeeper和ZKFailoverController(ZKFC)進(jìn)程。ZooKeeper是維護(hù)少量協(xié)調(diào)數(shù)據(jù),通知客戶端這些數(shù)據(jù)的改變和監(jiān)視客戶端故障的高可用服務(wù)。HA的自動(dòng)故障轉(zhuǎn)移依賴于ZooKeeper的以下功能:

    • 故障檢測:集群中的每個(gè)NameNode在ZooKeeper中維護(hù)了一個(gè)持久會(huì)話,如果機(jī)器崩潰,ZooKeeper中的會(huì)話將終止,ZooKeeper通知另一個(gè)NameNode需要觸發(fā)故障轉(zhuǎn)移。
    • 現(xiàn)役NameNode選擇:ZooKeeper提供了一個(gè)簡單的機(jī)制用于唯一的選擇一個(gè)節(jié)點(diǎn)為active狀態(tài)。如果目前現(xiàn)役NameNode崩潰,另一個(gè)節(jié)點(diǎn)可能從ZooKeeper獲得特殊的排外鎖以表明它應(yīng)該成為現(xiàn)役NameNode。

           ZKFC是自動(dòng)故障轉(zhuǎn)移中的另一個(gè)新組件,是ZooKeeper的客戶端,也監(jiān)視和管理NameNode的狀態(tài)。每個(gè)運(yùn)行NameNode的主機(jī)也運(yùn)行了一個(gè)ZKFC進(jìn)程,ZKFC負(fù)責(zé):

    • 健康監(jiān)測:ZKFC使用一個(gè)健康檢查命令定期地ping與之在相同主機(jī)的NameNode,只要該NameNode及時(shí)地回復(fù)健康狀態(tài),ZKFC認(rèn)為該節(jié)點(diǎn)是健康的。如果該節(jié)點(diǎn)崩潰,凍結(jié)或進(jìn)入不健康狀態(tài),健康監(jiān)測器標(biāo)識該節(jié)點(diǎn)為非健康的。
    • ZooKeeper會(huì)話管理:當(dāng)本地NameNode是健康的,ZKFC保持一個(gè)在ZooKeeper中打開的會(huì)話。如果本地NameNode處于active狀態(tài),ZKFC也保持一個(gè)特殊的znode鎖,該鎖使用了ZooKeeper對短暫節(jié)點(diǎn)的支持,如果會(huì)話終止,鎖節(jié)點(diǎn)將自動(dòng)刪除。
    • 基于ZooKeeper的選擇:如果本地NameNode是健康的,且ZKFC發(fā)現(xiàn)沒有其它的節(jié)點(diǎn)當(dāng)前持有znode鎖,它將為自己獲取該鎖。如果成功,則它已經(jīng)贏得了選擇,并負(fù)責(zé)運(yùn)行故障轉(zhuǎn)移進(jìn)程以使它的本地NameNode為active。故障轉(zhuǎn)移進(jìn)城與前面描述的手動(dòng)故障轉(zhuǎn)移相似,首先如果必要保護(hù)之前的現(xiàn)役NameNode,然后本地NameNode轉(zhuǎn)換為active狀態(tài)。

           在典型部署中,ZooKeeper守護(hù)進(jìn)程運(yùn)行在三個(gè)或者五個(gè)節(jié)點(diǎn)上,但由于ZooKeeper本身需要較少的資源,所以將ZooKeeper部署在與現(xiàn)役NameNode和待機(jī)NameNode相同的主機(jī)上,還可以將ZooKeeper部署到與YARN的ResourceManager相同的節(jié)點(diǎn)上。建議配置ZooKeeper將數(shù)據(jù)存儲在與HDFS元數(shù)據(jù)不同的硬盤上以得到最好的性能和隔離性。在配置自動(dòng)故障轉(zhuǎn)移之前需要先停掉集群,目前在集群運(yùn)行時(shí)還不可能將手動(dòng)故障轉(zhuǎn)移的安裝轉(zhuǎn)換為自動(dòng)故障轉(zhuǎn)移的安裝。接下來看看如何配置HA的自動(dòng)故障轉(zhuǎn)移。首先在hdfs-site.xml中添加下面的參數(shù),該參數(shù)的值默認(rèn)為false:

    1. <property>  
    2.    <name>dfs.ha.automatic-failover.enabled</name>  
    3.    <value>true</value>  
    4. </property>  

           在core-site.xml文件中添加下面的參數(shù),該參數(shù)的值為ZooKeeper服務(wù)器的地址,ZKFC將使用該地址。

    1. <property>  
    2.    <name>ha.zookeeper.quorum</name> <value>zk1.example.com:2181,zk2.example.com:2181,zk3.example.com:2181</value>  
    3. </property>  

           在HA或者HDFS聯(lián)盟中,上面的兩個(gè)參數(shù)還需要以NameServiceID為后綴,比如dfs.ha.automatic-failover.enabled.mycluster。除了上面的兩個(gè)參數(shù)外,還有其它幾個(gè)參數(shù)用于自動(dòng)故障轉(zhuǎn)移,比如ha.zookeeper.session-timeout.ms,但對于大多數(shù)安裝來說都不是必須的。

           在添加了上述的配置參數(shù)后,下一步就是在ZooKeeper中初始化要求的狀態(tài),可以在任一NameNode中運(yùn)行下面的命令實(shí)現(xiàn)該目的,該命令將在ZooKeeper中創(chuàng)建znode:

    1. $ hdfs zkfc -formatZK  

           在啟用自動(dòng)故障轉(zhuǎn)移的集群中,start-dfs.sh腳本將在任何運(yùn)行NameNode的主機(jī)上自動(dòng)啟動(dòng)ZKFC守護(hù)進(jìn)程,一旦ZKFC啟動(dòng)完畢,它們將自動(dòng)選擇一個(gè)NameNode為現(xiàn)役NameNode。如果手動(dòng)管理集群中的服務(wù),需要在每臺運(yùn)行NameNode的主機(jī)上手動(dòng)啟動(dòng)ZKFC,命令為:

    1. hadoop-daemon.sh start zkfc  
    2. hdfs zkfc  

           如果正在運(yùn)行一個(gè)安全的集群,可能想確保存儲在ZooKeeper中的信息也是安全的,這將阻止惡意的客戶端修改ZooKeeper中的元數(shù)據(jù)或者潛在地觸發(fā)一個(gè)錯(cuò)誤的故障轉(zhuǎn)移。為了保護(hù)ZooKeeper中的信息,首先在core-site.xml中添加下面的參數(shù):

    1. <property>  
    2.    <name>ha.zookeeper.auth</name>  
    3.    <value>@/path/to/zk-auth.txt</value>  
    4.  </property>  
    5.  <property>  
    6.    <name>ha.zookeeper.acl</name>  
    7.    <value>@/path/to/zk-acl.txt</value>  
    8.  </property>  

           參數(shù)值中的@字符表示參數(shù)值保存在@后的硬盤文件中。第一個(gè)配置文件指定了ZooKeeper的認(rèn)證列表,其格式與ZK CLI使用的相同,例如:digest:hdfs-zkfcs:mypassword,其中hdfs-zkfcs為ZooKeeper的用戶名,mypassword為密碼。其次使用下面的命令為該認(rèn)證生成一個(gè)ZooKeeper訪問控制列表:

    1. $ java -cp $ZK_HOME/lib/*:$ZK_HOME/zookeeper-3.4.2.jar org.apache.zookeeper.server.auth.DigestAuthenticationProvider hdfs-zkfcs:mypassword  
    2. output: hdfs-zkfcs:mypassword->hdfs-zkfcs:P/OQvnYyU/nF/mGYvB/xurX8dYs=   

           拷貝->之后的字符串并添加digest:前綴,然后粘貼到zk-acls.txt中,例如:digest:hdfs-zkfcs:vlUvLnd8MlacsE80rDuu6ONESbM=:rwcda。要想使ACLs生效,需要再次運(yùn)行zkfc –formatZK。最后可能像下面這樣在ZK CLI中驗(yàn)證ACLs:

    1. [zk: localhost:2181(CONNECTED) 1] getAcl /hadoop-ha  
    2. 'digest,'hdfs-zkfcs:vlUvLnd8MlacsE80rDuu6ONESbM=  
    3. : cdrwa  

           在安裝完成自動(dòng)故障轉(zhuǎn)移后,或許需要測試一下。首先定位現(xiàn)役NameNode,可以通過訪問NameNode的web頁面來確定哪個(gè)NameNode是active狀態(tài)的。一旦確定了處于active狀態(tài)的NameNode,就需要在該節(jié)點(diǎn)上制造點(diǎn)故障,比如使用命令kill -9 <pid of NN>模擬JVM崩潰,或重啟主機(jī)或拔掉網(wǎng)線來模擬不同的中斷。一旦觸發(fā)了自動(dòng)故障轉(zhuǎn)移,另一個(gè)NameNode應(yīng)該自動(dòng)在幾秒鐘內(nèi)變?yōu)閍ctive狀態(tài)。檢測到故障并觸發(fā)故障轉(zhuǎn)移由參數(shù)ha.zookeeper.session-timeout.ms控制,該參數(shù)為與core-site.xml中,默認(rèn)為5秒。如果測試不成功,可能是配置問題,檢查ZKFC和NameNode進(jìn)程的日志以進(jìn)一步診斷問題,通常錯(cuò)誤都是很明顯的。

    posted on 2017-08-13 18:49 鴻雁 閱讀(431) 評論(0)  編輯  收藏 所屬分類: IT技術(shù)相關(guān)

    主站蜘蛛池模板: 亚洲啪啪免费视频| 亚洲色欲啪啪久久WWW综合网| 香蕉免费一区二区三区| 日韩亚洲国产高清免费视频| 亚洲av成人一区二区三区在线观看 | 亚洲AV午夜成人片| 女性自慰aⅴ片高清免费| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 成全视成人免费观看在线看| 久久久久se色偷偷亚洲精品av | 久久久久久夜精品精品免费啦 | 中文字幕无码不卡免费视频| sss在线观看免费高清| 亚洲国产综合在线| 在线亚洲午夜理论AV大片| 美女被cao免费看在线看网站| gogo免费在线观看| 亚洲精华国产精华精华液| 久久综合九九亚洲一区| 亚洲AV无码一区二三区 | 亚洲中文无韩国r级电影| 黄页网站在线看免费| 国产午夜无码片免费| 亚洲AV成人无码网站| 亚洲精品第五页中文字幕| 国外亚洲成AV人片在线观看| 好爽又高潮了毛片免费下载| 亚洲精品免费视频| 中文在线免费不卡视频| 午夜亚洲国产理论片二级港台二级| 亚洲精品国产专区91在线| 亚洲午夜久久久久久久久电影网 | 国产精品99久久免费| 四虎最新永久免费视频| 免费播放在线日本感人片| 一级白嫩美女毛片免费| 亚洲国产成人精品无码区花野真一 | 最近免费中文字幕大全免费| a国产成人免费视频| 国产成人自产拍免费视频| 看一级毛片免费观看视频|