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

问题描述 投票:0回答:14

当我尝试启动 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>

cat 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 管理器。

hadoop hdfs cloudera-cdh
14个回答
24
投票

我也面临着同样的问题,最后发现 fs.default.name 值中有一个空格。截断空间解决了这个问题。上面的 core-site.xml 似乎没有空间,所以问题可能与我遇到的不同。我的2分钱


7
投票

这些步骤为我解决了问题:

  • export HADOOP_CONF_DIR = $HADOOP_HOME/etc/hadoop
  • echo $HADOOP_CONF_DIR
  • hdfs namenode -format
  • hdfs getconf -namenodes
  • ./start-dfs.sh

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
就可以了。


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 中配置完整的主机名,主站和从站为我解决了这个问题。

旧:node1(失败)

新:node1.krish.com(成功)


0
投票

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


0
投票

在我的情况下,我通过将 /etc/hosts 配置更改为小写来修复。


0
投票

就我而言,我错误地将 HADOOP_CONF_DIR 设置为其他 Hadoop 安装。

添加到hadoop-env.sh:

export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop/

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>

0
投票

我遇到了同样的问题,格式化 HDFS 解决了我的问题。 如果您有重要的元数据,请勿格式化 HDFS。
格式化HDFS命令:

hdfs namenode -format

When namenode was not working

After formatting HDFS


0
投票

检查您的“/etc/hosts”文件:
必须有如下一行:(如果没有,请添加)


namenode   127.0.0.1

将 127.0.01 替换为您的 namenode IP。


0
投票

在 hadoop-env.cmd 中添加以下行

set HADOOP_HOME_WARN_SUPPRESS=1

0
投票

我知道,最近回答了这个问题。

应检查以下内容来修复:

  1. Master 能够通过名称 ping Slave,反之亦然;如果您在配置中使用主机名而不是 IP 地址。如果无法 ping 通,应检查主服务器和从服务器上的 /etc/hosts。在所有节点中添加所有节点的条目。

  2. 在master上完成所有配置更改后,在master上执行以下操作。 * 将 更改为实际值。

    scp $HADOOP_HOME/etc/hadoop/* @:$HADOOP_HOME/etc/hadoop/

© www.soinside.com 2019 - 2024. All rights reserved.