一、 Hadoop叢集動態擴容、縮容
隨著公司業務的增長,資料量越來越大,原有的datanode節點的容量已經不能滿足儲存資料的需求,需要在原有叢集基礎上動態新增新的資料節點。也就是俗稱的
動態擴容。
有時候舊的伺服器需要進行退役更換,暫停服務,可能就需要在當下的叢集中停止某些機器上hadoop的服務,俗稱
動態縮容
。
1. 動態擴容
1.1. 基礎準備
在基礎準備部分,主要是設定hadoop執行的系統環境
修改新機器系統hostname(透過/etc/sysconfig/network進行修改)
修改新機器系統hostname
修改hosts檔案,將叢集所有節點hosts配置進去(叢集所有節點保持hosts檔案統一)
修改hosts檔案
設定NameNode到DataNode的免密碼登入(ssh-copy-id命令實現)
修改主節點slaves檔案,新增新增節點的ip資訊(
叢集重啟時配合一鍵啟動指令碼使用
)
修改主節點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
dfs.hosts屬性的意義
:命名一個檔案,其中包含允許連線到namenode的主機列表。必須指定檔案的完整路徑名。如果該值為空,則允許所有主機。相當於一個白名單,也可以不配置。
在新的機器上單獨啟動datanode:
hadoop-daemon.sh start datanode
單獨啟動datanode
重新整理頁面就可以看到新的節點加入進來了
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
單獨啟動nodemanager
在ResourceManager,透過yarn node -list檢視叢集情況
檢視叢集情況
動態縮容
新增退役節點
在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
dfs.hosts.exclude屬性的意義
:命名一個檔案,其中包含
不允許
連線到namenode的主機列表。必須指定檔案的完整路徑名。如果值為空,則不排除任何主機。
2。2. 重新整理叢集
在namenode所在的機器執行以下命令,重新整理namenode,重新整理resourceManager。
hdfs dfsadmin -refreshNodes
yarn rmadmin –refreshNodes
等待退役節點狀態為
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 等待其自動負載均衡完畢
如果覺得對你有所幫助。記得收藏和關注呦!(每日更新各種框架)
如需轉載請註明出處(創作不易請見諒)
和巨嬰程式猿一起成長。讓自己變的更優秀