一、 Hadoop集群動態擴容、縮容
隨着公司業務的增長,數據量越來越大,原有的datanode節點的容量已經不能滿足存儲數據的需求,需要在原有集群基礎上動態添加新的數據節點。也就是俗稱的動態擴容。
有時候舊的服務器需要進行退役更換,暫停服務,可能就需要在當下的集群中停止某些機器上hadoop的服務,俗稱動態縮容。
1. 動態擴容
1.1. 基礎准備
在基礎准備部分,主要是設置hadoop運行的系統環境
修改新機器系統hostname(通過/etc/sysconfig/network進行修改)

修改hosts文件,將集群所有節點hosts配置進去(集群所有節點保持hosts文件統一)

設置NameNode到DataNode的免密碼登錄(ssh-copy-id命令實現)
修改主節點slaves文件,添加新增節點的ip信息(集群重啟時配合一鍵啟動腳本使用)

在新的機器上上傳解壓一個新的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
| <property> <name>dfs.hosts</name> <value>/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/dfs.hosts</value> </property> |
dfs.hosts屬性的意義:命名一個文件,其中包含允許連接到namenode的主機列表。必須指定文件的完整路徑名。如果該值為空,則允許所有主機。相當於一個白名單,也可以不配置。
在新的機器上單獨啟動datanode: hadoop-daemon.sh start 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

在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
| <property> <name>dfs.hosts.exclude</name> <value>/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/dfs.hosts.exclude</value> </property> |
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 |nodemanager11node-4: datanode |nodemanager - 擴容的基本步驟
- 新服務器基礎環境
ip 主機名 hsots映射 防火牆 免密登錄 jdk版本 時間同步111ip 主機名 hsots映射 防火牆 免密登錄 jdk版本 時間同步 - 在新服務器解壓一份新的hadoop安裝包
- 把已有集群的hadoop的配置文件scp一份到新服務器安裝包中
- 手動啟動新的進程
hadoop-daemon.sh start datanode yarn-daemon.sh start nodemanager221hadoop-daemon.sh start datanode2yarn-daemon.sh start nodemanager - 因為新加入的節點沒有數據 和已有節點間會產生負載不均衡的現象 所以需要平衡數據
首先調整網絡傳輸數據的帶寬 默認是64M hdfs dfsadmin -setBalancerBandwidth 67108864 然后負載均衡的服務 設置負載均衡的差異值 默認10% start-balancer.sh -threshold 5 等待其自動負載均衡完畢x51首先調整網絡傳輸數據的帶寬 默認是64M2hdfs dfsadmin -setBalancerBandwidth 6710886434然后負載均衡的服務 設置負載均衡的差異值 默認10%5start-balancer.sh -threshold 5 等待其自動負載均衡完畢
- 新服務器基礎環境
- 縮容的基本步驟
- 在主節點所在的機器配置退役節點的黑名單機制
dfs.hosts.exclude 指定的文件就是所需要退役下線的節點 注意:該文件的中必須是正常的ip或者主機名221dfs.hosts.exclude 指定的文件就是所需要退役下線的節點2注意:該文件的中必須是正常的ip或者主機名 - 配置好之后 刷新節點信息
hdfs dfsadmin -refreshNodes yarn rmadmin –refreshNodes221hdfs dfsadmin -refreshNodes2yarn rmadmin –refreshNodes - 在hdfs頁面觀察節點狀態
等待退役節點狀態為 decommissioned 這就意味着該下線節點已經把數據復制給其他的節點。221等待退役節點狀態為 decommissioned2這就意味着該下線節點已經把數據復制給其他的節點。 - 關閉退役節點的進程
hadoop-daemon.sh stop datanode yarn-daemon.sh stop nodemanager221hadoop-daemon.sh stop datanode2yarn-daemon.sh stop nodemanager - 最后如果有需要 還可以針對集群再次進行負載均衡
首先調整網絡傳輸數據的帶寬 默認是64M hdfs dfsadmin -setBalancerBandwidth 67108864 然后負載均衡的服務 設置負載均衡的差異值 默認10% start-balancer.sh -threshold 5 等待其自動負載均衡完畢551首先調整網絡傳輸數據的帶寬 默認是64M2hdfs dfsadmin -setBalancerBandwidth 6710886434然后負載均衡的服務 設置負載均衡的差異值 默認10%5start-balancer.sh -threshold 5 等待其自動負載均衡完畢
- 在主節點所在的機器配置退役節點的黑名單機制
- 原理:增加、刪除那些角色?
