线上机器由于不同构导致的配置问题
线上有16台测试scribe的机群,配置结束后,跑benchmark,没有问题。可是跑过一段时间后,发现很多job被pending住,报的错是:
Error initializing attempt_201204030722_0004_m_000002_0: 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:692) at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:647) at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:509) at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:344) at org.apache.hadoop.mapred.JobLocalizer.initializeJobLogDir(JobLocalizer.java:239) at org.apache.hadoop.mapred.DefaultTaskController.initializeJob(DefaultTaskController.java:196) at org.apache.hadoop.mapred.TaskTracker$4.run(TaskTracker.java:1226) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:416) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1093) at org.apache.hadoop.mapred.TaskTracker.initializeJob(TaskTracker.java:1201) at org.apache.hadoop.mapred.TaskTracker.localizeJob(TaskTracker.java:1116) at org.apache.hadoop.mapred.TaskTracker$5.run(TaskTracker.java:2404) at java.lang.Thread.run(Thread.java:636)
经过google查询后,确定是由于磁盘空间不足导致的。
df -h 后发现 / 下面磁盘已经被占满,当时百思不得其解,到底是谁在占用了/ 目录下面的磁盘呢。
后来在同事的提醒下才发现,这一批机器是不同构的,有10台左右挂载了12个硬盘,有6台只挂载了10个硬盘,所以当用脚本搭建时都是按照12个硬盘来搭建写日志,就写到了/data10 /data11下面,附属于 / 所以很快 / 目录就被写满了。
从新配置后,重启解决问题。