在使用 java 运行 Hadoop map reduce 作业时抛出空指针异常

Posted

技术标签:

【中文标题】在使用 java 运行 Hadoop map reduce 作业时抛出空指针异常【英文标题】:While running Hadoop map reduce job using java Null pointer exception is being thrown 【发布时间】:2016-01-08 15:19:14 【问题描述】:

提前谢谢...

我正在运行 Hadoop 版本 0.20.0 和 HBase 0.94。我有一个聚合逻辑,它将使用调度程序每晚 12 点运行。我们处于无法升级 HBase 和 Hadoop 的阶段。在运行 MapReduce 作业时,它会抛出如下异常,

java.lang.NullPointerException
        at org.apache.hadoop.conf.Configuration.getLocalPath(Configuration.java:877)
        at org.apache.hadoop.mapred.JobConf.getLocalPath(JobConf.java:280)
        at org.apache.hadoop.mapred.LocalJobRunner$Job.<init>(LocalJobRunner.java:89)
        at org.apache.hadoop.mapred.LocalJobRunner.submitJob(LocalJobRunner.java:373)
        at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:800)
        at org.apache.hadoop.mapreduce.Job.submit(Job.java:432)
        at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:447)

在独立运行时,它工作正常,没有抛出异常。

请帮助我们解决这个问题...

【问题讨论】:

@Dragan Bozanovic :框架内出现错误。不是来自我的代码。 【参考方案1】:

通过查看 getLocalPath 的定义:http://grepcode.com/file/repo1.maven.org/maven2/com.google.code.maven-play-plugin.org.apache.hadoop/hadoop-core/0.20.2-with-200-826/org/apache/hadoop/conf/Configuration.java#Configuration.getLocalPath%28java.lang.String%2Cjava.lang.String%29

如果我有正确的文件版本,String dirsProp 似乎不包含有关目录的信息。我猜 String[] dirs = getStrings(dirsProp); 正在返回 null。

这里的猜测是您缺少有关 Hadoop 中目录的配置。

【讨论】:

以上是关于在使用 java 运行 Hadoop map reduce 作业时抛出空指针异常的主要内容,如果未能解决你的问题,请参考以下文章

如何获取hadoop mapreduce job运行信息

hadoop——在命令行下编译并运行map-reduce程序 2

如何查看hadoop mapreduce 性能

如何在python中为Hadoop Map Reduce作业编写组合器和分区器?我如何在Hadoop Job中调用它

hadoop第五课:java开发Map/Reduce

在hadoop map-reduce中运行jar文件时出错