Hadoop:Datanodes可用:0(总共0,0死)

时间:2013-01-29 11:59:53

标签: hadoop

每次我跑:

hadoop dfsadmin -report

我得到以下输出:

Configured Capacity: 0 (0 KB)
Present Capacity: 0 (0 KB)
DFS Remaining: 0 (0 KB)
DFS Used: 0 (0 KB)
DFS Used%: �%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0

-------------------------------------------------
Datanodes available: 0 (0 total, 0 dead)
  1. 我的dfs /文件夹中没有数据目录。
  2. 此文件夹中存在锁定文件:in_use.lock
  3. 主节点,作业跟踪器和数据节点运行正常。

9 个答案:

答案 0 :(得分:1)

我遇到了完全相同的问题,当我检查datanodes日志时,有很多could not connect to master:9000,当我通过netstat -ntlp检查master上的端口时,我在输出中有这个:

tcp 0 0 127.0.1.1:9000 ...

我意识到我应该更改我的主机名或在所有配置中更改master。我决定做第一个原因似乎更容易。 所以我修改了/etc/hosts并将127.0.1.1 master更改为127.0.1.1 master-machine并在文件末尾添加了一个条目,如下所示:

192.168.1.1 master

然后我在master中将master-machine更改为/etc/hostname并重新启动计算机。 问题消失了。

答案 1 :(得分:0)

嗯......

你检查过防火墙吗?

当我使用hadoop时,我关闭了防火墙(iptables -F,在所有节点中)

然后再试一次。

答案 2 :(得分:0)

请检查datanode日志。它将在无法向namenode报告时记录错误。如果您发布这些错误,人们将能够提供帮助..

答案 3 :(得分:0)

当我们重新启动群集时,它发生在我们身上。但过了一会儿,自动检测到数据节点。可能是因为块报告延迟时间属性。

答案 4 :(得分:0)

通常在datanode中存在名称空间ID问题的错误。 因此,从master中删除名称dir,并从datanode中删除数据目录。 现在格式化datanode并尝试start-dfs。 该报告通常需要一些时间来反映所有数据节点。 即使我获得了0个数据节点,但经过一段时间后,主机检测到了奴隶。

答案 5 :(得分:0)

我有同样的问题,我刚解决了。

所有节点的

/ etc / hosts应如下所示:

127.0.0.1 localhost xxx.xxx.xxx.xxx master xxx.xxx.xxx.xxx slave-1 xxx.xxx.xxx.xxx slave-2

答案 6 :(得分:0)

只需按照以下步骤解决此问题-

  1. 确保/etc/hosts文件中主节点和从节点的IP地址正确
  2. 除非您确实需要数据stop-dfs.sh,否则请删除主/从节点中的所有data目录,然后运行hdfs namenode -formatstart-dfs.sh。这应该重新创建hdfs并解决问题

答案 7 :(得分:0)

格式化namenode不适用于我。因此,我检查了$HADOOP_HOME/logs处的日志。在secondarynamenode中,我发现了此错误:

ERROR org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode: Exception in doCheckpoint
java.io.IOException: Inconsistent checkpoint fields.
LV = -64 namespaceID = 2095041698 cTime = 1552034190786 ; clusterId = CID-db399b3f-0a68-47bf-b798-74ed4f5be097 ; blockpoolId = BP-31586866-127.0.1.1-1552034190786.
Expecting respectively: -64; 711453560; 1550608888831; CID-db399b3f-0a68-47bf-b798-74ed4f5be097; BP-2041548842-127.0.1.1-1550608888831.
    at org.apache.hadoop.hdfs.server.namenode.CheckpointSignature.validateStorageInfo(CheckpointSignature.java:143)
    at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.doCheckpoint(SecondaryNameNode.java:550)
    at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.doWork(SecondaryNameNode.java:360)
    at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode$1.run(SecondaryNameNode.java:325)
    at org.apache.hadoop.security.SecurityUtil.doAsLoginUserOrFatal(SecurityUtil.java:482)
    at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.run(SecondaryNameNode.java:321)
    at java.lang.Thread.run(Thread.java:748)

所以我停止了hadoop,然后专门格式化了给定的集群ID:

hdfs namenode -format -clusterId CID-db399b3f-0a68-47bf-b798-74ed4f5be097

这解决了问题。

答案 8 :(得分:0)

还有一个难以理解的原因也可能发生:您的datanode不能正常启动,但是其他所有功能都可以正常工作。

就我而言,当查看日志时,我发现SideSync(对于MacOS)已经使用了绑定端口510010。我发现了这个 sudo lsof -iTCP -n -P|grep 0010, 但是,您可以使用类似的技术来确定什么已经占用了您众所周知的数据节点端口。

将其关闭并重新启动即可解决问题。

此外,如果您已经以根用户身份安装了Hadoop / Yarn,但是在单个主目录中有数据目录,然后尝试以单个用户身份运行它,则必须将数据节点目录公开。 >