叢集間動態擴充套件和刪除hdfs的datanode和hbase的regionserver
如果你既要增加節點,又要刪除節點呢,
我推薦的順序是:新增datanode,新增regionserver,停掉regionserver ,停掉datanode。
如果你單獨的增加或者移出呢,順序就是上面拆開的就行啦。
如果你新增機器呢,新增datanode,新增regionserver。
如果你減少機器呢,停掉regionserver ,停掉datanode。
所以演示的話呢,就來個全套,就是新增datanode,新增regionserver,停掉regionserver ,停掉datanode。
一、準備工作
新增的機器,提前安裝好java,ssh免密登入,然後把好的機器上的從節點的安裝包scp過來。
二、新增datanode節點
1。先把$HADOOP_HOME/etc/hadoop/slaves
和/etc/hosts
, 都加上你加上的主機名。
2。 在你本機目錄下,建立dfs.data.dir裡面的value值得目錄,如果這個dfs.data.dir裡面的value值得目錄底下有東西的話,確認沒用,最好刪了,刪了!!!!刪了!!!!,不然一會你會發現,你的clusterId會發生衝突,什麼storageId衝突,block pool 編號不一樣,等等等等。
3。進入bin目錄 執行hadoop-daemon.sh start datanode
4。hdfs dfsadmin -refreshNodes
5。hdfs dfsadmin -report
再檢視是否新增進去了。
6。設定頻寬,配置均衡器balancer,一般不在主節點上執行,以避免影響業務,可以有專門的balancer節點
hdfs dfsadmin -setBalancerBandwidth 1048576
如果某個datanode的磁盤裡用率比平均水平高出5%,Blocks向其他低於平均水平的datanode中傳送list
start-balancer.sh -threshold 5
7。最後再檢視一下,hdfs dfsadmin -report 完成。
三、新增RegionServer節點
0。把一臺好的節點上的Hbase拷貝過來(配置檔案以配置好的)
1。先把$HBASE_HOME/conf/regionservers
和/etc/hosts
, 都加上你加上的主機名。
2。執行以下命令啟動
hbase-daemon.sh start regionserver
3。在新的節點上進入hbase shell
然後輸入balance_switch true
過一會,你就會發現regions 已經負載均衡了。
四、hbase刪除regionserver節點
執行命令
graceful_stop.sh regionser(主機名)
然後啟動之後,就會自動讓這個機器上的region分佈到其他機器上去,然後自動下線,我看網上說,還需要像上面一樣,執行一遍balance_switch true,但是我發現,其實那個graceful_stop.sh regionser已經自動幫你均衡了region,所以我們去shell裡執行balance_true,也可。
五、hdfs安全刪除datanode節點
千萬不要直接輸hadoop-daemon.sh stop datanode
這樣可能,可能會導致資料塊的丟失,強烈不建議datanode這樣退役。
然後就是在excludes裡面新增你要退役的節點即可。
整個流程大體如下:
編輯hdfs-site.xml
加入以下選項:
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/hadoop/etc/hadoop/excludes</value>
</property>
然後在這個路徑下面,編輯excludes,在裡面加入你要退役的節點,例如加上這個hadoop-dn-2。
如果你是HA模式的話,兩個NN都要加,一定要兩個NN都加哦~
然後輸入hdfs dfsadmin -refreshNodes (記住,不用重啟,不用重啟服務,也別關掉datanode !!!)
這樣你就會登陸主節點的50070埠,你會發現有一個節點的狀態是Decommissioned in Process 這是後你
就靜靜地看著他會往不均衡的節點傳輸Block塊,等傳輸好了後,你就會發現狀態變更為Decommissioned
這時候你就可以安全下線datanode即可。
這樣就可以啦,然後你就刪除了。
最後,再次提醒順序。新增datanode,新增regionserver,停掉regionserver ,停掉datanode。切記切記,年輕人們!!!!!