最近在研究如何在Windows平台利用Eclipse执行MapReduce程序,第一个程序是拷贝的WorldCount,运行时发生了以下的错误均已解决,给自己提个醒也希望能对大家有帮助。
1. Failed to set permissions of path: \tmp\hadoop-root\mapred\staging\root1764752388\.staging to 0700
主要是在windows下运行的时候有一个代码权限的检测没有通过,具体的类core\org\apache\hadoop\fs\FileUtil.java
// read perms
rv = f.setReadable(group.implies(FsAction.READ), false);
checkReturnValue(rv, f, permission);
if (group.implies(FsAction.READ) != user.implies(FsAction.READ)) {
f.setReadable(user.implies(FsAction.READ), true);
checkReturnValue(rv, f, permission);
}
// write perms
rv = f.setWritable(group.implies(FsAction.WRITE), false);
checkReturnValue(rv, f, permission);
if (group.implies(FsAction.WRITE) != user.implies(FsAction.WRITE)) {
f.setWritable(user.implies(FsAction.WRITE), true);
checkReturnValue(rv, f, permission);
}
// exec perms
rv = f.setExecutable(group.implies(FsAction.EXECUTE), false);
checkReturnValue(rv, f, permission);
if (group.implies(FsAction.EXECUTE) != user.implies(FsAction.EXECUTE)) {
f.setExecutable(user.implies(FsAction.EXECUTE), true);
checkReturnValue(rv, f, permission);
}
}
private static void checkReturnValue(boolean rv, File p,
FsPermission permission
) throws IOException {
if (!rv) {
throw new IOException("Failed to set permissions of path: " + p +
" to " +
String.format("%04o", permission.toShort()));
}
}
可以把checkReturnValue的方法注释掉,屏蔽掉权限的检查
或者可以用上传的已经修改好的jar包
2.在windows下利用eclipse去执行MapReduce需要关闭HDFS的安全模式
在Haddop Home下运行 ./bin/hadoop dfsadmin -safemode leave
3. java.lang.IllegalArgumentException: Compression codec org.apache.hadoop.io.compress.SnappyCodec not found.
edit hadoop location 在高级参数页面的io.compression.codecs 中把SnappyCodec 去掉
以上就是在运行第一个MapReduce程序时遇到的问题
Hadoop新手,请大家多提宝贵意见