hdfs以及hbase動態增加和刪除節點


一個知乎上的問題:Hbase的Region server和hadoop的datanode是否可以部署在一台服務器上?如果是的話,二者是否是一對一的關系?
部署在同一台服務器上,可以減少數據跨網絡傳輸的流量。 但不是一對一對的關系,首先,數據還hdfs中保存N份,默認是三分,也就是說數據會分布在三個datanode上,即使regionserver上只保存一個region,它也可以與三個datanode交互,更何況,一台regionserver可以保存多個region.

參考:https://www.zhihu.com/question/20376001/answer/15602027

然后來看一下關於節點的動態增加與動態刪除問題

1、hdfs增加datanode
1> 准備新節點的操作系統,安裝好需要的軟件,實現ssh無密碼登錄
2> 各個節點的配置文件需要更改
$HBASE_HOME/conf/regionservers
$HADOOP_HOME/etc/hadoop/slaves
/etc/hosts
3> 在新節點執行以下命令

hadoop-daemon.sh start datanode
yarn-daemon.sh start nodemanager

4> 刷新一下

yarn rmadmin -refreshNodes
hdfs dfsadmin -refreshNodes
# 查看狀態
hdfs dfsadmin -report

5> 設置帶寬,配置均衡器balancer,一般不在主節點上運行,以避免影響業務,可以有專門的balancer節點

hdfs dfsadmin -setBalancerBandwidth 1048576
# 如果某個datanode的磁盤里用率比平均水平高出5%,Blocks向其他低於平均水平的datanode中傳送
start-balancer.sh -threshold 5

說明:
隨時時間推移,各個datanode上的塊分布來越來越不均衡,這將降低MR的本地性,導致部分datanode相對更加繁忙。
balancer是一個hadoop守護進程,它將塊從忙碌的datanode移動相對空閑的datanode,同時堅持塊復本放置策略,將復本分散到不同的機器、機架。
balancer會促使每個datanode的使用率與整個集群的使用率接近,這個“接近”是通過-threashold參數指定的,默認是10%。
不同節點之間復制數據的帶寬是受限的,默認是1MB/s,可以通過hdfs-site.xml文件中的dfs.balance.bandwithPerSec屬性指定(單位是字節)。
建議定期執行均衡器,如每天或者每周。

2、hdfs刪除datanode

1> $HADOOP_HOME/etc/hadoop/excludes文件中添加需刪除的主機名,一般在執行命令的主節點上添加即可
2> 刷新一下

yarn rmadmin -refreshNodes
hdfs dfsadmin -refreshNodes

 3> 刪除后修正以下配置文件,
$HBASE_HOME/conf/regionservers
$HADOOP_HOME/etc/hadoop/slaves
/etc/hosts

注意:關於hadoop集群刪除數據節點一直處於Decommission in progress狀態問題
在小集群中(例如3台機器),如果datanode數據量小於文件的備份數設置(默認是3),有可能會出現這樣的情況,被數據節點一直處於Decommission in progress狀態。
這個是hadoop的一個未處理的問題,因為大的集群一般不會出現這種情況,即datanode數據量小於文件的備份數設置
解決方案是:嘗試將文件備份數設置為1或者2,然后嘗試從三台datanode中exclude掉一台
以下是修改已有的副本數量的命令,一般不建議使用,而應提前在配置文件中進行優化,以避免出現此類問題
hdfs dfs -setrep -w 2 -R /文件

3、hbase增加regionserver節點

1> 執行以下命令啟動regionserver

hbase-daemon.sh start regionserver

2> 在新啟動的節點上
打開hbase shell,如下設置:

balance_switch true

4、hbase刪除regionserver節點

1> 執行命令

graceful_stop.sh data1

2> 由於會關閉hbase的balancer,因此需要在其他regionserver節點上

打開hbase shell,檢查hbase狀態
同時重新設置:

 balance_switch true

此外,注意執行的順序,如果一個datanodet同時作為regionserver,先刪除regionserver,再刪除datanode,反之,新增的節點,先設為datanode,再設為regionserver



 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM