当我尝试启动 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>
<?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 管理器。
我也面临着同样的问题,最后发现 fs.default.name 值中有一个空格。截断空间解决了这个问题。上面的 core-site.xml 似乎没有空间,所以问题可能与我遇到的不同。我的2分钱
这些步骤为我解决了问题:
export HADOOP_CONF_DIR = $HADOOP_HOME/etc/hadoop
echo $HADOOP_CONF_DIR
hdfs namenode -format
hdfs getconf -namenodes
./start-dfs.sh
检查 $HADOOP_INSTALL/etc/hadoop 目录下的 core-site.xml。验证属性 fs.default.name 配置是否正确
显然,你的 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
就可以了。
我也遇到了完全相同的问题。我通过检查数据节点上的环境找到了解决方案:
$ 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
确保数据节点上的替代方案设置正确。
在 core-site.xml 中配置完整的主机名,主站和从站为我解决了这个问题。
旧:node1(失败)
新:node1.krish.com(成功)
创建 dfs.name.dir 和 dfs.data.dir 目录并在 core-site.xml、主站和从站中配置完整主机名解决了我的问题
在我的情况下,我通过将 /etc/hosts 配置更改为小写来修复。
就我而言,我错误地将 HADOOP_CONF_DIR 设置为其他 Hadoop 安装。
添加到hadoop-env.sh:
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop/
此类问题主要出现在以下任一文件中的属性值或名称中存在空格 - 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>
检查您的“/etc/hosts”文件:
必须有如下一行:(如果没有,请添加)
namenode 127.0.0.1
在 hadoop-env.cmd 中添加以下行
set HADOOP_HOME_WARN_SUPPRESS=1
我知道,最近回答了这个问题。
应检查以下内容来修复:
Master 能够通过名称 ping Slave,反之亦然;如果您在配置中使用主机名而不是 IP 地址。如果无法 ping 通,应检查主服务器和从服务器上的 /etc/hosts。在所有节点中添加所有节点的条目。
在master上完成所有配置更改后,在master上执行以下操作。 * 将
scp $HADOOP_HOME/etc/hadoop/*