我的 Ambari 服务器有问题,它无法启动 Namenode。我正在使用 HDP 2.0.6、Ambari 1.4.1。值得一提的是,一旦我启用了 Kerberos 安全性,就会发生这种情况,我的意思是,当它被禁用时,没有错误。
错误是:
2015-02-04 16:01:48,680 ERROR namenode.EditLogInputStream (EditLogFileInputStream.java:nextOpImpl(173)) - caught exception initializing http://int-iot-hadoop-fe-02.novalocal:8480/getJournal?jid=integration&segmentTxId=1&storageInfo=-47%3A1493795199%3A0%3ACID-a5152e6c-64ab-4978-9f1c-e4613a09454d
org.apache.hadoop.hdfs.server.namenode.TransferFsImage$HttpGetFailedException: Fetch of http://int-iot-hadoop-fe-02.novalocal:8480/getJournal?jid=integration&segmentTxId=1&storageInfo=-47%3A1493795199%3A0%3ACID-a5152e6c-64ab-4978-9f1c-e4613a09454d failed with status code 500
Response message:
getedit failed. java.lang.IllegalArgumentException: Does not contain a valid host:port authority: null at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:211) at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:163) at org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:152) at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.getHttpAddress(SecondaryNameNode.java:210) at org.apache.hadoop.hdfs.qjournal.server.GetJournalEditServlet.isValidRequestor(GetJournalEditServlet.java:93) at org.apache.hadoop.hdfs.qjournal.server.GetJournalEditServlet.checkRequestorOrSendError(GetJournalEditServlet.java:128) at org.apache.hadoop.hdfs.qjournal.server.GetJournalEditServlet.doGet(GetJournalEditServlet.java:174) at
...
似乎问题在于检索辅助 Namenode http 地址,实际上该地址设置为 null hdfs-site-xml
(我不知道为什么):
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>null</value>
</property>
我试图将该参数的值设置为适当的值,但没有任何效果:
- 通过手动编辑
hdfs-site.xml
文件并运行hdfs namenode
,但没有任何反应。 - 通过手动编辑
hdfs-site.xml
文件并从 Ambari 启动整个 HDFS,但没有任何反应。甚至,dfs.namenode.secondary.http-address
参数再次设置为null! - 通过 Ambari UI > HDFS 服务 > 配置选项卡 >
hdfs-site.xml
列表 > 添加新属性...问题是dfs.namenode.secondary.http-address
UI 未列出不允许我添加它,因为它说...它已经存在!:) - 我试图在 /usr/lib/ambari-server/web/data/configuration/hdfs-site.json 中添加值,认为这可能是 Ambari 存储在 UI 中显示的值的地方,但没有成功。
我还注意到每次从 Amabri UI 重新启动 HDFS 服务时site-XXXX.pp
都会创建一个文件/var/lib/ambari-agent/data/
,我发现这些文件中的每一个都有:
[root@int-iot-hadoop-fe-02 ~]# cat /var/lib/ambari-agent/data/site-3228.pp | grep dfs.namenode.secondary.http-address
"dfs.namenode.secondary.http-address" => 'null',
我认为配置此属性的其他候选文件可能是/var/lib/ambari-agent/puppet/modules/hdp-hadoop/manifests/params.pp
. 有一个### hdfs-site
部分,但我不知道哪个是与dfs.namenode.secondary.http-address
属性关联的 puppet 变量的名称。
有任何想法吗?谢谢!