DataNode不在单节点hadoop 2.6.0中启动

时间:2015-03-20 12:45:15

标签: hadoop hadoop2 hadoop-plugins

我在运行Ubuntu 14.04LTS的笔记本电脑上安装了hadoop 2.6.0。我通过运行start-all.sh成功启动了hadoop守护程序并成功运行了WourdCount示例,然后我尝试运行一个不能与我一起工作的jar示例,因此我决定使用{{1}格式化并重新开始但是当我使用hadoop namenode -format启动所有守护进程时,jps所有守护进程运行但不运行datanode,如下所示:

start-dfs.sh && start-yarn.sh

如何解决?

10 个答案:

答案 0 :(得分:51)

我遇到过这个问题,很容易解决。您的datanode没有启动,因为在您的namenode和datanode开始运行后,您再次格式化了namenode。这意味着您已从namenode清除元数据。现在,为了运行字数而存储的文件仍然在datanode中,并且datanode不知道在哪里发送块报告,因为格式化了namenode所以它不会启动。

以下是修复它所需要做的事情。 停止所有Hadoop服务(stop-all.sh)并关闭所有活动的ssh连接。

cat /usr/local/hadoop/etc/hadoop/hdfs-site.xml

此步骤很重要,请参阅datanode的数据存储位置。它是与datanode.data.dir关联的值。对我来说,它是/ usr / local / hadoop / hadoop_data / hdfs / datanode。打开终端并导航到上面的目录并删除该目录下名为current的目录。确保您只删除“当前”目录。

sudo rm -r /usr/local/hadoop/hadoop_data/hdfs/datanode/current

现在格式化namenode并检查一切是否正常。

hadoop namenode -format
如果它要求你做任何事情,请说“是”。

jps

希望我的回答能解决问题。如果它不让我知道。

小建议:不要格式化你的名字节点。没有namenode,就无法重建数据。如果你的wordcount没有运行那是另一个问题。

答案 1 :(得分:5)

您只需要删除DataNode文件夹的所有内容并使用以下命令格式化Datanode

ManyToManyField

答案 2 :(得分:3)

格式化namenode时我遇到了这个问题。我为解决这个问题所做的是:

  1. 找到您的dfs.name.dir位置。例如,您的dfs.name.dir/home/hadoop/hdfs
  2. (a)现在去/home/hadoop/hdfs/current

    (b)搜索文件VERSION。使用文本编辑器打开它。

    (c)会有一行namespaceID=122684525(122684525是我的身份证,你的身份会有所不同)。请注意ID。

    1. 现在找到您的hadoop.tmp.dir位置。我的是/home/hadoop/temp
    2. (a)转到/home/hadoop/temp/dfs/data/current

      (b)搜索文件VERSION并使用文本编辑器打开它。

      (c)将有一行namespaceID=。此文件中的namespaceID和前一个必须相同。

      (d)这是我的datanode未启动的主要原因。我让他们都一样,现在datanode开始很好。

        

      注意:将namespaceID从/home/hadoop/hdfs/current/VERSION复制到。{   /home/hadoop/temp/dfs/data/current/VERSION。不要反过来。

      1. 现在做start-dfs.sh && start-yarn.sh。 Datanode将启动。

答案 3 :(得分:3)

即使我遇到同样的问题并检查了日志,发现以下错误

异常 - Datanode日志 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode:secureMain中的异常 java.io.IOException:dfs.datanode.data.dir中的所有目录都无效:" / usr / local / hadoop_store / hdfs / datanode /

使用以下命令解决问题

sudo chown -R hduser:hadoop / usr / local / hadoop_store

注意 - 我在路径/ usr / local / hadoop_store

下创建了namenode和datanode

答案 4 :(得分:2)

由于格式化namenode(hadoop namenode -format)而未停止dfs和yarn守护程序,因此出现上述问题。在格式化namenode时,会出现下面给出的问题,然后按Y键。  在存储目录/ tmp / hadoop-root / dfs / name中重新格式化文件系统? (Y或N)

解决方案,         您需要删除dfs.name.dir的当前(目录名)目录中的文件,您在hdfs.site.xml中提到。在我的系统中,dfs.name.dir位于/ tmp / hadoop-root / dfs / name / current中。         rm -r / tmp / hadoop-root / dfs / name / current 通过使用上面的注释,我删除了当前目录中的文件。确保你只删除了“当前”目录。在停止dfs和yarn守护进程(stop-dfs.sh& stop-yarn.sh)之后,格式化namenode。现在datanode将正常启动!!

答案 5 :(得分:0)

在core-site.xml上检查临时目录的绝对路径,如果未正确指向或未创建(mkdir)。数据节点无法启动。

答案 6 :(得分:0)

在yarn-site.xml中添加以下属性

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>

答案 7 :(得分:0)

不是正确的方法。但肯定有用〜

从datanode,namenode和tmp文件夹中删除文件。在这些文件/文件夹中创建的任何文件/文件夹都由hadoop拥有,并且可能对最后一次运行的datanode详细信息有一些参考,这些详细信息可能已失败或被锁定,因为datanode在下一次尝试时不会为其加注星标

答案 8 :(得分:0)

我遇到了同样的问题( DataNode&amp; TaskTracker不会出现)。

解决: 删除每个“当前”子目录:数据,名称和名称二级,以解决在start-all.sh,然后jps

时无法显示的DataNode / taskTracker

(我的 dfs.name.dir位置是:/ home / training / hadoop-temp / dfs / data / current; / home / training / hadoop-temp / dfs / name / current; /家庭/训练/ Hadoop的温度/ DFS / namesecondary /电流

确保停止服务: stop-all.sh

1。转到data,name,namesecondary和remove / delete下的每个“当前”子目录(例如:rm -r name / current)

2. 然后格式化:hadoop namenode -format

3. 目前在/ home / training / hadoop-temp / dfs / data / current下的mkdir

4. 从/ home / training / hadoop-temp / dfs / name / current获取目录和内容并复制到/ data / current目录

示例:文件位于:

/家庭/训练/ Hadoop的温度/ DFS /名称/电流

[培训@ CentOS当前] $ ls -l <​​/ p>

-rw-RW-R--。 1培训培训9901 Sep 25 01:50编辑

-rw-RW-R--。 1培训培训582 Sep 25 01:50 fsimage

-rw-RW-R--。 1培训培训8月25日01:50 fstime

-rw-RW-R--。 1培训培训101 Sep 25 01:50 VERSION

5. 将VERSION中的storageType = NAME_NODE更改为刚刚复制的data / current / VERSION中的storageType = DATA_NODE。

<强> BEFORE:

[training @ CentOS dfs] $ cat data / current / VERSION

名称空间ID = 1018374124

CTIME = 0

storageType = NAME_NODE

layoutVersion = -32

<强> AFTER:

[training @ CentOS dfs] $ cat data / current / VERSION

名称空间ID = 1018374124

CTIME = 0

storageType = DATA_NODE

layoutVersion = -32

6。确保下面的每个子目录都有与名称/当前对数据相同的文件,名称,名称,次要

[training @ CentOS dfs] $ pwd

/家庭/训练/ Hadoop的温度/ DFS /

[training @ CentOS dfs] $ ls -l <​​/ p> 总共12

drwxr-XR-X。 5培训培训4096 Sep 25 01:29数据

drwxrwxr-X。 5培训培训4096 Sep 25 01:19名称

drwxrwxr-X。 5培训培训4096 Sep 25 01:29 namesecondary

7。现在启动服务:start-all.sh 键入时应该会看到所有5个服务:jps

答案 9 :(得分:0)

我正在使用hadoop-2.6.0。我解决了使用:

1.删除其中的所有文件 的/ usr /本地/ hadoop_store / HDFS

命令:sudo rm -r / usr / local / hadoop_store / hdfs / *

2.Format hadoop namenode

命令:hadoop namenode -format

3.转到.... / sbin目录(cd / usr / local / hadoop / sbin)

start-all.sh

  1. 使用命令==&gt; hduser @ abc-3551:/ $ jps
  2. 以下服务现在就开始了:

    19088 Jps
    18707 ResourceManager
    19043 NodeManager
    18535 SecondaryNameNode
    18329 DataNode
    18159 NameNode