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

Hadoop运维记录系列(四)

2013-03-26 19:04 274 查看
记录一下,可能算是个比较典型的故障,磁盘满导致的task tracker无法启动。

故障是一台tasktracker挂了,怎么也起不来,报错信息如下。

2013-03-26 17:34:57,620 ERROR org.apache.hadoop.mapred.TaskTracker: Can not start task tracker because ENOENT: No such file or directory
at org.apache.hadoop.io.nativeio.NativeIO.chmod(Native Method)
at org.apache.hadoop.fs.FileUtil.execSetPermission(FileUtil.java:699)
at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:654)
at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:509)
at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:344)
at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:189)
at org.apache.hadoop.mapred.TaskTracker.initialize(TaskTracker.java:723)
at org.apache.hadoop.mapred.TaskTracker.<init>(TaskTracker.java:1459)
at org.apache.hadoop.mapred.TaskTracker.main(TaskTracker.java:3742)

2013-03-26 17:34:57,621 INFO org.apache.hadoop.mapred.TaskTracker: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down TaskTracker at hadoop-node-51/192.168.1.51
************************************************************/

从表面上看,这是一个找不到文件的错误,下面还报了一堆跟创建目录和权限设置相关的错误。然后翻看了相关的源码,发现跟这些都没关系。

上google搜了一圈也没有什么斩获,都是与此无关的报错。

按照报错是权限设置的问题进行分析,以为是有人不小心改了mapred文件夹下的文件的权限,导致hadoop无法创建文件夹和读取文件造成的。于是去mapred文件夹查看,发现权限都是正确的。但是还是强行chown了一遍,但是没起作用。tt仍然起不来。

后来看了一下df,发现几块硬盘中的一块100%了,完全一点空间都不剩。进去看了一下,是因为有人在跑任务的时候,把map/reduce中间结果的临时数据文件扔到了那块硬盘里,也没有及时清理,所以导致磁盘满了。

让相关人员清理了中间文件,task tracker立刻就正常启动。

这个报错是比较神奇的,按说跟磁盘相关的事情,hadoop起码应该报一个DiskChecker的故障,但是却报了一个找不到文件的故障。一方面说明hadoop的有些报错调用的exception并不完全准确,在设置了dfs保留分区的情况下,硬盘满了,报错是跟硬盘无关的反而报了权限错误。一方面也说明运维hadoop的人需要拓宽思路,有时候一件事表象,不代表这件事背后的原因就是这样的,一定要去找到那个truth。

本文出自 “实践检验真理” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: