Hadoop自由實現伸縮節點詳細說明-Hadoop商業環境實戰

凱新的技術社群發表於2018-12-19

本套技術專欄是作者(秦凱新)平時工作的總結和昇華,通過從真實商業環境抽取案例進行總結和分享,並給出商業應用的調優建議和叢集環境容量規劃等內容,請持續關注本套部落格。QQ郵箱地址:1120746959@qq.com,如有任何學術交流,可隨時聯絡。

1 節點擴容

  • 配置/etc/hosts新增新節點的IP和主機名

  • 配置etc/hadoop/slaves新增新節點的主機名

  • 配置hdfs-site.xml,設定節點平衡頻寬設定(預設值1M,下面設定為10M)

       <property>
              <name>dfs.datanode.balance.bandwidthPerSec</name>
              <value>20971520</value>
      </property>
    複製程式碼
  • 在新節點上執行datanode

      hadoop-daemon.sh start datanode
    複製程式碼
  • 資料平衡,讓各個DataNode中的資料均勻分佈,threshold是平衡閾值,預設值允許10%的差異,值越小越平衡,但花費的時間會越長,平衡時先通過NameNode提供的後設資料進行平衡規劃,然後開啟多執行緒將資料從老節點移到新節點。

     start-balancer.sh -threshold 5
    複製程式碼
  • 設定平衡時使用的網路頻寬(位元組/秒),在網路頻寬受限的情況下,平衡速度較慢,需要耐心等待一段時間才能觀察到效果

      hdfs dfsadmin -setBalancerBandwidth 20971520
    複製程式碼

2 節點縮容

  • 在namenode中開啟hdfs-site.xml,設定節點排除檔案的位置(必須是絕對路徑),在excludes檔案中新增要排除的節點主機名,一行一個

      <property>
              <name>dfs.hosts.exclude</name>
              <value>/usr/local/hadoop/etc/hadoop/excludes</value>
      </property>
    複製程式碼
  • 更新節點配置,然後在Hadoop站點上很快就能看到Decommission正在進行,此時NameNode會檢查並將資料複製到其它節點上以恢復副本數(要移除的節點上的資料不會被刪除,如果資料比較敏感,要手動刪除它們)

    NameNode中執行下面命令,強制重新載入配置:

          hdfs dfsadmin -refreshNodes
    複製程式碼
  • 檢視資源彙報情況

      hdfs dfsadmin -report
    複製程式碼
  • 等狀態變成Decommissioned後就可以關閉這個節點了,可在要移除的節點上執行相應的關閉命令,幾分鐘後,節點將從Decommissioned進入Dead狀態。

      hadoop-daemon.sh stop datanode
    複製程式碼
  • 更新叢集配置(所有節點同步)

      NameNode的excludes檔案及slaves檔案、hosts檔案中去掉已經移除的主機名。
    複製程式碼

4 自動資料轉移,預設死亡時間

datenode 與namenode 之間的通訊是通過心跳的機制,當超過一定的時間則預設為datanode 為死亡 ,預設的死亡的事件為:10分鐘+30秒 ,可同一下配置檔案配置:

hdfs-site.xml:

           <property>
                <name>heartbeat.recheck.interval</name>
               <value>300</value>
    
                <description>設定的大小</description>
           </property>
          <property>
                 <name>dfs.heartbeat.interval</name>
                  <value>5</value>
    
                  <description>預設值</description>
           </property>
複製程式碼

總結

最近需要進行叢集資源規劃,不得進行Hadoop伸縮節點。

秦凱新 於深圳

相關文章