笔者的hadoop在不间断的写文件的过程当中报了以下错误 node
经查看发现是hadoop所在服务器的磁盘空间不足致使的。
好了,知道问题后笔者须要配置相关参数来避免该问题
一、与mapred.local.dir相关的参数
* mapred.local.dir.minspacestart:在mapreduce运行任务以前,检查temporary 目录下是否还有该选项配置的空闲空间,若是少于该配置,则map或reduce task不会分配到该TaskTracker上,以免因为磁盘空间不足致使的task失败。默认设置为0,disable该功能
* mapred.local.dir.minspacekill:若是该磁盘卷下剩余的磁盘空间不足该配置,则将正在运行的Task 杀掉。默认为0,diabled该功能
另,若是服务器有多个块设备最好将mapred.local.dir设置成多个目录,每一个目录对应一个块设备,这样多个task在同一个TaskTracker上运行的时候,就能够分别写不一样的磁盘写入点,以增大做业运行的磁盘吞吐率。
二、与dfs.data.dir相关的参数
* dfs.datanode.du.reserved:dfs写文件块时,若是当前datanode上的dfs.data.dir下剩余磁盘空间不足该选项配置的空间大小,就不往该datanode继续写数据块
* dfs.datanode.du.pct:同dfs.datanode.du.reserved,不过配置值为一个百分比
最好预留些空间,避免写文件失败。
三、建议配额
mapred.local.dir.minspacestart = slots * dfs.block.size
mapred.local.dir.minspacekill = slots/2 * dfs.block.size
dfs.datanode.du.reserved = dfs.block.size * dfs.replication #最少留这么多吧,建议留大些。
根据需求,笔者在hdfs-site.xml中配置了 linux
<property> <name>dfs.datanode.du.reserved</name> <value>209715200</value> </property>
参考资料:
http://www.linuxidc.com/Linux/2012-11/74478.htm 服务器