每天資訊巨嬰程式猿忽然將這裡變大?之Hadoop叢集動態擴容、縮容!

菜單

巨嬰程式猿忽然將這裡變大?之Hadoop叢集動態擴容、縮容!

巨嬰程式猿忽然將這裡變大?之Hadoop叢集動態擴容、縮容!

一、 Hadoop叢集動態擴容、縮容

隨著公司業務的增長,資料量越來越大,原有的datanode節點的容量已經不能滿足儲存資料的需求,需要在原有叢集基礎上動態新增新的資料節點。也就是俗稱的

動態擴容。

有時候舊的伺服器需要進行退役更換,暫停服務,可能就需要在當下的叢集中停止某些機器上hadoop的服務,俗稱

動態縮容

1. 動態擴容

1.1. 基礎準備

在基礎準備部分,主要是設定hadoop執行的系統環境

修改新機器系統hostname(透過/etc/sysconfig/network進行修改)

巨嬰程式猿忽然將這裡變大?之Hadoop叢集動態擴容、縮容!

修改新機器系統hostname

修改hosts檔案,將叢集所有節點hosts配置進去(叢集所有節點保持hosts檔案統一)

巨嬰程式猿忽然將這裡變大?之Hadoop叢集動態擴容、縮容!

修改hosts檔案

設定NameNode到DataNode的免密碼登入(ssh-copy-id命令實現)

