2014年4月25日 星期五

[hadoop]hadoop 2 commission and decommission


在hadoop 的cluster 中,可能想要移除或者是新增新的節點進去。
(在hadoop 2.0 可能是想加入新的datanode or Node manger daemon,也就是slave node。)

如果再新增新的機器進入 cluster 中,這個過程被稱作 "commission"。
有時候,我們的datanode空間不夠了,再加入新的node後,我們會做 rebalance datanode的操作,確保資料可以在集群中資料平衡的分佈。(由此可知,會耗掉部分的頻寬,可以透過參數設定balance使用的頻寬大小。)

commission

Step
1.把新的節點加入 namenode的 dfs.include file中 (/etc/hadoop/conf)
2. yarn-site.xml 內可以加入 yarn.resourcemanager.nodes.include-path Path to file with nodes to include.
3. NameNode 與 ResourceManager Reread config

$/usr/lib/hadoop-hdfs/sbin/refresh-namenode.sh
$yarn rmadmin -refreshNodes

4. 把該台機器的 DataNode與 NodeManager daemon start 起來。

使用 apache ambari 只要使用 UI add host 就可以選擇加入的host跟角色。 



Decommission

反過來說,我們想要把某台機器從集群中除役下來,這個動作就叫做 decommission。
Hadoop 的 HDFS 為我們提供可容錯高可用的分散式環境,一般來說我們每個資料預設是有三個副本(repication) 。
如果我們直接把一台datanode給關機或是移除,在資料沒有充分副本的情況下,我們就可以會遺失在該台機器上的資料。

所以,當在進行 decommission 時,就是在確保在該台datanode上的資料,會被充分的備份到其他node上去。datanode會先去inform Namenode在此機器上有哪些 blocks,等到那些block都充分備份到其他台node上在轉換state。

node 在 decommission 時有三種不同的state。


  • decommission in progress
  • decommissioned
  • dead (當Namenode超過十分鐘沒有收到datanode回報的heartbeat時,就會判定成dead。)

Decommission Step
1.把 node 加到 dfs.exclude file內
2.加到 ResourceManger 的 exclude file
3.Namenode 與 ResourceManger 重讀 設定

$/usr/lib/hadoop-hdfs/sbin/distribute-exclude.sh <exclude-file>
$/usr/lib/hadoop-hdfs/sbin/refresh-namenodes.sh
$yarn rmadmin -refreshNodes

4.在namenode ui 上觀察 node的 state
5.等待該node status 轉成 decommissioned

Balanceer 




沒有留言:

張貼留言