hadoop的datanode多磁盤空間處理

hadoop-0.20.2 測試修改hdfs-site.xml:添加

<property>
  <name>dfs.datanode.du.reserved</name>
  <value>53687091200</value>
  <description>Reserved space in bytes per volume. Always leave this much space free for non dfs use.
  </description>
</property>

 

以下轉自網友:

最開始安裝hadoop集羣的時候每臺機器的磁盤只有260+G大小,使用了一段時間之後發現磁盤空間佔滿了,於是每個datanode又添加了兩塊2T的磁盤,通過hdfs-site.xml中的dfs.datanode.data.dir配置項通過逗號分隔將新添加的磁盤添加到datanode磁盤中。

添加之後問題有出現了,hadoop並不會自動將數據寫到有更大空閒空間的磁盤中,還是會將之前的小磁盤寫滿,小磁盤寫滿會使mapreduce產生的臨時文件沒有空間寫,而導致mapreduce執行失敗。所以需要小磁盤留有一定的空閒空間,查看hadoop資料,設置 dfs.datanode.du.reserved配置項可以使每個磁盤保留相應的磁盤空間,單位使用bytes,但是我設置之後發現其沒有起作用,我使用的hadoop版本是cloudera的cdh3u3。

沒有辦法,只能繼續查看資料,hadoop faq中寫道:

3.12. On an individual data node, how do you balance the blocks on the disk?

Hadoop currently does not have a method by which to do this automatically. To do this manually:

  1. Take down the HDFS

  2. Use the UNIX mv command to move the individual blocks and meta pairs from one directory to another on each host

  3. Restart the HDFS

對於1)停止hdfs,只需要停止datanode,使用命令$HADOOP_HOME/bin/hadoop-daemon.sh stop datanode

對於2)必須是dfs.data.dir目錄下current目錄的子目錄 mv /mnt/exdata/dev1/cloudera/dfs/dn/current/subdir11/* /mnt/exdata/dev2/cloudera/dfs/dn/current/subdir11

對於3)$HADOOP_HOME/bin/hadoop-daemon.sh start datanode


文章來自:http://www.cnblogs.com/tangtianfly/archive/2012/09/11/2680064.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章