Hadoop Mapreduce任务出错,Child Error

本文介绍了一次Hadoop集群中因日志子目录数量达到ext3文件系统的限制而导致的大面积任务失败现象。通过分析和排查,最终定位到问题原因是日志目录下的子目录数量超过31998个,清理部分日志后问题得以解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集群出现大面积任务失败,表现为mapreduce刚启动不久,就抛出异常,查看log可以看到,
Status : FAILED
java.lang.Throwable: Child Error
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:271)
Caused by: java.io.IOException: Task process exit with nonzero status of 1.
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:258)

找了资料很长时间,经过了怀疑时钟同步有问题,ulimit设置不正确,终于在台湾,老外网站一个不经意的地方提到可能是写入有问题,或者磁盘不足。
They say 'it's an OS limit on the number of sub-directories that can be related in another directory.'
查了磁盘空间,还有足够的空间可以写数据。
突然想到是否是日志目录告警,因为每一个都会在log目录下建一个子目录的,而log目录所在磁盘格式是ext3,而linux的ext3文件格式是有子目录上限的,为32000,除掉. ..,子目录最多只能有31998.
查看/app/hadoop/logs/userlogs下子目录,果然达到了上限31998.
一天的子任务log能达到上限,看来是错误连续出错,导致子目录来不及删除引起。写了个脚本,删除各节点机器的部分userlogs下的子目录log后,问题解决。
总结:除了每天删除外,还要监控log子目录是否会达到上限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值