每次我跑:
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)
答案 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)
只需按照以下步骤解决此问题-
/etc/hosts
文件中主节点和从节点的IP地址正确stop-dfs.sh
,否则请删除主/从节点中的所有data
目录,然后运行hdfs namenode -format
和start-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,但是在单个主目录中有数据目录,然后尝试以单个用户身份运行它,则必须将数据节点目录公开。 >