我的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
...
似乎问题在于检索Secondary Namenode http地址,实际上在hdfs-site-xml
中设置为null(我不知道为什么):
<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!hdfs-site.xml
列表&gt;添加新属性...问题是UI未列出dfs.namenode.secondary.http-address
不允许我添加它,因为它说...它已经存在! :)我还注意到,每次从Amabri用户界面重新启动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变量的名称。
有什么想法吗?谢谢!
答案 0 :(得分:2)
我有一个解决方法,可以在ambari环境下工作:
在ambari节点中修改:
改变自:
Select Table1.*, Table2.ColX
from ...
指定辅助名称节点的特定值,而不是模板1:
{
"name": "dfs.namenode.secondary.http-address",
"templateName": ["snamenode_host"],
"foreignKey": null,
"value": "<templateName[0]>:50090",
"filename": "hdfs-site.xml"
},
将/usr/lib/ambari-server/web/javascripts/app.js.gz重命名为/usr/lib/ambari-server/web/javascripts/app.js.gz.old
gzip app.js,以便在同一目录中生成新的app.js.gz
刷新你的ambari web并强制重启HDFS,这将重新生成适当的/etc/hadoop/conf/hdfs-site.xml,如果没有,你可以在ambari web中添加一个新的属性和然后删除它以便在按下保存按钮时强制进行更改。
希望这有帮助。
- MLG
答案 1 :(得分:0)
部分修复:在编辑hdfs-site.xml
文件之前,必须停止所有HDFS服务(日志节点,名称节点和数据节点)。然后,当然,不能使用Ambari“开始按钮”,因为配置会被粉碎......因此有必要手动重新启动所有服务。这不是最终的解决方案,因为希望这种配置更改可以从Ambari UI ...