修改主節點slaves檔案,新增新增節點的ip資訊(

叢集重啟時配合一鍵啟動指令碼使用

巨嬰程式猿忽然將這裡變大?之Hadoop叢集動態擴容、縮容!

修改主節點slaves檔案

在新的機器上上傳解壓一個新的hadoop安裝包,從主節點機器上將hadoop的所有配置檔案,scp到新的節點上。

1。2. 新增datanode

在namenode所在的機器的

/export/servers/hadoop-2。6。0-cdh5。14。0/etc/hadoop目錄下建立dfs。hosts檔案

cd /export/servers/hadoop-2。6。0-cdh5。14。0/etc/hadoop

vim dfs。hosts

新增如下主機名稱(包含新服役的節點)

node-1

node-2

node-3

node-4

在namenode機器的hdfs-site。xml配置檔案中增加dfs。hosts屬性

cd /export/servers/hadoop-2。6。0-cdh5。14。0/etc/hadoop

vim hdfs-site。xml

巨嬰程式猿忽然將這裡變大?之Hadoop叢集動態擴容、縮容!

dfs.hosts屬性的意義

:命名一個檔案,其中包含允許連線到namenode的主機列表。必須指定檔案的完整路徑名。如果該值為空,則允許所有主機。相當於一個白名單,也可以不配置。

在新的機器上單獨啟動datanode:

hadoop-daemon.sh start datanode

巨嬰程式猿忽然將這裡變大?之Hadoop叢集動態擴容、縮容!

單獨啟動datanode

重新整理頁面就可以看到新的節點加入進來了

巨嬰程式猿忽然將這裡變大?之Hadoop叢集動態擴容、縮容!

1。3. datanode負載均衡服務

新加入的節點,沒有資料塊的儲存,使得叢集整體來看負載還不均衡。因此最後還需要對hdfs負載設定均衡,因為預設的資料傳輸頻寬比較低,可以設定為64M,即

hdfs dfsadmin -setBalancerBandwidth 67108864

即可

預設balancer的threshold為10%,即各個節點與叢集總的儲存使用率相差不超過10%,我們可將其設定為5%。然後啟動Balancer,

sbin/start-balancer。sh -threshold 5,等待叢集自均衡完成即可。

1。4. 新增nodemanager

在新的機器上單獨啟動nodemanager:

yarn-daemon.sh start nodemanager

巨嬰程式猿忽然將這裡變大?之Hadoop叢集動態擴容、縮容!

單獨啟動nodemanager

在ResourceManager,透過yarn node -list檢視叢集情況

巨嬰程式猿忽然將這裡變大?之Hadoop叢集動態擴容、縮容!

檢視叢集情況

動態縮容

新增退役節點

在namenode所在伺服器的hadoop配置目錄etc/hadoop下建立dfs。hosts。exclude檔案,並新增需要退役的主機名稱。

注意:

該檔案當中一定要寫真正的主機名或者

ip地址都行,不能寫node-4

node04。hadoop。com

在namenode機器的hdfs-site。xml配置檔案中增加dfs。hosts。exclude屬性

cd /export/servers/hadoop-2。6。0-cdh5。14。0/etc/hadoop

vim hdfs-site。xml

巨嬰程式猿忽然將這裡變大?之Hadoop叢集動態擴容、縮容!

dfs.hosts.exclude屬性的意義

:命名一個檔案,其中包含

不允許

連線到namenode的主機列表。必須指定檔案的完整路徑名。如果值為空,則不排除任何主機。

2。2. 重新整理叢集

在namenode所在的機器執行以下命令,重新整理namenode,重新整理resourceManager。

hdfs dfsadmin -refreshNodes

yarn rmadmin –refreshNodes

巨嬰程式猿忽然將這裡變大?之Hadoop叢集動態擴容、縮容!

等待退役節點狀態為

decommissioned

(所有塊已經複製完成),停止該節點及節點資源管理器。注意:如果副本數是3,服役的節點小於等於3,是不能退役成功的,需要修改副本數後才能退役。

node-4執行以下命令,停止該節點程序

cd /export/servers/hadoop-2。6。0-cdh5。14。0

sbin/hadoop-daemon。sh stop datanode

sbin/yarn-daemon。sh stop nodemanager

namenode所在節點執行以下命令重新整理namenode和resourceManager

hdfs dfsadmin –refreshNodes

yarn rmadmin –refreshNodes

namenode所在節點執行以下命令進行均衡負載

cd /export/servers/hadoop-2。6。0-cdh5。14。0/

sbin/start-balancer。sh

總結

原理:增加、刪除那些角色?

node-4: datanode |nodemanager

擴容基本步驟:

新伺服器基礎環境

ip 主機名 hsots對映 防火牆 免密登入 jdk版本 時間同步

在新伺服器解壓一份新的hadoop安裝包

把已有叢集的hadoop的配置檔案scp一份到新伺服器安裝包中

手動啟動新的程序

hadoop-daemon。sh start datanode

yarn-daemon。sh start nodemanager

因為新加入的節點沒有資料 和已有節點間會產生負載不均衡的現象 所以需要平衡資料

首先調整網路傳輸資料的頻寬 預設是64M

hdfs dfsadmin -setBalancerBandwidth 67108864

然後負載均衡的服務 設定負載均衡的差異值 預設10%

start-balancer。sh -threshold 5 等待其自動負載均衡完畢

縮容的基本步驟

在主節點所在的機器配置退役節點的黑名單機制

dfs。hosts。exclude 指定的檔案就是所需要退役下線的節點

注意:該檔案的中必須是正常的ip或者主機名

配置好之後 重新整理節點資訊

hdfs dfsadmin -refreshNodes

yarn rmadmin –refreshNode

在hdfs頁面觀察節點狀態

等待退役節點狀態為 decommissioned

這就意味著該下線節點已經把資料複製給其他的節點。

關閉退役節點的程序

hadoop-daemon。sh stop datanode

yarn-daemon。sh stop nodemanager

最後如果有需要 還可以針對叢集再次進行負載均衡

首先調整網路傳輸資料的頻寬 預設是64M

hdfs dfsadmin -setBalancerBandwidth 67108864

然後負載均衡的服務 設定負載均衡的差異值 預設10%

start-balancer。sh -threshold 5 等待其自動負載均衡完畢

如果覺得對你有所幫助。記得收藏和關注呦!(每日更新各種框架)

如需轉載請註明出處(創作不易請見諒)

和巨嬰程式猿一起成長。讓自己變的更優秀

巨嬰程式猿忽然將這裡變大?之Hadoop叢集動態擴容、縮容!