正在运行0个数据节点,并且此操作中不排除任何节点

Lea*_*ner 22 ubuntu hadoop amazon-ec2 hdfs hadoop2

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

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

masters
54.68.218.192 (public IP of the master node)

slaves
54.68.169.62 (public IP of the slave node)
Run Code Online (Sandbox Code Playgroud)

核心的site.xml

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)

mapred-site.xml中

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

现在是datanode上的配置文件:

核心的site.xml

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://54.68.218.192:10001</value>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)

mapred-site.xml中

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>54.68.218.192:10002</value>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

在Namenode上运行的jps给出以下内容:

5696 NameNode
6504 Jps
5905 SecondaryNameNode
6040 ResourceManager
Run Code Online (Sandbox Code Playgroud)

和datanode上的jps:

2883 DataNode
3496 Jps
3381 NodeManager
Run Code Online (Sandbox Code Playgroud)

对我来说似乎是对的.

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

hadoop fs -put count_inputfile /test/input/
Run Code Online (Sandbox Code Playgroud)

它给了我以下错误:

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.
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

yarn-nodemanager日志:

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)
Run Code Online (Sandbox Code Playgroud)

节点管理器(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
Run Code Online (Sandbox Code Playgroud)

为什么我仍然在犯这个错误?

pra*_*upd 26

两件事对我有用,

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

sudo rm -R /tmp/*
Run Code Online (Sandbox Code Playgroud)

此外,您可能需要删除并重新创建 /app/hadoop/tmp(主要是当我将hadoop版本更改2.2.02.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
Run Code Online (Sandbox Code Playgroud)

第2步:格式化namenode

hdfs namenode -format
Run Code Online (Sandbox Code Playgroud)

现在,我可以看到DataNode

hduser@prayagupd:~$ jps
19135 NameNode
20497 Jps
19477 DataNode
20447 NodeManager
19902 SecondaryNameNode
20106 ResourceManager
Run Code Online (Sandbox Code Playgroud)

  • 哇!好答案 (2认同)

Tam*_*n S 10

不正确关闭节点后,我遇到了同样的问题.同样在UI中检查未列出datanode.

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

stop-all.sh

rm -rf/usr/local/hadoop_store/hdfs/datanode/*

start-all.sh

  • 为我工作。但我的文件夹不同。rm -rf /tmp/hadoop-anshul/dfs/data/* (2认同)

kis*_*747 5

@Learner,
我在Namenode的web UI中没有显示datanode的这个问题.通过Hadoop 2.4.1中的这些步骤解决了这个问题.

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

1.删​​除所有临时文件(默认情况下在/ tmp中) - sudo rm -R /tmp/*.
2.现在尝试通过在主服务器中ssh使用ssh username@host和添加密钥来连接到所有节点,ssh-copy-id -i ~/.ssh/id_rsa.pub username@host以便向主服务器提供对服务器的无限制访问(不这样做可能是拒绝连接的问题).
3.使用namenode格式化hadoop namenode -format并尝试重新启动守护进程.


小智 5

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

service firewalld stop
chkconfig firewalld off
Run Code Online (Sandbox Code Playgroud)