Hadoop集群動態擴容、縮容


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

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

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

1. 動態擴容

1.1. 基礎准備

在基礎准備部分,主要是設置hadoop運行的系統環境

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

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

設置NameNodeDataNode的免密碼登錄(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即可

默認balancerthreshold10%,即各個節點與集群總的存儲使用率相差不超過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所在節點執行以下命令刷新namenoderesourceManager

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




免責聲明!

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



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