Ubuntu 有0个datanode正在运行,此操作中没有排除任何节点

Ubuntu 有0个datanode正在运行,此操作中没有排除任何节点,ubuntu,hadoop,amazon-ec2,hdfs,hadoop2,Ubuntu,Hadoop,Amazon Ec2,Hdfs,Hadoop2,我已经建立了一个多节点Hadoop集群。NameNode和Secondary NameNode在同一台计算机上运行,并且集群只有一个Datanode。所有节点都配置在AmazonEC2机器上 以下是主节点上的配置文件: core-site.xml <configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value&g

我已经建立了一个多节点Hadoop集群。NameNode和Secondary NameNode在同一台计算机上运行,并且集群只有一个Datanode。所有节点都配置在AmazonEC2机器上

以下是主节点上的配置文件: core-site.xml

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://54.68.218.192:10001</value>
</property>
</configuration>
和datanode上的JP:

2883 DataNode
3496 Jps
3381 NodeManager
在我看来这是对的

现在,当我尝试运行put命令时:

hadoop fs -put count_inputfile /test/input/
它给了我以下错误:

put: File /count_inputfile._COPYING_ could only be replicated to 0 nodes instead of minReplication (=1).  There are 0 datanode(s) running and no node(s) are excluded in this operation.
datanode上的日志显示以下内容:

5696 NameNode
6504 Jps
5905 SecondaryNameNode
6040 ResourceManager
hadoop-datanode log
INFO org.apache.hadoop.ipc.Client: Retrying connect to server:      54.68.218.192/54.68.218.192:10001. Already tried 8 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
纱线节点管理器日志:

INFO org.apache.hadoop.ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8031. Already tried 9 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)
节点管理器(50070)的web UI显示有0个活动节点和0个死节点,使用的dfs为100%

我还禁用了IPV6。

在一些网站上,我发现我还应该编辑
/etc/hosts
文件。我还编辑了它们,它们看起来像这样:

127.0.0.1 localhost
172.31.25.151 ip-172-31-25-151.us-west-2.compute.internal
172.31.25.152 ip-172-31-25-152.us-west-2.compute.internal
<property>
     <name>fs.default.name</name>
     <value>hdfs://master:9000</value>
</property>

为什么我仍然出现错误?

@Learner,
我遇到了这样一个问题,即Namenode的web UI中没有显示datanodes。通过Hadoop 2.4.1中的这些步骤解决了这个问题

对所有节点(主节点和从节点)执行此操作

