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

w51jfk4q  于 2021-06-02  发布在  Hadoop
关注(0)|答案(14)|浏览(448)

我已经建立了一个多节点hadoop集群。namenode和secondary namenode在同一台计算机上运行,并且集群只有一个datanode。所有节点都配置在amazonec2机器上。

以下是主节点上的配置文件:

masters
54.68.218.192 (public IP of the master node)

slaves
54.68.169.62 (public IP of the slave node)

core-site.xml文件

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

mapred-site.xml文件

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

hdfs-site.xml文件

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/datanode</value>
</property>
</configuration>

现在是datanode上的配置文件:

core-site.xml文件

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://54.68.218.192:10001</value>
</property>
</configuration>

mapred-site.xml文件

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>54.68.218.192:10002</value>
</property>
</configuration>

hdfs-site.xml文件

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/datanode</value>
</property>
</configuration>

在namenode上运行的jps提供以下信息:

5696 NameNode
6504 Jps
5905 SecondaryNameNode
6040 ResourceManager

和数据节点上的jps:

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上的日志显示如下:

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)

Yarn管理员日志:

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

为什么我还在犯错误?

4zcjmb1e

4zcjmb1e1#

@mustafacanturk解决方案,禁用防火墙为我工作。我以为datanodes启动是因为它们在运行jps时出现,但当尝试上载文件时,我收到消息“0 nodes running”。事实上,web界面(http://nn1:50070)正在工作,因为防火墙。我在安装hadoop时禁用了防火墙,但是由于某些原因它被打开了。不过,有时清理或重新创建临时文件夹(hadoop.tmp.dir)甚至dfs.data.dir和dfs.namenode.name.dir文件夹并重新格式化名称服务器是解决方案。

fnatzsnv

fnatzsnv2#

我得到了同样的错误,在我的情况下,这是由于一个错误的配置的主机文件,首先我修改了主机节点的主机文件添加的IP的奴隶,也在每个数据节点,我修改了主机文件,以表明IP的名称节点和其余的奴隶。
我也这么想

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

示例slave1的hosts文件

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
kqhtkvqz

kqhtkvqz3#

有两件事对我有用,
步骤1:停止hadoop并从中清除临时文件 hduser ```
sudo rm -R /tmp/*

此外,您可能需要删除并重新创建 `/app/hadoop/tmp` (主要是当我将hadoop版本从 `2.2.0` 至 `2.7.0` )

sudo rm -r /app/hadoop/tmp
sudo mkdir -p /app/hadoop/tmp
sudo chown hduser:hadoop /app/hadoop/tmp
sudo chmod 750 /app/hadoop/tmp

第2步:格式化namenode

hdfs namenode -format

现在,我可以看到datanode

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

bsxbgnwa

bsxbgnwa4#

在我的情况下,我错过了必要的财产内 hdfs-site.xml (hadoop 3.0.0)在macos上使用自制软件安装(这个 file:/// 不是打字错误。)

<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///usr/local/Cellar/hadoop/hdfs/namenode</value>
</property>

<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:///usr/local/Cellar/hadoop/hdfs/datanode</value>
</property>
wecizke3

wecizke35#

我在单节点集群中也面临同样的问题。
为了解决这个问题,我采取了以下步骤:
1检查logs目录下的datanode日志,发现namenode clusterid和datanode clusterid不同。
2使datanode目录为空:
rm-rvf/hadoop/hdfs/datanode/*
三。停止所有.sh
4hdfs namenode-格式
5全部启动.sh
6日本
27200节点管理器
26129名称节点
26595次要名称节点
5539grad蒙
2355主
2693grad蒙
27389日元
26846资源管理器
26334数据节点
这对我有用。

dly7yett

dly7yett6#

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

service firewalld stop
chkconfig firewalld off
t1qtbnec

t1qtbnec7#

可能防火墙的服务还没有停止。

sqxo8psd

sqxo8psd8#

@学习者,
我遇到了这样一个问题:namenode的webui中没有显示datanodes。通过hadoop2.4.1中的这些步骤解决了这个问题。
对所有节点(主节点和从节点)执行此操作
1删除所有临时文件(默认情况下在/tmp中)- sudo rm -R /tmp/* .
2现在尝试通过连接到所有节点 ssh 通过使用 ssh username@host 并使用 ssh-copy-id -i ~/.ssh/id_rsa.pub username@host 允许从机不受限制地访问主机(不这样做可能是拒绝连接的问题)。
三。使用格式化namenode hadoop namenode -format 尝试重新启动守护进程。

ny6fqffe

ny6fqffe9#

我有同样的问题后,不当关闭节点。在ui中也选中了datanode,但没有列出。
现在它在从datanode文件夹中删除文件并重新启动服务后工作。
停止所有.sh
rm-rf/usr/local/hadoop\存储/hdfs/datanode/*
全部启动.sh

pbpqsu0x

pbpqsu0x10#

1) 首先使用stop-all.sh命令停止所有服务
2) 删除datanode rm-rf/usr/local/hadoop\u store/hdfs/datanode中的所有文件/*
3) 然后使用start-all.sh命令启动所有服务
您可以使用jps命令检查是否所有服务都在运行
希望这能奏效!!!

rsl1atfo

rsl1atfo11#

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

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

pqwbnv8z12#

您是否尝试过清除/tmp文件夹。
在清理之前,没有出现数据节点

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

清理后

sudo rm -rf /tmp/*

它对我有用

89200 Jps
88859 DataNode
ix0qys7i

ix0qys7i13#

这可能是因为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和datanode

ff29svar

ff29svar14#

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

<property>
     <name>fs.default.name</name>
     <value>hdfs://master:9000</value>
</property>

其中master是/etc/hosts文件中指向主节点的主机名。

相关问题