首页 文章

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

提问于
浏览
17

我已经 Build 了一个多节点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)

核心的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上的配置文件:

核心的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

和datanode上的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-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)

节点管理器(50070)的Web UI显示有0个活动节点和0个死节点,并且使用的dfs是100%

I have also disabled 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

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

11 回答

  • 0

    两件事对我有用,

    STEP 1 : stop hadoop and clean temp files from hduser

    sudo rm -R /tmp/*
    

    also, you may need to delete and recreate /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
    

    STEP 2: format namenode

    hdfs namenode -format
    

    现在,我可以看到DataNode

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

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

    现在它正在删除datanode文件夹中的文件并重新启动服务 .

    stop-all.sh rm -rf / usr / local / hadoop_store / hdfs / datanode / * start-all.sh

  • 5

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

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

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

  • 0

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

    service firewalld stop
    chkconfig firewalld off
    
  • 0

    我有同样的错误 . 我没有权限hdfs文件系统 . 所以我给了我的用户许可:

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

    在我的情况下,我错过了在MacOS上使用HomeBrew安装的 hdfs-site.xml (Hadoop 3.0.0)中的必要属性 . ( 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>
    
  • 0

    可能是因为数据节点的集群ID与名称节点或节点管理器不匹配 . 可以在namenode和datanode中找到的VERSION文件中看到群集ID .

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

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

    这应该可以解决你的问题 .

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

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

    $ rm -rvf /hadoop2/datanode/*
    

    然后重新启动服务如果您重新格式化namenode,请在此步骤之前执行此操作 . 每次重新格式化namenode时,它都会获得一个新ID,该ID是随机生成的,与datanode中的旧ID不匹配

    所以每次都遵循这个顺序

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

  • 19

    主机和从机上的core-site.xml中的属性的值必须指向主机 . 所以它会是这样的:

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

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

  • -1

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

    在清理之前,没有出现datanode

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

    清理完毕后

    sudo rm -rf /tmp/*
    

    它对我有用

    89200 Jps
    88859 DataNode
    
  • 1

    @mustafacanturk解决方案,禁用防火墙为我工作 . 我认为datanode启动是因为它们在运行jps时出现但在尝试上传文件时我收到了消息"0 nodes running" . 事实上,由于防火墙,(http://nn1:50070)的Web界面都没有工作 . 我在安装hadoop时禁用了防火墙但由于某种原因它已经启动了 . Neverthelsess有时清理或重新创建临时文件夹(hadoop.tmp.dir)甚至dfs.data.dir和dfs.namenode.name.dir文件夹并重新格式化名称服务器是解决方案 .

  • 3

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

    2)删除datanode中的所有文件rm -rf / usr / local / hadoop_store / hdfs / datanode / *

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

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

    希望这应该工作!

相关问题