使用YARN资源管理器webapp时,我在查看具有作业历史记录的页面时遇到问题,其URL如下所示:
http://node-0002.example.com:19888/jobhistory/job/job_1455545464819_0001
它显示带有Java异常的HTTP错误,如下所示:
java.lang.IllegalArgumentException: Does not contain a valid host:port authority: node-0001.example.com,node-0002.example.com:8088 (configuration property 'yarn.resourcemanager.webapp.address')
at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:213)
at org.apache.hadoop.yarn.conf.YarnConfiguration.getSocketAddr(YarnConfiguration.java:1782)
at org.apache.hadoop.yarn.webapp.util.WebAppUtils.getResolvedRMWebAppURLWithoutScheme(WebAppUtils.java:164)
at org.apache.hadoop.mapreduce.v2.app.webapp.AppController.<init>(AppController.java:63)```
主机名node-0001.example.com,node-0002.example.com
显然是错误的。
我的yarn-site.xml
中有一个非常简单的启用HA的配置:
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>my-cluster</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>node-0001.example.com,node-0002.example.com</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.node-0001.example.com</name>
<value>node-0001.example.com</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.node-0002.example.com</name>
<value>node-0002.example.com</value>
</property>
唯一不寻常的是以与主机相同的方式命名rm-id
。我也尝试定义yarn.resourcemanager.address
和yarn.resourcemanager.webapp.address
等属性,但这并没有帮助。
知道以逗号分隔的列表而不是主机名来自何处?我使用Hadoop 2.7.1。