我正在尝试使用一个namenode和两个datanode(slave1和slave2)设置Hadoop集群,因此我从Apache Hadoop下载了zip文件,并将其解压缩到namenode和datanode的一个(slave1)。
所以我在master / slave1中进行了所有配置(格式化namenode)并成功设置了slave1与master,这意味着我能够提交作业并在管理UI中查看datanode实例。
所以我在slave1中压缩了整个hadoop安装并将其解压缩到slave2中,并更改了tmp目录和环境变量(如JAVA_HOME)的一些属性值。我没有触及core-site.xml中的主URL(fs.defaultFS)。
当我尝试在slave2中启动datanode时,我收到此错误。
java.io.IOException: Incorrect configuration: namenode address dfs.namenode.servicerpc-address or dfs.namenode.rpc-address is not configured
奇怪的是,我没有在slave1中指定这些属性,并且能够在slave1中启动datanode而没有任何问题,但即使所有配置都相同,它也会在slave2中抛出此错误。
我发现这些链接与此问题有关,但它在我的环境中无效。
我在centos上使用hadoop 2.4.1和JDK1.7。
如果遇到这个问题的人已经弄明白并且可以分享一些信息,那将非常有帮助。
感谢。
答案 0 :(得分:1)
这些步骤解决了我的问题:
然后,Hadoop可以正常启动。
答案 1 :(得分:0)
我遇到了和你一样的问题。
当我使用命令scp将配置从Master复制到Slaves时,此命令并没有真正替换您的文件。在我首先删除整个hadoop文件夹并再次复制之后,问题解决了。
我建议您再次在Slave2中查看配置。
祝你好运。答案 2 :(得分:0)
如果您的主机名包含字符" _"例如。 " my_host转变"把它改成" myhost" 不要忘记更改core-site.xml中的主机名。
答案 3 :(得分:0)
您只需将core-site.xml配置为:
即可<property>
<name>fs.defaultFS</name>
<value>hdfs://slave:9000</value>
</property>
这意味着配置dfs.namenode.rpc-address
。
我遇到的一次错误经历。 与问题描述相同的错误按摩。
(属性名称拼写错误)
<property>
<name>fs.defautFS</name>
<value>hdfs://slave:9000</value>
</property>
答案 4 :(得分:-1)
我也遇到了和你一样的问题。原因是:
我配置了错误的文件,例如hadoop-env.sh,hdfs-site.xml,core-site.xml,mapred-site.xml。这些文件放在/usr/local/hadoop/etc/hadoop
目录中,而不是以前版本的/usr/local/hadoop/conf
。
此外,mapred-site.xml.template
目录中有/usr/local/hadoop/etc/hadoop
这样的文件,因此,您必须将此文件复制到其他文件,如此命令hduser@localhost:~$ cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml
我建议您按照本指南重新配置系统。 Install hadoop on single node 。 在此,您可以在多节点
中安装时探索问题答案 5 :(得分:-2)
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/data/namenode</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/data/datanode</value>
</property>
</configuration>
然后,您必须授予用户访问文件夹的权限。