Datanode进程未在Hadoop中运行

时间:2012-08-09 17:57:17

标签: hadoop configuration process

我使用this tutorial设置并配置了多节点Hadoop集群。

当我输入start-all.sh命令时,它会显示正确初始化的所有进程,如下所示:

starting namenode, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-namenode-jawwadtest1.out
jawwadtest1: starting datanode, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-datanode-jawwadtest1.out
jawwadtest2: starting datanode, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-datanode-jawwadtest2.out
jawwadtest1: starting secondarynamenode, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-secondarynamenode-jawwadtest1.out
starting jobtracker, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-jobtracker-jawwadtest1.out
jawwadtest1: starting tasktracker, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-tasktracker-jawwadtest1.out
jawwadtest2: starting tasktracker, logging to /usr/local/hadoop/libexec/../logs/hadoop-root-tasktracker-jawwadtest2.out

但是,当我输入jps命令时,我得到以下输出:

31057 NameNode
4001 RunJar
6182 RunJar
31328 SecondaryNameNode
31411 JobTracker
32119 Jps
31560 TaskTracker

如您所见,没有运行datanode进程。我尝试配置单节点群集但遇到了同样的问题。有人会知道这里可能出现什么问题吗?是否有任何配置文件未在教程中提及或我可能已查看过?我是Hadoop的新手,有点迷失,任何帮助都会受到高度赞赏。

编辑: Hadoop的根数据节点-jawwadtest1.log:

