org.apache.hadoop.hbase.client.RpcRetryingCaller@665e5113, java.lang.IllegalAccessError: com/google/protobuf/HBaseZeroCopyByteString

Mon May 18 17:18:54 CST 2015, org.apache.hadoop.hbase.client.RpcRetryingCaller@665e5113, java.lang.IllegalAccessError: com/google/protobuf/HBaseZeroCopyByteString

at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:134)

at org.apache.hadoop.hbase.client.HTable.getRowOrBefore(HTable.java:705)

at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:144)

at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.prefetchRegionCache(HConnectionManager.java:1102)

at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1162)

at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1054)

at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1011)

at org.apache.hadoop.hbase.client.HTable.finishSetup(HTable.java:326)

at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:192)

at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:150)

at org.apache.hadoop.hbase.mapreduce.TableInputFormat.setConf(TableInputFormat.java:101)

at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:73)

at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133)

at org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:490)

at org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:510)

at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:394)

at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1295)

at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1292)

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.mapreduce.Job.submit(Job.java:1292)

at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1313)

at com.neusoft.foresealife.mr.LabelJob.main(LabelJob.java:34)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

at org.apache.hadoop.util.RunJar.main(RunJar.java:212)

Caused by: java.lang.IllegalAccessError: com/google/protobuf/HBaseZeroCopyByteString

at org.apache.hadoop.hbase.protobuf.RequestConverter.buildRegionSpecifier(RequestConverter.java:897)

at org.apache.hadoop.hbase.protobuf.RequestConverter.buildGetRowOrBeforeRequest(RequestConverter.java:131)

at org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRowOrBefore(ProtobufUtil.java:1402)

at org.apache.hadoop.hbase.client.HTable$2.call(HTable.java:701)

at org.apache.hadoop.hbase.client.HTable$2.call(HTable.java:699)

at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:120)

... 28 more

15/05/18 17:18:54 INFO mapreduce.JobSubmitter: Cleaning up the staging area /user/root/.staging/job_1431677581601_0001

Exception in thread "main" java.lang.IllegalAccessError: com/google/protobuf/HBaseZeroCopyByteString

at org.apache.hadoop.hbase.protobuf.RequestConverter.buildRegionSpecifier(RequestConverter.java:897)

at org.apache.hadoop.hbase.protobuf.RequestConverter.buildGetRowOrBeforeRequest(RequestConverter.java:131)

at org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRowOrBefore(ProtobufUtil.java:1402)

at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1176)

at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1054)

at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:1011)

at org.apache.hadoop.hbase.client.HTable.finishSetup(HTable.java:326)

at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:192)

at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:150)

at org.apache.hadoop.hbase.mapreduce.TableInputFormat.setConf(TableInputFormat.java:101)

at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:73)

at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133)

at org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:490)

at org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:510)

at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:394)

at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1295)

at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1292)

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.mapreduce.Job.submit(Job.java:1292)

at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1313)

at com.neusoft.foresealife.mr.LabelJob.main(LabelJob.java:34)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

at org.apache.hadoop.util.RunJar.main(RunJar.java:212)

You have new mail in /var/spool/mail/root

解决办法:

这是hbase的一个bug,详细信息访问:

https://issues.apache.org/jira/browse/HBASE-10304

hbase-protocol-*.jar包配置到hadoopclass环境变量中.

在shell中,查找该文件

hbase-protocol-0.96.2-hadoop2.jar

[root@Slave01 home]# find / -name hbase-protocol-*

/opt/cm-5.0.0/share/cmf/lib/cdh5/hbase-protocol-0.96.1.1-cdh5.0.0.jar

/opt/cm-5.0.0/share/cmf/cloudera-navigator-server/libs/cdh5/hbase-protocol-0.96.1.1-cdh5.0.0.jar

/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/flume-ng/lib/hbase-protocol-0.96.1.1-cdh5.0.0.jar

/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/mahout/lib/hbase-protocol-0.96.1.1-cdh5.0.0.jar

/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/hbase/hbase-protocol-0.96.1.1-cdh5.0.0.jar

/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/hbase/lib/hbase-protocol-0.96.1.1-cdh5.0.0.jar

/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/hbase-solr/lib/hbase-protocol-0.96.1.1-cdh5.0.0.jar

解决方法:

1、在集群环境变量 etc/profiles 里添加如下配置:

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/hbase/hbase-protocol-0.96.1.1-cdh5.0.0.jar

2、执行source /etc/profile,使得配置生效,各个节点需要配置。