配置错误:namenode地址dfs.namenode.rpc-address未配置。

12

当我尝试启动一个DataNode时,我遇到了这个错误。据我所读,RPC参数仅用于HA配置,而我没有设置(我想)。

2014-05-18 18:05:00,589 INFO  [main] impl.MetricsSystemImpl (MetricsSystemImpl.java:shutdown(572)) - DataNode metrics system shutdown complete.
2014-05-18 18:05:00,589 INFO  [main] datanode.DataNode (DataNode.java:shutdown(1313)) -     Shutdown complete.
2014-05-18 18:05:00,614 FATAL [main] datanode.DataNode (DataNode.java:secureMain(1989)) - Exception in secureMain
java.io.IOException: Incorrect configuration: namenode address dfs.namenode.servicerpc-address or dfs.namenode.rpc-address is not configured.
at org.apache.hadoop.hdfs.DFSUtil.getNNServiceRpcAddresses(DFSUtil.java:840)
at   org.apache.hadoop.hdfs.server.datanode.BlockPoolManager.refreshNamenodes(BlockPoolManager.java:151)
at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:745)
at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:278)

我的文件看起来像这样:

[root@datanode1 conf.cluster]# cat core-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<property>
 <name>fs.defaultFS</name>
 <value>hdfs://namenode:8020</value>
</property>

</configuration>

查看hdfs-site.xml文件

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>
 <name>dfs.datanode.data.dir</name>
 <value>/hdfs/data</value>
</property>
<property>
 <name>dfs.permissions.superusergroup</name>
 <value>hadoop</value>
</property>
</configuration>

我正在使用最新的CDH5发行版。

Installed Packages
Name        : hadoop-hdfs-datanode
Arch        : x86_64
Version     : 2.3.0+cdh5.0.1+567
Release     : 1.cdh5.0.1.p0.46.el6

有没有关于如何解决这个问题的有用建议?

编辑:只需使用Cloudera管理器。


这个其他问题链接有用吗? - nelsonda
14个回答

24

我也遇到了同样的问题,最终发现 fs.default.name 值里有一个空格。删除这个空格就解决了该问题。上述的 core-site.xml 似乎没有空格,所以问题可能与我遇到的不同。以上是我的意见。


不确定为什么这个被踩了。 移除属性之间的空格确实解决了我的问题。 我是按照 Digital Ocean 的指南操作的。 - Divyanshu Das
3
我曾遇到同样的问题,这是因为我从教程中复制了代码(http://www.tutorialspoint.com/hadoop/hadoop_enviornment_setup.htm),但没有清理干净。 - Keerthi Bandara
我曾经遇到过类似的问题。与其说是空格的问题,不如说是在fs.default.name相同的位置上有无效的信息。在我修复了这个问题之后,一切都正常工作了。 - Michael Galaxy

7
这些步骤对我解决了问题:
  • export HADOOP_CONF_DIR = $HADOOP_HOME/etc/hadoop
  • echo $HADOOP_CONF_DIR
  • hdfs namenode -format
  • hdfs getconf -namenodes
  • ./start-dfs.sh
注意:请不要改变上述命令中的HTML标签、括号或其他字符。

1
请检查$HADOOP_INSTALL/etc/hadoop目录下的core-site.xml文件。确保属性fs.default.name已正确配置。

1
显然,您的core-site.xml配置有误。
<property>
 <name>fs.defaultFS</name>
 <value>hdfs://namenode:8020</value>
</property>

你的<name>fs.defaultFS</name>设置为<value>hdfs://namenode:8020</value>,但你的机器主机名datanode1。所以你只需要将namenode改为datanode1就可以了。

这个答案和Hamdi Charef的答案一起是我的解决方案。 - Kevin Milner

0
这种问题主要是由于以下任一文件中的值或属性名称中存在空格所导致的- core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml。
请确保在开放和关闭名称和值标签之间没有放置任何空格或更改行。
代码:
 <property> 
<name>dfs.name.dir</name> <value>file:///home/hadoop/hadoop_tmp/hdfs/namenode</value> 
<final>true</final> 
</property>

1
请提供一些示例 - DeshDeep Singh
你应该在你的回答中加入这个,这样大家都能理解。我现在已经做了。 - DeshDeep Singh

0

我遇到了完全相同的问题。我通过检查数据节点上的环境找到了解决办法:

$ sudo update-alternatives --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
$ sudo update-alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster

确保在数据节点上正确设置了备选项。


0
在core-site.xml、masters和slaves中配置完整的主机名解决了我的问题。
旧的:node1(失败)
新的:node1.krish.com(成功)

0

创建dfs.name.dir和dfs.data.dir目录,并在core-site.xml、masters和slaves中配置完整的主机名,解决了我的问题。


0
请检查您的'/etc/hosts'文件:
必须有以下一行:(如果没有,请添加)
namenode 127.0.0.1
将127.0.01替换为您的namenode IP。

0

我曾经遇到过同样的问题,格式化 HDFS 解决了我的问题。如果你有重要的元数据,请不要格式化 HDFS。
格式化 HDFS 的命令:hdfs namenode -format

当 namenode 不工作时
当namenode不工作时

格式化HDFS后 格式化HDFS后


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接