我在尝试远程运行 map-reduce 作业(字数统计示例)时遇到了一些问题。在谷歌上搜索后,我仍然无法实现我的目标。而且我只看到很少有关于远程调用 map-reduce 作业的主题。下面是问题:
起初,我遇到权限问题:
SEVERE: PriviledgedActionException as:[user] cause:org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=[user], access=WRITE, inode="mapred":root:supergroup:rwxr-xr-x
这似乎是对 hdfs 路径的许可拒绝。我通过设置关闭检查
dfs.permissions = true
。有没有其他方法可以克服这个问题,但仍然保持检查。然后我遇到了一个异常,说我无法访问 map-reduce 应用程序 jar。
SEVERE: PriviledgedActionException as:[User] cause:java.io.FileNotFoundException: File /home/hduser/WordCount-1.0.jar does not exist.
我的代码是:
JobConf conf = new JobConf(WordCount.class); conf.setJobName("wordcount"); conf.set("fs.default.name", "hdfs://10.97.1.91:54310"); conf.set("mapred.job.tracker", "10.97.1.91:54311"); conf.setJar("/home/hduser/WordCount-1.0.jar"); ... JobClient.runJob(conf);
似乎名称节点上的本地文件系统拒绝我访问 jar 文件。我该如何克服这个问题?我在stackoverflow中找到了一个链接。从链接中,不需要 jar 文件位置。但是name node如何在不提供位置的情况下找到jar文件呢?
我在互联网上找到的教程中很少看到远程执行作业的示例。不建议这样做吗?