每次我跑:
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)
我有完全相同的问题,当我检查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
并重新启动机器。问题消失了。
嗯...
你检查防火墙了吗?
当我使用hadoop时,我关闭防火墙(iptables -F,在所有节点中)
然后再试一次。
请检查datanode日志。它将在无法向namenode报告时记录错误。如果您发布这些错误,人们将能够提供帮助..
当我们重新启动集群时,它发生在我们身上。但过了一会儿,自动检测到数据节点。可能是因为块报告延迟时间属性。
通常,datanode中存在名称空间ID问题的错误。因此,从master中删除名称dir,并从datanode中删除数据目录。现在格式化datanode并尝试start-dfs。该报告通常需要一些时间来反映所有数据节点。即使我得到0个数据节点,但经过一段时间后,主人检测到了奴隶。
我有同样的问题,我刚解决了。
/ etc /所有节点的主机应如下所示:
127.0.0.1 localhost
xxx.xxx.xxx.xxx master
xxx.xxx.xxx.xxx slave-1
xxx.xxx.xxx.xxx slave-2
刚刚按照以下步骤解决了问题 -
/etc/hosts
文件中主节点和从节点的IP地址正确无误stop-dfs.sh
,删除主/从节点中的所有data
目录,然后运行hdfs namenode -format
和start-dfs.sh
。这应该重新创建hdfs并修复问题只是格式化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
这解决了这个问题。