hadoop & hbase 上下線

原文網址:http://blog.chinaunix.net/uid-16362696-id-3479643.html  

線上部署hadoop、hbase 一般都是採用存儲、計算一對一的方式,即每個節點啓動 hadoop 的 datanode(以下簡稱dn)& tasktracker(以下簡稱tt) 再加 hbase regionserver(以下簡稱rs),hadoop namenode(以下簡稱nn)和 hbase master(以下簡稱master)一般在負載較輕的情況下可以部署在同一個節點上。

    生產集羣在長時間運行過程中不可避免存在機器損壞替換的情況,計算資源需求隨着業務數據量的增長也會不斷提高,這需要我們對集羣進行擴容或縮減。

    集羣改變規模後,最爲徹底的刷新方式就是重啓整個集羣,但重啓會導致服務中斷,hadoop hbase提供了較好的在線動態調整方式,結合網上的資料整理如下。


hadoop節點增刪


dn和tt的增加:


參考:

http://www.cnblogs.com/rilley/archive/2012/02/13/2349858.html

http://rritw.com/a/bianchengyuyan/C__/20120815/205760.html

1、修改nn的配置文件 hadoop/conf/slaves ,添加新節點,並同步配置到所有新節點的機器上.

2、啓動dn和tt服務:

1
2
hadoop/bin/hadoop-daemon.sh start datanode
hadoop/bin/hadoop-daemon.sh start tasktracker
該步驟如果可以確定 slaves 中節點都正常,也可以直接在 nn 上運行 hadoop/bin/start-all.sh 來啓動.

3、開啓balancer (默認10%):


1
hadoop/bin/start-balancer.sh ?-threshold 5



dn和tt的刪除:

一般如果需要刪除的節點較少,那麼可以直接在需要刪除的節點上stop所有應用即可。

較爲安全的方式推薦使用exclude文件,注意在刪除對應節點時,添加到exclude中的hostname或ip必須和report中看到的一致,否則會無法踢出,一般都是ip地址.


一、刪除dn:

1、修改nn conf/hdfs-site.xml文件, 指定exclude文件位置:

1
2
3
4
<property>
    <name>dfs.hosts.exclude</name>
    <value>/home/admin/hadoop/conf/dfs_excludes</value>
</property>

2、dfs_excludes中添加需要下線的dn,如:

1
2
3
4
vi /home/admin/hadoop/conf/dfs_excludes
172.16.1.10
172.16.1.11
172.16.1.12

3、在nn上執行下面指令開始遷移數據,完成後這些服務器上的 DataNode 將被停掉:

1
hadoop/bin/hadoop dfsadmin -refreshNodes
4、通過下面方法檢查下線是否完成:
1
2
3
4
5
hadoop/bin/hadoop dfsadmin -report
 
# 正在執行的會顯示:Decommission Status : Decommission in progress
# 執行完畢後會顯示:Decommission Status : Decommissioned
# 正常服務節點顯示:Decommission Status : Normal

也可以通過 web-UI 以下兩個狀態值來查看剩餘需要balance的塊數和進度:

1
2
Decommissioning Nodes              : 0
Number of Under-Replicated Blocks  : 0


二、刪除tt:


1、修改 jobtracker(一般和nn部署在一起)的配置文件 hadoop/conf/mapred-site.xml,指定exclude文件位置:
1
2
3
4
<property>
    <name>mapred.hosts.exclude</name>
    <value>/home/admin/hadoop/conf/tt_excludes</value>
</property>

2、編輯 tt_excludes中添加需要下線的tt:

1
2
3
4
/home/admin<span style="background-color:#ffd700;">/</span>hadoop/conf/tt_excludes
hadoop-server-10
hadoop-server-11
hadoop-server-12


3、在jobtracker上執行下面命令下線列表裏面的JobTracker:
1
2
<pre class="brush:as3;">hadoop/bin/hadoop mradmin -refreshNodes</pre>
4、驗證結果:

操作後會立即生效,可以到 hadoop 的 web-UI 中查看節點的個數是否已經如期變化.


***** 以上操作完成後,可以清空兩個 exclude 文件,並修改 slaves 文件爲最新.



HBase 節點增刪

    基於hadoop hdfs部署後本身的存儲容災完全由hdfs接管,master結合zookeeper(以下簡稱zk)監控所有的在線rs保證所有的region在線正 常服務,rs將region信息都加載到內存中,一旦某個rs異常,master檢測到該rs不可用後(該rs原先負責的region會轉到zk中的 /hbase/unassigned)會及時重新分配unassigned region,讓其他在線rs接管下線的rs服務的region;如果新增一個rs節點,master檢測到新節點後,會在較短的時間段內啓動 balancer,達到在線rs的region負載均衡(所有region平等,不管真實大小,只按region數量做均衡,更精細化的均衡策略在 0.92版本之後可以自己定製 可以參考 http://www.searchtb.com/2012/05/hbase_loadbalance_plugins.html   https://issues.apache.org/jira/browse/HBASE-3373)
    在增刪hbase rs時,最好避開高峯期,並確認 如果刪掉的rs是服務META 、ROOT表,master log中成功切換至別的rs,如果有異常需要立即處理。



RS 增加:

1、在 HMaster 上(一般和nn部署在同一節點) 的 hbase/conf/regionservers 中增加需要增加的節點.

2、重新啓動加載 RegionServer 配置列表(執行前需要確認是否已經有死掉的節點仍在列表之中):


1
hbase/bin/start-hbase.sh
3、可以在 hbase 的 web-UI 中查看增加的節點是否生效.



RS 刪除:

1、在 HMaster 上(一般和nn部署在同一節點) 執行下面命令下線對應服務器上的 ReginServer:


1
2
3
4
for HOSTNAME in `cat exclude_list`;do
    hbase/bin/graceful_stop.sh $HOSTNAME
    sleep 5
done
2、由於下線 RS 時會關閉 hbase 的 LB,所以完成後要手工打開 balance:


1
2
# hbase shell
hbase(main):001:0> balance_switch true

3、可以在 hbase 的 web-UI 中查看刪除的節點是已經在 Dead Region Servers 的列表裏.




Hadoop & Hbase 單臺節點啓動和關閉:


1
2
3
4
5
6
7
8
9
# 停止:
hbase/bin/hbase-daemon.sh stop regionserver
hadoop/bin/hadoop-daemon.sh stop tasktracker
hadoop/bin/hadoop-daemon.sh stop datanode
 
# 啓動:
hadoop/bin/hadoop-daemon.sh start datanode
hadoop/bin/hadoop-daemon.sh start tasktracker
hbase/bin/hbase-daemon.sh start regionserver






<該過程由海豹整理,在此記錄一下.>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章