3

我有一个运行 1.0.4 的小型 10 节点 hadoop 集群,我正在尝试对其进行设置,以便能够从网络上不是 NameNode 的机器提交作业。我有一个简单的示例设置,我在其中使用 执行作业、手动ToolRunner构建并使用. 当我从 NameNode 运行它时,一切都按预期工作。JobConfJobClient.submitJob()

当我从网络中的任何其他节点运行时,作业已提交并且所有映射任务都成功完成,但所有 reduce 任务都失败,但出现以下异常:

org.apache.hadoop.util.DiskChecker$DiskErrorException: Could not find output/map_0.out in any of the configured local directories
    at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathToRead(LocalDirAllocator.java:429)
    at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathToRead(LocalDirAllocator.java:160)
    at org.apache.hadoop.mapred.MapOutputFile.getInputFile(MapOutputFile.java:161)
    at org.apache.hadoop.mapred.ReduceTask.getMapFiles(ReduceTask.java:220)
    at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:398)
    at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:396)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
    at org.apache.hadoop.mapred.Child.main(Child.java:249)

我认为这意味着减少任务无法找到映射器的输出。我相当确定我只是在某个地方丢失了一个配置值,但我不知道是哪些(我已经尝试过mapred.local.dirhadoop.tmp.dir没有成功)。有谁知道上述消息的确切含义以及如何修复它,或者知道从 NameNode 以外的机器执行作业的简单方法?

编辑:我认为这也可能与权限有关。用户几乎拥有 hdfs 上的hadoop所有文件,但是当我在另一台机器上登录时,它是不同的用户名。我已经尝试更新mapred-site.xml集群中与此类似的所有节点,并包裹JobClient.submitJob()在 a 中,UserGroupInformation.doAs()但我仍然收到类似于以下内容的错误:

SEVERE: PriviledgedActionException as:hadoop via oren cause:org.apache.hadoop.ipc.RemoteException: User: oren is not allowed to impersonate hadoop
4

3 回答 3

0

Have you checked that the disk hosting the local directory isn't running out of space?

于 2013-04-26T21:16:10.603 回答
0

将此属性添加到您的 core-site.xml 并重新启动集群:

<name>hadoop.proxyuser.myhttpfsuser.groups</name>
<value>oren</value>

还要确保您也打开了“其他人”的目录权限。

于 2013-05-02T00:41:38.523 回答
0

是的,我想我知道发生了什么……

在尝试从 reduce 作业读取映射输出时,您应该使用 FQDN 风格来构建路径。

这有点像hdfs://master:534110/user/hduser/map_0.out,也许你只是在使用/map_0.out,异常没有帮助。

高温下,

于 2013-05-07T00:38:06.890 回答