Ubuntu 有0个datanode正在运行,此操作中没有排除任何节点
我已经建立了一个多节点Hadoop集群。NameNode和Secondary NameNode在同一台计算机上运行,并且集群只有一个Datanode。所有节点都配置在AmazonEC2机器上 以下是主节点上的配置文件: core-site.xmlUbuntu 有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
<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 clusterId和da
<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