hadoop的datanode多磁盘空间处理
?link:http://hi.baidu.com/wisejenny/item/c199beb87219c0f462388e96
?
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:
Take down the HDFS
Use the UNIX mv command to move the individual blocks and meta pairs from one directory to another on each host
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
總結
以上是生活随笔為你收集整理的hadoop的datanode多磁盘空间处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 话里话外:实现信息化综合集成需要经历的五
- 下一篇: jvm在不同系统中的最大内存空间地址