Ambari无法启动Namenode

时间:2015-02-04 16:16:10

标签: hadoop hortonworks-data-platform ambari

我的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!
  • 通过Ambari UI&gt; 配置标签&gt; hdfs-site.xml列表&gt;添加新属性...问题是UI未列出dfs.namenode.secondary.http-address不允许我添加它,因为它说...它已经存在! :)
  • 我试图在/usr/lib/ambari-server/web/data/configuration/hdfs-site.json中添加该值,认为这可能是Ambari存储显示的值的地方用户界面,但没有成功。

我还注意到,每次从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变量的名称。

有什么想法吗?谢谢!

2 个答案:

答案 0 :(得分:2)

我有一个解决方法,可以在ambari环境下工作:

  • 在ambari节点中修改:

    • /usr/lib/ambari-server/web/javascripts/app.js
    • /usr/lib/ambari-server/web/javascripts/app.js.map

改变自:

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 ...

完成