Message missing required fields: callId, status

15 篇文章 0 订阅
1 篇文章 0 订阅

Hadoop出错 " Message missing required fields: callId, status"解决方案


用eclipse CDH-hadoop HDFS连接获取文件目录的时候出错:



这种问题大部分都是版本的问题,于是查看环境相关信息:

Hadoop环境版本信息: Hadoop 2.5.0-cdh5.3.2

本地hadoop相关jar版本 2.0.0-cdh4.4.0

<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.0.0-cdh4.4.0</version>
<exclusions>
<exclusion>
<artifactId>jdk.tools</artifactId>
<groupId>jdk.tools</groupId>
</exclusion>
</exclusions>
<scope>provided</scope>
</dependency>
<dependency> 
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId> 
<version>2.0.0-cdh4.4.0</version> 
<scope>provided</scope>
</dependency>

本地版本太低,接口不一致,将所有hadoop依赖修改版本号到2.2.0即可解决。


注释:具体博主没与说明解决方案;只是说版本不一致。本人正在探索中。。。。,如有新的进展会在博文中为大家展示。



博文连接全文:http://www.cnblogs.com/t2xingzhe/archive/2013/11/22/3437782.html

hadoop-2.2.0  hbase 0.95-hadoop2的 ,hdfs正常 ,启动 hbase 的时候hmaster启动进程启动就shutdown了
2013-11-21 20:07:58,892 FATAL [master:master:60000] master.HMaster: Unhandled exception. Starting shutdown.
java.io.IOException: Failed on local exception: com.google.protobuf.InvalidProtocolBufferException: Message missing required fields: callId, status; Host Details : local host is: "master/192.168.0.102"; destination host is: "master":8010;
 
这种问题大部分都是版本的问题,hadoop2.2这个版本比较新,最好用2.0.2的,因为要跟hbase 0.95相配合
 
也有推荐使用这种方式解决的:将proto文件中的callId和status由required改为optional,或者始终给callId和status设置值
后来换成hbase 0.96就没有这个问题了,然后出现新问题
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.ipc.RpcServerException): Unknown out of band call #-2147483647
这个问题好像百度也查不到,看了看国外的
http://search-hadoop.com/m/0Pnu41YGCIi/hbase+tianying+0.96&subj=RE+Hbase+0+96+and+Hadoop+2+2
What is your HBase version and Hadoop version? There is a RPC break change in hadoop 2.2. As a workaround,  I removed the hadoop hadoop-common-2.2. 0.2.0.6.0-68.jar and hadoop-hdfs-2.2. 0.2.0.6.0-68.jar from my Hbase/lib and let it use the one in hadoop path, then this error is gone. 
这里说的解决办法是把hadoop 的hadoop-common-2.2.0.2.0.6.0-68.jar和hdfs-2.2.0.2.0.6.0-68.jar 从hbase/lib中移除,然后放到hadoop的路径下
后来我懒得找,直接把所有hadoop的jar通通拷到hbase下,就OK了
还有一个办法就是
Did you replace the hadoop jars that is under hbase/lib with those of the cluster you are connecting too? 0.96.0 bundles 2.1.0-beta and sounds like you want to connect to hadoop-2.2.0. The two hadoops need to be the same version (the above is a new variant on the mismatch message, each more cryptic than the last).
把hadoop2.2换成hadoop2.1 应该也可以解决,这个没有试过

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值