hadoop无法识别从程序

c86crjj0  于 2021-05-29  发布在  Hadoop
关注(0)|答案(4)|浏览(366)

我在本地机器和从属节点上安装了hadoop。我想把它用于多节点集群(目前主节点+1从节点)。我还阅读了hadoop多节点教程,并尝试在master和slave上运行hadoop。我有我的系统的下一个配置。在我升级后 hdfs-site.xml 以及 core-site.xml ,我定义本地机器上的主设备和从设备。在 masters 我把 localhost ,在 slaves 我把从节点的名字。。。关于奴隶我只定义了 slaveslocalhost 之后我执行

hduser@user:/usr/local/hadoop-2.7.2$ sbin/start-dfs.sh

在本地存储库中。终端中的hadoop答案似乎不错:

Starting namenodes on [localhost]
localhost: starting namenode, logging to /usr/local/hadoop-2.7.2/logs/hadoop-hduser-namenode-user.out
hduser@slavename: starting datanode, logging to /usr/local/hadoop-2.7.2/logs/hadoop-hduser-datanode-slavename.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /usr/local/hadoop-2.7.2/logs/hadoop-hduser-secondarynamenode-user.out

最后我进去了 localhost:50070 我没有看到任何从节点在下面 LiveNodes
我想,我没有连接到我的从属服务器,无论如何,在集群启动期间我没有收到任何错误消息。在我做了一站dfs之后,我真的得到了一个信息:

Stopping namenodes on [localhost]
localhost: stopping namenode
hduser@slavename: no datanode to stop
Stopping secondary namenodes [0.0.0.0]
0.0.0.0: stopping secondarynamenode

因此,我的从属节点没有连接到主节点。。。。
我在日志文件中也看到了日志。错误消息是:

java.io.IOException: Incorrect configuration: namenode address dfs.namenode.servicerpc-address or dfs.namenode.rpc-address is not configured.

我怎样才能把我的主人和奴隶联系起来?
ps我实际上可以使用hadoop作为主程序而不需要任何从属程序,我还可以在本地模式下用本地hadoop安装的输入运行spark代码。。。主要的问题只是一个奴隶。

ijnw1ujt

ijnw1ujt1#

@西蜀泰雅,谢谢你的消息。实际上,我已经更新了hadoop教程中的所有文件(以及您在这里如何告诉我)。也 core-site.xml 可以。我也负责订单 bin/hdfs namenode -format 没有收到任何错误消息。在我被处决之后 sbin/start-dfs.sh 我在日志文件中找到了错误 hadoop-hduser-secondarynamenode-user.log :

java.io.IOException: Inconsistent checkpoint fields.
LV = -63 namespaceID = 1073223169 cTime = 0 ; clusterId = CID-66f842d0-e32e-4590-b8be-c4f4ff898c4d ; blockpoolId = BP-160655376-127.0.1.1-1461593248732.
Expecting respectively: -63; 1554470454; 0; CID-6388cf98-8302-48ab-8cd4-44e99ff3d9cb; BP-536690032-127.0.1.1-1461566958202.
        at org.apache.hadoop.hdfs.server.namenode.CheckpointSignature.validateStorageInfo(CheckpointSignature.java:134)
        at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.doCheckpoint(SecondaryNameNode.java:531)
        at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.doWork(SecondaryNameNode.java:395)
        at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode$1.run(SecondaryNameNode.java:361)
        at org.apache.hadoop.security.SecurityUtil.doAsLoginUserOrFatal(SecurityUtil.java:415)
        at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.run(SecondaryNameNode.java:357)
        at java.lang.Thread.run(Thread.java:745)
2016-04-25 16:10:23,821 ERROR org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode: Exception in doCheckpoint

在日志文件中 hadoop-hduser-datanode-user.log ```
2016-04-26 09:10:37,087 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool (Datanode Uuid unassigned) service to localhost/127.0.0.1:9000. Exiting.
java.io.IOException: All specified directories are failed to load.
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:478)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1358)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1323)
at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:317)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:223)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:802)
at java.lang.Thread.run(Thread.java:745)

可能secondarynamenode的错误消息与此无关,是昨天的。今天早上我在这个文件里没有收到任何错误信息。
yk9xbfzb

yk9xbfzb2#

首先,您需要在主节点和从节点之间设置无密码ssh登录。
然后定义所有必需的配置。检查core-site.xml文件

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

遵循以下步骤:

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

它应该能解决你的问题。

rkue9o1l

rkue9o1l3#

您的主文件名应该包含secondarynamenode的地址,以便namenode可以读取它。您需要在core-site.xml配置文件中配置fs.default.name,如下所示:

<property>
   <name>fs.default.name</name>
   <value>hdfs://master:9000</value>
</property>

您还应该检查“hdfs namenode-format”在hadoop中的工作方式。

r3i60tvu

r3i60tvu4#

检查两个节点之间是否建立了ssh连接。
检查您是否在nn中的从属文件上定义了正确的ip地址。

相关问题