Protobuf RPC 在 Hadoop 2.2.0 单节点服务器上不可用?

Posted

技术标签:

【中文标题】Protobuf RPC 在 Hadoop 2.2.0 单节点服务器上不可用?【英文标题】:Protobuf RPC not available on Hadoop 2.2.0 single node server? 【发布时间】:2013-11-23 14:40:37 【问题描述】:

我正在尝试在按照本教程安装的本地单节点集群上运行 hadoop 2.2.0 mapreduce 作业: http://codesfusion.blogspot.co.at/2013/10/setup-hadoop-2x-220-on-ubuntu.html?m=1

虽然在服务器端抛出了以下异常:

org.apache.hadoop.ipc.RpcNoSuchProtocolException: Unknown protocol: org.apache.hadoop.yarn.api.ApplicationClientProtocolPB
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.getProtocolImpl(ProtobufRpcEngine.java:527)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:566)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:928)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2048)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2044)
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:1491)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2042)

有没有办法让我将 Protobuf RPC 配置为在服务器端可用?我需要hadoop本机库吗?或者我可以在客户端以某种方式切换到 Writables/Avro RPC?

【问题讨论】:

【参考方案1】:

好的,找到原因了,我连接错了yarn resourcemanager的端口。正确的配置是: yarn.resourcemanager.address=localhost:8032

【讨论】:

在 hadoop 2.7.1 上,对我来说是 8050【参考方案2】:

在我的例子中,当 Application Master 和 YARN 容器之间没有足够的内存时,我在日志中遇到了同样的错误。减少了 yarn.app.mapreduce.am.resource.mb 属性,它适用于我的单节点安装。

【讨论】:

以上是关于Protobuf RPC 在 Hadoop 2.2.0 单节点服务器上不可用?的主要内容,如果未能解决你的问题,请参考以下文章

RPC和Protobuf

protobuf源码解析与netty+rpc实战

rpc框架:thrift 和protobuf有啥区别?

python通过protobuf实现rpc

protobuf及grpc的client请求

如何从 protobuf 构建 rpc?