hadoop 修改datanode balance帶寬使用限制

  前段時間,一個客戶現場的Hadoop看起來很不正常,有的機器的存儲佔用達到95%,有的機器只有40%左右,恰好前任的負責人走了,這邊尚未明確接班人的時候。node

  我負責的大數據計算部分,又要依賴Hadoop的基礎平臺,要是Hadoop死了,個人報表也跑不出來(專業背鍋)。服務器

  作下balance,讓各個節點的存儲均衡一下。網絡

  一、首先須要配上這個參數:  併發

<property>
    <name>dfs.datanode.balance.bandwidthPerSec</name> 
    <value>62914560</value> 
    <description>hdfs作balance的佔用的網絡帶寬,建議配置網卡帶寬的一半(62914560/1024/1024*8=480MBps)</description>
</property>    

  

  二、重啓datanode  oop

# 中止datanode
[hadoop@venn06 sbin]$ ./hadoop-daemon.sh stop datanode
stopping datanode

# 啓動datanode
[hadoop@venn06 sbin]$ ./hadoop-daemon.sh start datanode
starting datanode, logging to /opt/hadoop/hadoop3/logs/hadoop-hadoop-datanode-venn06.out

  服務器網卡的帶寬有限,不設置這個參數,作balance的時候,會把網卡的帶寬跑滿。須要移動的block不少,執行時間就會很長,會致使集羣網絡資源不足,任務跑得很慢。大數據

 

  三、執行balance  spa

[hadoop@venn05 bin]$ pwd
/opt/hadoop/hadoop3/bin
[hadoop@venn05 bin]$ nohup ./hdfs balancer -threshold 1 &code

  因爲執行時間會很長,因此把命令放到後臺執行。blog

  

  

  HDFS作balance的方式大概以下:ip

    一、計算集羣中須要移動的block數量,計算須要移動的文件大小。

    二、併發的從資源佔用高的機器,往資源佔用低的機器移數據。一批一批的,一批的大小,會根據須要移動的文件大小計算。

    三、重複第1步,直到資源均衡(1%左右的差距)

  HDFS作balance的時候,會先移動block,成功後纔會刪除數據,只要集羣網絡資源充足,能夠不警慎的執行balance操做,隨時停也不影響,不會丟數據。

 

  

因爲datanode 空間大小不一樣,因此有的機器磁盤佔用會高一點。

相關文章
相關標籤/搜索