我发现,由于RawLocalFileSystem中的某些有趣,mapreduce工作无法启动。
如何调试此错误?似乎没有与NativeIO chmod异常相关联的目录或命令的跟踪。
当然,一个选项是使用自定义的RawLocalFileSystem实现将jar捆绑到我的类路径中,但这看起来有点矫枉过正。
13/07/11 18:39:43 ERROR security.UserGroupInformation:PriviledgedActionException as:root cause:ENOTDIR:不是目录 ENOTDIR:不是目录 at org.apache.hadoop.io.nativeio.NativeIO.chmod(Native Method) 在org.apache.hadoop.fs.FileUtil.execSetPermission(FileUtil.java:699) 在org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:654) at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:509) 在org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:344) 在org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:189) 在org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:116)
答案 0 :(得分:0)
这是一个有趣的错误:事实证明我确实创建了一个FILE,它已经存在于需要创建目录的地方。
也就是说,我的文件系统实现的根目录中有一个名为“tmp”的文件!
无论如何,混淆是由于hadoop NativeIO类报告的错误。
我认为这是一个失败,应该由底层的NativeIO类报告和更好地记录。