5

分散シェルの例を実行しようとしています (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

ただし、機能しません。

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

本質的な問題は、2 番目のトレースにあるようです。

Unknown protocol: org.apache.hadoop.yarn.api.ClientRMProtocolPB

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

そのため、私のビルドが正しく機能しなかった可能性があります。上記の問題の原因についてのアイデアはありますか (MapReduce 以外の低レベルの実験を計画しているので、HEAD を使用したいと思います)。または、HEAD が部分的に壊れていますか? HEAD 上の分散シェルは機能しますか?

私自身の(まだ動作していない...)クライアントは、まだ同じエラーで失敗します:

Caused by: java.io.IOException: Unknown protocol: org.apache.hadoop.yarn.api.ClientRMProtocolPB
4

1 に答える 1

3

私自身のコードの主な問題は、Configurationクラスをインスタンス化するのではなく、単純にインスタンス化したことであることが判明しましたYarnConfiguration。このように、糸の設定ファイルは読み取られず、デフォルトのポートでサーバーに接続しようとしましたが、これは私の設定と一致しません。

例にも同じバグが存在するdistributedshellようです。

于 2012-09-04T11:38:48.483 に答える