原文網址: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 |
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 |
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 |
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 |
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 |
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 |