具体报错信息如下:

bulk_load执行时报错信息:

java.lang.NoClassDdefFoundError: com/google/protobuf/Message

at org.apache.hadoop.hbase.io.HbaseObjectWritable.<clinit>(HbaseObjectWritable.java:263)

...........

hive 创建表不成功报错信息:

java.lang.NoClassDefFoundError: com/google/protobuf/Messageat
org.apache.hadoop.hbase.io.HbaseObjectWritable.<clinit>(HbaseObjectWritable.java:263)at
org.apache.hadoop.hbase.ipc.Invocation.write(Invocation.java:139)at
org.apache.hadoop.hbase.ipc.HBaseClient$Connection.sendParam(HBaseClient.java:638)at
org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:1001)at
org.apache.hadoop.hbase.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.java:150)at
$Proxy8.getProtocolVersion(Unknown Source)......
org.apache.hadoop.mapred.Child: Error running child : java.lang.NoClassDefFoundError:
org/apache/hadoop/hbase/io/HbaseObjectWritableat

以上2个报错,原因相同都是缺少包引起

解决方法:

将Hbase/lib包:protobuf-java-2.4.0a.jar 考到集群每个节点的/hadoop/lib 下,重新启动集群,即解决问题。

类似java.lang.NoClassDefFoundError,一般2种可能:

  1. 对应jar包缺失。

  2. 环境变量 CLASSPATH不正确。