STARTUP_MSG:   args = []
STARTUP_MSG:   version = 1.0.3
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/$
************************************************************/
2012-08-09 23:07:30,717 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loa$
2012-08-09 23:07:30,734 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapt$
2012-08-09 23:07:30,735 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl:$
2012-08-09 23:07:30,736 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl:$
2012-08-09 23:07:31,018 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapt$
2012-08-09 23:07:31,024 WARN org.apache.hadoop.metrics2.impl.MetricsSystemImpl:$
2012-08-09 23:07:32,366 INFO org.apache.hadoop.ipc.Client: Retrying connect to $
2012-08-09 23:07:37,949 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: $
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(Data$
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransition$
        at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNo$
        at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java$
        at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNod$
        at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode($
        at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataN$
        at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.$
        at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1$

2012-08-09 23:07:37,951 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: S$
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at jawwadtest1/198.101.220.90
************************************************************/

30 个答案:

答案 0 :(得分:64)

你需要做这样的事情:

  • bin/stop-all.sh(或2.x系列中的stop-dfs.shstop-yarn.sh
  • rm -Rf /app/tmp/hadoop-your-username/*
  • bin/hadoop namenode -format(或2.x系列中的hdfs

解决方案取自: http://pages.cs.brandeis.edu/~cs147a/lab/hadoop-troubleshooting/。基本上它包括从头开始重新启动,因此请确保您不会通过格式化hdfs来丢失数据。

答案 1 :(得分:16)

我遇到了同样的问题。我创建了一个hdfs文件夹'/ home / username / hdfs',其子目录名称,数据和tmp在hadoop / conf的config xml文件中引用。

当我开始使用hadoop并执行jps时,我找不到datanode,因此我尝试使用 bin / hadoop datanode 手动启动datanode。然后我从错误消息中意识到它有访问dfs.data.dir = / home / username / hdfs / data /的权限问题,这是在其中一个hadoop配置文件中引用的。我所要做的就是停止hadoop,删除 / home / username / hdfs / tmp / * 目录的内容,然后尝试这个命令 - chmod -R 755 /home/username/hdfs/,然后启动hadoop。我可以找到datanode!

答案 2 :(得分:7)

我在运行datanode时遇到了类似的问题。以下步骤很有用。

  1. 在[hadoop_directory] ​​/ sbin目录中使用./stop-all.sh来停止所有正在运行的服务。
  2. 使用rm -r [hadoop_directory] ​​/ tmp([hadoop_directory] ​​/etc/hadoop/core-site.xml中配置的路径)删除tmp目录
  3. sudo mkdir [hadoop_directory] ​​/ tmp(制作新的tmp目录)
  4. 转到* / hadoop_store / hdfs目录,您在其中创建了namenode和datanode作为子目录。 (在[hadoop_directory] ​​/etc/hadoop/hdfs-site.xml中配置的路径)。使用

    rm -r namenode
    
    rm -r datanode
    
  5. 在* / hadoop_store / hdfs目录中使用

    sudo mkdir namenode
    
    sudo mkdir datanode
    
  6. 如果出现权限问题,请使用

       chmod -R 755 namenode 
    
       chmod -R 755 datanode
    
    1. 在[hadoop_directory] ​​/ bin中使用

       hadoop namenode -format (To format your namenode)
      
    2. 在[hadoop_directory] ​​/ sbin目录中使用./start-all.sh或./start-dfs.sh启动服务。
    3. 使用jps检查正在运行的服务。

答案 3 :(得分:6)

我在运行单节点伪分布式实例时遇到了同样的问题。无法弄清楚如何解决它,但一个快速的解决方法是手动启动带有
的数据节点     hadoop-x.x.x/bin/hadoop datanode

答案 4 :(得分:2)

  1. 先停止dfs和纱线。
  2. 删除core-site.xml文件中指定的datanode和namenode目录。
  3. 重新创建目录。
  4. 然后按如下方式重新启动dfs和纱线。

    start-dfs.sh

    start-yarn.sh

    mr-jobhistory-daemon.sh start historyserver

    希望这很好。

答案 5 :(得分:1)

请控制tmp目录属性是否指向core-site.xml中的有效目录

<property>
  <name>hadoop.tmp.dir</name>
  <value>/home/hduser/data/tmp</value>
</property>

如果目录配置错误,则datanode进程将无法正常启动。

答案 6 :(得分:1)

检查hadoop.tmp.dir中的core-site.xml属性是否设置正确。 如果设置它,请导航到此目录,然后删除或清空此目录。 如果您没有设置它,则导航到其默认文件夹/tmp/hadoop-${user.name},同样删除或清空此目录。

答案 7 :(得分:1)

在线下运行命令: -

  1. stop-all.sh(运行全部停止以停止所有hadoop进程)
  2. rm -r / usr / local / hadoop / tmp /(您在hadoop / conf / core-site.xml中配置的Hadoop tmp目录)
  3. sudo mkdir / usr / local / hadoop / tmp(再次制作同一目录)
  4. hadoop namenode -format(格式化你的名字节点)
  5. start-all.sh(运行全部启动以启动所有hadoop进程)
  6. JPS(它将显示正在运行的进程)

答案 8 :(得分:1)

按照以下步骤操作,您的datanode将重新开始。

  1. 停止dfs。
  2. 打开hdfs-site.xml
  3. 再次从hdfs-site.xml和-format namenode中删除data.dir和name.dir属性。
  4. 然后删除hadoopdata目录并在hdfs-site.xml中添加data.dir和name.dir,并再次格式化namenode。
  5. 然后再次启动dfs。

答案 9 :(得分:1)

停止所有服务 - ./stop-all.sh 格式化所有主站和从站的所有hdfs tmp目录。不要忘记从slave格式化。

格式化namenode。(hadoop namenode -format)

现在在namenode上启动服务。 ./bin/start-all.sh

这对我启动datanode服务起了不同作用。

答案 10 :(得分:1)

需要遵循3个步骤。

(1)需要转到日志并查看最新的日志(In hadoop-    2.6.0 /日志/ Hadoop的用户数据管理部-ubuntu.log)

如果错误为

  

java.io.IOException:/ home / kutty / work / hadoop2data / dfs / data中的不兼容的clusterID: namenode clusterID = CID-c41df580-e197-4db6-a02a-a62b71463089 ; datanode clusterID = CID-a5f4ba24-3a56-4125-9137-fa77c5bb07b1

即。 namenode cluster id和datanode cluster id不相同。

(2)现在复制上面错误 namenode clusterID,即CID-c41df580-e197-4db6-a02a-a62b71463089

(3)用hadoopdata / dfs / data / current / version中的Namenode集群ID替换Datanode集群ID

  

丛集编号= <强> CID-c41df580-e197-4db6-a02a-a62b71463089

重启Hadoop。将运行DataNode

答案 11 :(得分:1)

第1步: - Stop-all.sh

第2步: - 走到这条道路

cd /usr/local/hadoop/bin

步骤3: - 运行该命令 hadoop datanode

现在DataNode工作

答案 12 :(得分:0)

在Mac os(伪分布式模式)的情况下:

打开终端

  1. 停止dfs。 'sbin / stop-all.sh'。
  2. cd /tmp
  3. rm -rf hadoop*
  4. 导航到hadoop目录。格式化hdfs。 bin/hdfs namenode -format
  5. sbin/start-dfs.sh

答案 13 :(得分:0)

删除hadoop文件夹下的datanode,然后重新运行start-all.sh

答案 14 :(得分:0)

一旦我无法在hadoop中使用jps查找数据节点,则删除了 hadoop安装目录(/opt/hadoop-2.7.0/hadoop_data/dfs/data中的当前文件夹,并使用start-all.sh和jps重新启动hadoop。

这次我可以找到数据节点,并且再次创建了当前文件夹。

答案 15 :(得分:0)

得到了同样的错误。尝试多次启动和停止dfs,清除了之前答案中提到的所有目录,但没有任何帮助。

仅在重新启动操作系统并从头开始配置Hadoop后才解决该问题。 (从头开始配置Hadoop而不重新启动没有工作)

答案 16 :(得分:0)

按照以下步骤操作,您的datanode将重新开始。

1)停止dfs。 2)打开hdfs-site.xml 3)再次从hdfs-site.xml和-format namenode中删除data.dir和name.dir属性。

4)然后再次启动dfs。

答案 17 :(得分:0)

我已经应用了一些混合配置,并且对我有用。
第一>>
停止使用Hadoop所有服务 ${HADOOP_HOME}/sbin/stop-all.sh

第二>>
检查位于${HADOOP_HOME}/etc/hadoop/mapred-site.xml上的mapred-site.xml,并将localhost更改为master

第三>>
删除hadoop创建的临时文件夹
rm -rf //path//to//your//hadoop//temp//folder

第四>>
在temp上添加递归权限。
sudo chmod -R 777 //path//to//your//hadoop//temp//folder

第五>>
现在,再次启动所有服务。然后首先检查包括datanode在内的所有服务正在运行。 enter image description here

答案 18 :(得分:0)

删除$hadoop_User/dfsdata$hadoop_User/tmpdata下的文件 然后运行:

hdfs namenode -format

最终运行:

start-all.sh

然后您的问题得到解决。

答案 19 :(得分:0)

即使在删除重建目录后,datanode也没有启动。 所以,我使用bin/hadoop datanode手动启动了它 它没有得出任何结论。我用相同的用户名打开了另一个终端并执行了jps,它向我展示了正在运行的datanode进程。 它正在工作,但我只需将未完成的终端保持在旁边。

答案 20 :(得分:0)

  1. 我在conf / core-site.xml
  2. 中配置了hadoop.tmp.dir
  3. 我在conf / hdfs-site.xml
  4. 中配置了dfs.data.dir
  5. 我在conf / hdfs-site.xml
  6. 中配置了dfs.name.dir
  7. 删除了“/ tmp / hadoop- /”目录下的所有内容
  8. dfs.data.dir

    下列出的目录的文件权限从777更改为755

    数据节点开始工作。

答案 21 :(得分:0)

如果格式化tmp目录不起作用,请尝试:

  1. 首先停止所有实体,如namenode,datanode等(你会的 有一些脚本或命令来做到这一点)
  2. 格式化tmp目录
  3. 转到/ var / cache / hadoop-hdfs / hdfs / dfs /并删除所有内容 在手动目录中
  4. 现在再次格式化您的namenode
  5. 启动所有实体,然后使用jps命令确认 datanode已经启动
  6. 现在运行您拥有的任何应用程序
  7. 希望这有帮助。

答案 22 :(得分:0)

您需要检查:

/ app / hadoop / tmp / dfs / data / current / VERSION和/ app / hadoop / tmp / dfs / name / current / VERSION ---

在这两个文件中,以及名称节点和datanode的名称空间ID。

当且仅当数据节点的NamespaceID与名称节点的NamespaceID相同时,您的datanode才会运行。

如果不同,请使用vi编辑器或gedit将namenode NamespaceID复制到Datanode的NamespaceID并保存并重新运行deamons,它将完美运行。

答案 23 :(得分:0)

这是针对较新版本的Hadoop(我正在运行2.4.0)

  • 在这种情况下,请停止群集sbin / stop-all.sh
  • 然后转到/ etc / hadoop获取配置文件。

在文件中:hdfs-site.xml 注意与之对应的目录路径 dfs.namenode.name.dir dfs.namenode.data.dir

  • 递归删除这两个目录(rm -r)。
  • 现在通过bin / hadoop namenode -format
  • 格式化namenode
  • 最后是sbin / start-all.sh

希望这有帮助。

答案 24 :(得分:0)

您可以设置另一个,而不是删除&#34; hadoop tmp目录&#34;下的所有内容。例如,如果您的core-site.xml具有此属性:

<property>
  <name>hadoop.tmp.dir</name>
  <value>/home/hduser/data/tmp</value>
</property>

您可以将其更改为:

<property>
  <name>hadoop.tmp.dir</name>
  <value>/home/hduser/data/tmp2</value>
</property>

然后scp core-site.xml到每个节点,然后&#34; hadoop namenode -format&#34;,然后重新启动hadoop。

答案 25 :(得分:0)

我在日志文件中有关于此问题的详细信息,如下所示: “dfs.data.dir中的目录无效:/ home / hdfs / dnman1的权限不正确,预期: rwxr-xr-x ,而实际:rwxrwxr-x” 从那里我发现我的文件夹的datanote文件权限是777。我纠正到755,它开始工作。

答案 26 :(得分:0)

试试这个

  1. stop-all.sh
  2. vi hdfs-site.xml
  3. 更改为属性dfs.data.dir
  4. 指定的值
  5. format namenode
  6. start-all.sh

答案 27 :(得分:-1)

    mv /usr/local/hadoop_store/hdfs/datanode /usr/local/hadoop_store/hdfs/datanode.backup

    mkdir /usr/local/hadoop_store/hdfs/datanode

    hadoop datanode OR start-all.sh

    jps

答案 28 :(得分:-1)

datanode.log中的错误

$ more /usr/local/hadoop/logs/hadoop-hduser-datanode-ubuntu.log

节目:

java.io.IOException: Incompatible clusterIDs in /usr/local/hadoop_tmp/hdfs/datanode: namenode clusterID = CID-e4c3fed0-c2ce-4d8b-8bf3-c6388689eb82; datanode clusterID = CID-2fcfefc7-c931-4cda-8f89-1a67346a9b7c

解决方案:停止群集&amp;发出以下命令&amp;然后再次启动你的集群。

sudo rm -rf  /usr/local/hadoop_tmp/hdfs/datanode/*

答案 29 :(得分:-1)

  • 删除数据和名称在dfs中的文件。

在我的情况下,我在Windows上有hadoop,在C:/上,这个文件根据core-site.xml等,它在tmp / Administrator / dfs / data ... name等,所以擦掉它

然后,namenode -format。然后再试一次,