HBase MapReduce中的Nullpointer异常

时间:2014-01-31 13:08:57

标签: java hadoop nullpointerexception mapreduce hbase

我有一个mapreduce应用程序,它接受HBase源数据并将其mapreduces到另一个HBase表,全部用Java编写。当我使用

运行它时
hadoop jar myhbase.jar 

以#{1}}终止 如下:

NullpointerException

我正在使用 14/01/31 11:07:02 INFO zookeeper.ClientCnxn: Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session 14/01/31 11:07:02 INFO zookeeper.ClientCnxn: Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x143e677d6e30007, negotiated timeout = 180000 14/01/31 11:07:03 INFO mapreduce.TableOutputFormat: Created table instance for hourinfo 14/01/31 11:07:03 INFO mapred.JobClient: Cleaning up the staging area hdfs://192.168.1.149:9000/hadoop_tmp/mapred/staging/root/.staging/job_201401310933_0002 Exception in thread "main" java.lang.NullPointerException at org.apache.hadoop.net.DNS.reverseDns(DNS.java:72) at org.apache.hadoop.hbase.mapreduce.TableInputFormatBase.reverseDNS(TableInputFormatBase.java:219) at org.apache.hadoop.hbase.mapreduce.TableInputFormatBase.getSplits(TableInputFormatBase.java:184) at org.apache.hadoop.mapred.JobClient.writeNewSplits(JobClient.java:962) at org.apache.hadoop.mapred.JobClient.writeSplits(JobClient.java:979) at org.apache.hadoop.mapred.JobClient.access$600(JobClient.java:174) at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:897) at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:850) 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.JobClient.submitJobInternal(JobClient.java:850) at org.apache.hadoop.mapreduce.Job.submit(Job.java:500) at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:530) at mapreduce.hi.api.hbase.HBaseJobRunner.main(HBaseJobRunner.java:37) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.hadoop.util.RunJar.main(RunJar.java:156) hbase-0.94.5。我真的陷入了这个错误。请帮助..

2 个答案:

答案 0 :(得分:1)

查看堆栈跟踪的顶部:

 at org.apache.hadoop.net.DNS.reverseDns(DNS.java:72)

确保您的正向和反向DNS查找与HBase / ZK节点完全匹配。

答案 1 :(得分:-1)

好的,我解决了这个问题。从我得到的例外来看,它来自TableInputFormatBase.getSplits()。当我分析TableInputFormatBase的源代码时,它正在寻找作业配置参数hbase.nameserver.address。当我从我的代码中设置此值时,它可以工作。