gpt4 book ai didi

c# - Windows中带有MR2的NullPointerException

转载 作者:行者123 更新时间:2023-12-02 21:47:45 24 4
gpt4 key购买 nike

我已经在Windows中安装了Hadoop 2.3.0,并且能够成功执行MR作业。但是,在尝试使用C#[使用HadoopSDK的.Net程序集]进行流式处理示例时,该应用程序以以下异常结束

14/05/16 18:21:06 INFO mapreduce.Job: Task Id : attempt_1400239892040_0003_r_000000_0, Status : FAILED
Error: java.lang.NullPointerException
at org.apache.hadoop.mapred.Task.getFsStatistics(Task.java:347)
at org.apache.hadoop.mapred.ReduceTask$OldTrackingRecordWriter.<init>(ReduceTask.java:478)
at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:414)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:392)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:163)

更新:

我能够深入研究问题,发现以下行中引发了异常
 matchedStats = getFsStatistics(FileOutputFormat.getOutputPath(job), job);

at org.apache.hadoop.mapred.ReduceTask$OldTrackingRecordWriter.<init>(ReduceTask.java:478)

在上面,'FileOutputFormat.getOutputPath(job)'的结果返回null,这将引发null指针异常。以下是getOutputPath()函数的代码。
public static final String OUTDIR = "mapreduce.output.fileoutputformat.outputdir";

public static Path getOutputPath(JobConf conf) {
String name = conf.get(org.apache.hadoop.mapreduce.lib.output.
FileOutputFormat.OUTDIR);
return name == null ? null: new Path(name);
}

因此,是否需要在配置文件中的任何位置设置属性“mapreduce.output.fileoutputformat.outputdir”的值来解决此问题?

谢谢

最佳答案

问题是hadoop服务是从另一个用户启动的(在我的情况下是SYSTEM),而mapreduce示例是从本地用户提交的。因此,这会通过返回[对于本地用户]的FileSystem统计信息为Null来引起问题。

从本地用户启动Hadoop后,上述问题就解决了。

关于c# - Windows中带有MR2的NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23734440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com