您的位置:首页 > 运维架构

hadoop - jobTracker自动停止问题

2014-09-16 17:41 169 查看
这个问题貌似很少看到直接的解决方法啊,是大家都没遇到还是直接忽略了?该异常确实不影响整个hadoop系统任务的执行,但是对于我这个强迫症患者,天天看着任务报错还是很不爽的。

找了很久,终于找到问题的本质和解决办法。

以下为原博客内容,感谢(作者):

-------------------------------------------------------------------------------

集群出现大面积任务失败,表现为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子目录是否会达到上限。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: