Ambari 无法启动 Namenode
Ambari is not able to start the Namenode
我的 Ambari 服务器有问题,它无法启动 Namenode。我正在使用 HDP 2.0.6、Ambari 1.4.1。值得一提的是,一旦我启用了 Kerberos 安全性,就会发生这种情况,我的意思是,当它被禁用时,没有错误。
错误是:
2015-02-04 16:01:48,680 错误 namenode.EditLogInputStream (EditLogFileInputStream.java:nextOpImpl(173)) - 捕获异常初始化 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:获取 http://int-iot-hadoop-fe-02.novalocal:8480/getJournal?jid=integration&segmentTxId=1&storageInfo=-47%3A1493795199%3A0%3ACID-a5152e6c-64ab-4978-9f1c-e4613a09454d 失败,状态代码为 500
回应讯息:
getedit 失败。 java.lang.IllegalArgumentException:不包含有效的 host:port 权限:在 org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:211) 在 org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:163) 处为空org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:152) 在 org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.getHttpAddress(SecondaryNameNode.java:210) 在 org.apache.hadoop.hdfs.qjournal.server.GetJournalEditServlet.isValidRequestor(GetJournalEditServlet.java:93) 在 org.apache.hadoop.hdfs.qjournal.server.GetJournalEditServlet.checkRequestorOrSendError (GetJournalEditServlet.java:128) 在 org.apache.hadoop.hdfs.qjournal.server.GetJournalEditServlet.doGet(GetJournalEditServlet.java:174) 在
...
似乎问题是关于检索辅助 Namenode http 地址,实际上它在 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 服务时,都会在 /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
属性.
关联的人偶变量的名称
有什么想法吗?谢谢!
部分修复:在编辑hdfs-site.xml
文件之前需要停止所有HDFS 服务(Journal Node、Namenodes 和Datanodes)。那么当然不能使用Ambari "start button" 因为配置会被砸掉...所以需要手动重启所有的服务。这不是最终的解决方案,因为希望可以从 Ambari UI...
完成此配置更改
我有一个解决方法可以让它在 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
我的 Ambari 服务器有问题,它无法启动 Namenode。我正在使用 HDP 2.0.6、Ambari 1.4.1。值得一提的是,一旦我启用了 Kerberos 安全性,就会发生这种情况,我的意思是,当它被禁用时,没有错误。
错误是:
2015-02-04 16:01:48,680 错误 namenode.EditLogInputStream (EditLogFileInputStream.java:nextOpImpl(173)) - 捕获异常初始化 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:获取 http://int-iot-hadoop-fe-02.novalocal:8480/getJournal?jid=integration&segmentTxId=1&storageInfo=-47%3A1493795199%3A0%3ACID-a5152e6c-64ab-4978-9f1c-e4613a09454d 失败,状态代码为 500
回应讯息:
getedit 失败。 java.lang.IllegalArgumentException:不包含有效的 host:port 权限:在 org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:211) 在 org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:163) 处为空org.apache.hadoop.net.NetUtils.createSocketAddr(NetUtils.java:152) 在 org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.getHttpAddress(SecondaryNameNode.java:210) 在 org.apache.hadoop.hdfs.qjournal.server.GetJournalEditServlet.isValidRequestor(GetJournalEditServlet.java:93) 在 org.apache.hadoop.hdfs.qjournal.server.GetJournalEditServlet.checkRequestorOrSendError (GetJournalEditServlet.java:128) 在 org.apache.hadoop.hdfs.qjournal.server.GetJournalEditServlet.doGet(GetJournalEditServlet.java:174) 在
...
似乎问题是关于检索辅助 Namenode http 地址,实际上它在 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 服务时,都会在 /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
属性.
有什么想法吗?谢谢!
部分修复:在编辑hdfs-site.xml
文件之前需要停止所有HDFS 服务(Journal Node、Namenodes 和Datanodes)。那么当然不能使用Ambari "start button" 因为配置会被砸掉...所以需要手动重启所有的服务。这不是最终的解决方案,因为希望可以从 Ambari UI...
我有一个解决方法可以让它在 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