Java Hadoop管道字计数示例:LocalJobRunner中的NullPointerException

Java Hadoop管道字计数示例:LocalJobRunner中的NullPointerException,java,c++,hadoop,nullpointerexception,pipe,Java,C++,Hadoop,Nullpointerexception,Pipe,我正在尝试运行关于Hadoop管道的示例: 我在编译和其他方面都很成功。但是,在运行之后,它会显示NullPointerException错误。我尝试了很多方法,读了很多类似的问题,但没有找到解决这个问题的实际方法。 注意:我在伪分布式环境中的一台机器上运行 hadoop pipes-D hadoop.pipes.java.recordreader=true-D hadoop.pipes.java.recordwriters=true-input/input-output/output-pro

我正在尝试运行关于Hadoop管道的示例:

我在编译和其他方面都很成功。但是,在运行之后,它会显示NullPointerException错误。我尝试了很多方法,读了很多类似的问题,但没有找到解决这个问题的实际方法。 注意:我在伪分布式环境中的一台机器上运行

hadoop pipes-D hadoop.pipes.java.recordreader=true-D hadoop.pipes.java.recordwriters=true-input/input-output/output-program/bin/wordcount
不推荐使用:不推荐使用此脚本执行mapred命令。
而是对其使用mapred命令。
15/02/18 01:09:02信息配置。弃用:session.id已弃用。而是使用dfs.metrics.session-id
15/02/18 01:09:02 INFO jvm.JvmMetrics:使用processName=JobTracker,sessionId初始化jvm度量=
15/02/18 01:09:02信息jvm.JvmMetrics:无法使用processName=JobTracker、sessionId=-初始化jvm度量
15/02/18 01:09:03警告mapreduce.JobSubmitter:未设置作业jar文件。可能找不到用户类。请参阅作业或作业#setJar(字符串)。
15/02/18 01:09:04信息映射。文件输入格式:要处理的总输入路径:1
15/02/18 01:09:04信息mapreduce.JobSubmitter:拆分数:1
15/02/18 01:09:04信息配置。弃用:hadoop.pipes.java.recordreader已弃用。相反,请使用mapreduce.pipes.isjavarecordreader
15/02/18 01:09:04信息mapreduce.JobSubmitter:为作业提交令牌:job_local143452495_0001
15/02/18 01:09:06信息映射。LocalDistributedCacheManager:本地化hdfs://localhost:9000/bin/wordcount 作为文件:/tmp/hadoop abdulrahman/mapred/local/1424214545411/wordcount
15/02/18 01:09:06信息mapreduce.作业:跟踪作业的url:http://localhost:8080/
15/02/18 01:09:06 INFO mapred.LocalJobRunner:OutputCommitter在配置中设置为null
15/02/18 01:09:06信息mapreduce.作业:正在运行作业:作业\u local143452495\u 0001
15/02/18 01:09:06 INFO mapred.LocalJobRunner:OutputCommitter是org.apache.hadoop.mapred.FileOutputCommitter
15/02/18 01:09:06信息映射。LocalJobRunner:正在等待映射任务
15/02/18 01:09:06 INFO mapred.LocalJobRunner:启动任务:尝试\u local14342495\u 0001\u m\u000000\u 0
15/02/18 01:09:06信息映射。任务:使用ResourceCalculatorProcessTree:[]
15/02/18 01:09:06信息映射。映射任务:处理拆分:hdfs://localhost:9000/input/data.txt:0+68
15/02/18 01:09:07信息映射。映射任务:numReduceTasks:1
15/02/18 01:09:07信息mapreduce.作业:作业本地143452495\u 0001在uber模式下运行:false
15/02/18 01:09:07信息地图还原。作业:地图0%还原0%
15/02/18 01:09:07 INFO mapred.MapTask:(赤道)0千伏26214396(104857584)
15/02/18 01:09:07 INFO mapred.MapTask:mapreduce.task.io.sort.mb:100
15/02/18 01:09:07 INFO mapred.MapTask:软限制在83886080
15/02/18 01:09:07 INFO mapred.MapTask:bufstart=0;bufvoid=104857600
15/02/18 01:09:07 INFO mapred.MapTask:kvstart=26214396;长度=6553600
15/02/18 01:09:07 INFO mapred.MapTask:Map output collector class=org.apache.hadoop.mapred.MapTask$MapOutputBuffer
15/02/18 01:09:08信息映射。LocalJobRunner:映射任务执行器已完成。
15/02/18 01:09:08 WARN mapred.LocalJobRunner:job_local143452495_0001
java.lang.Exception:java.lang.NullPointerException
位于org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462)
在org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:522)上
原因:java.lang.NullPointerException
位于org.apache.hadoop.mapred.pipes.Application.(Application.java:104)
位于org.apache.hadoop.mapred.pipes.PipesMapRunner.run(PipesMapRunner.java:69)
位于org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:450)
位于org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
位于org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:243)
位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
在java.util.concurrent.FutureTask.run(FutureTask.java:262)处
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
运行(Thread.java:745)
15/02/18 01:09:08信息mapreduce.Job:Job Job_Local14342495_0001失败,状态失败,原因是:NA
15/02/18 01:09:08信息mapreduce。作业:计数器:0
线程“main”java.io.IOException中出现异常:作业失败!
位于org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:836)
位于org.apache.hadoop.mapred.pipes.Submitter.runJob(Submitter.java:264)
位于org.apache.hadoop.mapred.pipes.Submitter.run(Submitter.java:503)

在org.apache.hadoop.mapred.pipes.Submitter.main(Submitter.java:518)
上,经过大量研究,我发现问题实际上是由pipes/Application.java(第104行)中的这一行引起的:

我更改了代码并重新编译了hadoop:

byte[] password= "no password".getBytes();
if (jobToken != null)
{
     password= jobToken.getPassword();
}
这是我从你那里得到的

这解决了问题,我的程序目前正在运行,但我面临另一个问题,程序实际上挂起在map 0%reduce 0% 我将为这个问题打开另一个话题


谢谢,

Hi@AbdulRahman AlHamali我也有同样的问题,但我不知道如何访问Application.java来编辑它。有什么建议吗?我的hadoop版本是2.6
byte[] password= "no password".getBytes();
if (jobToken != null)
{
     password= jobToken.getPassword();
}