【问题标题】:Ambari is not able to start the NamenodeAmbari 无法启动 Namenode
【发布时间】:2015-02-04 16:16:10
【问题描述】:

我的 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 @987654321@ org.apache.hadoop.hdfs.server.namenode.TransferFsImage$HttpGetFailedException: Fetch of @987654322@ 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 > HDFS 服务 > 配置选项卡 > hdfs-site.xml 列表 > 添加新属性...问题是 UI 未列出 dfs.namenode.secondary.http-address 不允许我添加它,因为它说...它已经存在了! :)
  • 我尝试在 /usr/lib/ambari-server/web/data/configuration/hdfs-site.json 中添加值,认为这可能是 Ambari 存储在 UI 中显示的值的地方,但没有成功。

我还注意到,每次从 Amabri UI 重新启动 HDFS 服务时,都会在 /var/lib/ambari-agent/data/ 下创建一个 site-XXXX.pp 文件,我发现这些文件中的每一个都有:

[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 变量的名称。

有什么想法吗?谢谢!

【问题讨论】:

    标签: hadoop hortonworks-data-platform ambari


    【解决方案1】:

    我有一个解决方法让它在 ambari 环境下工作:

    • 在ambari节点中修改:

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

    更改自:

    {
    "name": "dfs.namenode.secondary.http-address",
    "templateName": ["snamenode_host"],
    "foreignKey": null,
    "value": "<templateName[0]>:50090",
    "filename": "hdfs-site.xml"
    },
    

    到您的辅助名称节点的特定值,而不是模板之一:

    {
    "name": "dfs.namenode.secondary.http-address",
    "templateName": ["snamenode_host"],
    "foreignKey": null,
    "value": "my.secondary.namenode.domain: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

    【讨论】:

      【解决方案2】:

      部分修复:在编辑hdfs-site.xml 文件之前,必须停止所有 HDFS 服务(Journal Node、Namenodes 和 Datanodes)。然后,当然不能使用 Ambari 的“启动按钮”,因为配置会被破坏......因此需要手动重新启动所有服务。这不是最终的解决方案,因为希望可以从 Ambari UI 完成这种配置更改...

      【讨论】:

        猜你喜欢
        • 2020-06-09
        • 2015-07-28
        • 2018-05-11
        • 1970-01-01
        • 2015-06-17
        • 1970-01-01
        • 1970-01-01
        • 2023-01-05
        • 1970-01-01
        相关资源
        最近更新 更多