1。删除所有临时文件(默认情况下在/tmp中)-
sudorm-R/tmp/*

2.现在,尝试使用
ssh通过
ssh连接到所有节点username@host
并使用
ssh copy id-i~/.ssh/id\u rsa.pub在主控中添加密钥username@host
允许从属设备不受限制地访问主设备(不这样做可能是拒绝连接的问题)。

3.使用hadoop namenode-Format格式化namenode,然后尝试重新启动守护进程

有两件事对我有效

步骤1:停止hadoop并从
hduser清理临时文件

sudo rm -R /tmp/*
/app/hadoop/tmp
(主要是当我将hadoop版本从
2.2.0
更改为
2.7.0
时)

步骤2:格式化名称节点

hdfs namenode -format
现在,我可以看到DataNode了

hduser@prayagupd:~$ jps
19135 NameNode
20497 Jps
19477 DataNode
20447 NodeManager
19902 SecondaryNameNode
20106 ResourceManager

在不当关闭节点后,我也遇到了同样的问题。在UI中也选中了datanode,但未列出

现在,它在从datanode文件夹中删除文件并重新启动服务后工作

stop-all.sh

rm-rf/usr/local/hadoop\u store/hdfs/datanode/*

start-all.sh


这可能是因为datanodes的集群ID与namenodes或节点管理器不匹配。集群ID可以在namenode和datanodes中找到的版本文件中看到

当格式化namenode,然后重新启动集群,但datanodes仍尝试使用以前的clusterID进行连接时,就会发生这种情况。要成功连接,您需要正确的IP地址以及节点上匹配的群集ID

因此,请尝试重新格式化namenode和datanodes,或者在新创建的文件夹上配置datanodes和namenode

那应该能解决你的问题

从当前datanodes文件夹中删除文件也将删除旧版本文件,并在重新连接namenode时请求新版本文件

示例:配置中的datanode目录是/hadoop2/datanode

$ rm -rvf /hadoop2/datanode/*
然后重新启动服务 如果要重新格式化namenode,请在执行此步骤之前执行此操作。每次重新格式化namenode时,它都会获得一个新ID,该ID是随机生成的,并且与datanodes中的旧ID不匹配

所以每次都按照这个顺序

如果设置namenode的格式 然后删除datanode目录的内容或在新创建的目录上配置datanode 然后启动namenode和datanodes


在我的情况下,firewalld服务正在运行。这是默认配置。它不允许节点之间的通信。我的hadoop集群是一个测试集群。因此,我停止了服务。如果您的服务器正在生产中,您应该允许firewalld上的hadoop端口,而不是

service firewalld stop
chkconfig firewalld off

我也犯了同样的错误。我没有访问hdfs文件系统的权限。因此,我向我的用户授予权限:

chmod 777 /usr/local/hadoop_store/hdfs/namenode
chmod 777 /usr/local/hadoop_store/hdfs/datanode

主计算机和从计算机上core-site.xml中属性{fs.default.name}的值必须指向主计算机。所以会是这样的:

127.0.0.1 localhost
172.31.25.151 ip-172-31-25-151.us-west-2.compute.internal
172.31.25.152 ip-172-31-25-152.us-west-2.compute.internal
<property>
     <name>fs.default.name</name>
     <value>hdfs://master:9000</value>
</property>

fs.default.name
hdfs://master:9000
其中master是/etc/hosts文件中指向主节点的主机名。

1)首先使用命令停止所有服务 stop-all.sh

2) 删除datanode内的所有文件 rm-rf/usr/local/hadoop\u store/hdfs/datanode/*

3) 然后使用命令启动所有服务 start-all.sh

您可以使用jps命令检查是否所有服务都在运行


希望这能奏效

在我的情况下,我在MacOS上使用自制软件安装的
hdfs site.xml
(Hadoop 3.0.0)中缺少必要的属性。(文件://
不是打字错误。)


dfs.namenode.name.dir
file:///usr/local/Cellar/hadoop/hdfs/namenode
dfs.datanode.data.dir
file:///usr/local/Cellar/hadoop/hdfs/datanode

您是否尝试过清除/tmp文件夹

在清理之前,没有出现datanode

86528 SecondaryNameNode
87719 Jps
86198 NameNode
78968 RunJar
79515 RunJar
63964 RunNiFi
63981 NiFi
清理后

sudo rm -rf /tmp/*
它对我有用

89200 Jps
88859 DataNode

@mustafacanturk解决方案,禁用防火墙对我来说很有效。 我认为datanodes启动是因为它们在运行jps时出现,但在尝试上载文件时,我收到消息“0 nodes running”。 事实上,由于防火墙的原因,()的web接口都无法工作。 我在安装hadoop时禁用了防火墙,但出于某种原因,它已启动。
尽管有时清理或重新创建临时文件夹(hadoop.tmp.dir),甚至是dfs.data.dir和dfs.namenode.name.dir文件夹,并重新设置名称服务器是解决方案。

也许防火墙的服务还没有停止。

我在我的单节点集群中也面临同样的问题

为了解决此问题,我已执行了以下步骤:
1.检查logs目录下的datanode日志,发现namenode clusterIdda
<property>
     <name>fs.default.name</name>
     <value>hdfs://master:9000</value>
</property>
86528 SecondaryNameNode
87719 Jps
86198 NameNode
78968 RunJar
79515 RunJar
63964 RunNiFi
63981 NiFi
sudo rm -rf /tmp/*
89200 Jps
88859 DataNode
adilazh1@master:~$ sudo cat /etc/hosts
[sudo] contraseña para adilazh1:
127.0.0.1       localhost
192.168.56.100  master

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.56.101  slave1
192.168.56.102  slave2
127.0.0.1       localhost
192.168.56.101  slave1

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.56.100  master
192.168.56.102  slave2