Ano*_*sse 5 hadoop mapreduce protocol-buffers hadoop-yarn
我正在尝试运行分布式 shell 示例(使用 Hadoop 的 SVN 结帐,这就是版本设置为 3.0.0-SNAPSHOT 的原因):
yarn jar share/hadoop/yarn/hadoop-yarn-applications-distributedshell-3.0.0-SNAPSHOT.jar \
-jar share/hadoop/yarn/hadoop-yarn-applications-distributedshell-3.0.0-SNAPSHOT.jar \
org.apache.hadoop.yarn.applications.distributedshell.Client -shell_command whoami
Run Code Online (Sandbox Code Playgroud)
但是它不起作用:
12/09/03 13:44:37 FATAL distributedshell.Client: Error running CLient
java.lang.reflect.UndeclaredThrowableException
at org.apache.hadoop.yarn.exceptions.impl.pb.YarnRemoteExceptionPBImpl.unwrapAndThrowException(YarnRemoteExceptionPBImpl.java:128)
at org.apache.hadoop.yarn.api.impl.pb.client.ClientRMProtocolPBClientImpl.getClusterMetrics(ClientRMProtocolPBClientImpl.java:123)
at org.hadoop.yarn.client.YarnClientImpl.getYarnClusterMetrics(YarnClientImpl.java:163)
at org.apache.hadoop.yarn.applications.distributedshell.Client.run(Client.java:316)
at org.apache.hadoop.yarn.applications.distributedshell.Client.main(Client.java:164)
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:601)
at org.apache.hadoop.util.RunJar.main(RunJar.java:208)
Caused by: org.apache.hadoop.ipc.RemoteException(java.io.IOException): Unknown protocol: org.apache.hadoop.yarn.api.ClientRMProtocolPB
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.getProtocolImpl(ProtobufRpcEngine.java:398)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:456)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:898)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1732)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1728)
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:1367)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1726)
at org.apache.hadoop.ipc.Client.call(Client.java:1164)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:202)
at $Proxy7.getClusterMetrics(Unknown Source)
at org.apache.hadoop.yarn.api.impl.pb.client.ClientRMProtocolPBClientImpl.getClusterMetrics(ClientRMProtocolPBClientImpl.java:121)
... 8 more
Run Code Online (Sandbox Code Playgroud)
基本问题似乎在第二个跟踪中:
Unknown protocol: org.apache.hadoop.yarn.api.ClientRMProtocolPB
Run Code Online (Sandbox Code Playgroud)
有谁知道 Hadoops ProtoBufRPC 的协议注册是如何工作的?关于如何调试的任何想法?
编辑:使用 Hadoop 版本 2.0.1-alpha,它的效果稍微好一些。
12/09/03 18:43:14 INFO distributedshell.Client: Application did not finish. YarnState=FAILED, DSFinalStatus=FAILED. Breaking monitoring loop
12/09/03 18:43:14 ERROR distributedshell.Client: Application failed to complete successfully
Run Code Online (Sandbox Code Playgroud)
所以也许我的构建没有正常工作。关于导致上述问题的原因的任何想法(我真的很想使用 HEAD,因为我计划在 MapReduce 之外进行一些低级实验)?或者 HEAD 部分损坏,HEAD 上的分布式 shell 对您有用吗?
我自己的(尚未工作......)客户端仍然失败并出现相同的错误:
Caused by: java.io.IOException: Unknown protocol: org.apache.hadoop.yarn.api.ClientRMProtocolPB
Run Code Online (Sandbox Code Playgroud)
事实证明,我自己的代码的主要问题是我天真地实例化了Configuration类,而不是实例化YarnConfiguration. 这样,纱线配置文件就不会被读取,它会尝试通过默认端口联系服务器 - 这与我的设置不一致。
该示例中似乎存在相同的错误distributedshell。
| 归档时间: |
|
| 查看次数: |
4708 次 |
| 最近记录: |