在使用程序连接yarn-session资源时候出现如下错误:
Caused by: org.apache.hadoop.ipc.RemoteException: Unknown protocol: org.apache.hadoop.yarn.api.ApplicationClientProtocolPB
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.getProtocolImpl(ProtobufRpcEngine.java:444)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:502)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1025)
at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:876)
at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:822)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:422)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1730)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2682)
明明在别的集群可以使用,后来经过对比发现,其他yarn集群为yarn模式,但是在此情况为高可用模式,所以需要的参数以及连接方式不一样。
修改配置
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yarn-cluster</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master1.flink</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>master1.flink</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>master2.flink</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master1.flink:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>master1.flink:8088</value>
</property>
重新执行后成功。