Datanode进程未在Hadoop中运行

问题描述 投票:34回答:29

我使用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-root-datanode-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
************************************************************/
hadoop configuration process
29个回答
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
投票

第1步: - Stop-all.sh

第2步: - 走到这条路

cd /usr/local/hadoop/bin

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

现在DataNode工作


1
投票

需要遵循3个步骤。

(1)需要转到日志并检查最新的日志(在hadoop-2.6.0 / logs / hadoop-user-datanode-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集群id和datanode集群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


1
投票

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


0
投票

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


0
投票

您可以设置另一个,而不是删除“hadoop tmp目录”下的所有内容。例如,如果您的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到每个节点,然后“hadoop namenode -format”,然后重启hadoop。


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

希望这可以帮助。


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,它将完美地运行。


0
投票

如果格式化tmp目录不起作用,那么试试这个:

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

希望这可以帮助。


0
投票
  1. 我在conf / core-site.xml中配置了hadoop.tmp.dir
  2. 我在conf / hdfs-site.xml中配置了dfs.data.dir
  3. 我在conf / hdfs-site.xml中配置了dfs.name.dir
  4. 删除了“/ tmp / hadoop- /”目录下的所有内容
  5. 对于dfs.data.dir下列出的目录,将文件权限从777更改为755 数据节点开始工作。

0
投票

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


17
投票

我遇到了同样的问题。我创建了一个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!


0
投票

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

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

4)然后再次启动dfs。


0
投票

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

只有在重新启动操作系统并从头开始配置Hadoop之后,才能解决该问题。 (从头开始配置Hadoop而不重新启动不起作用)


0
投票

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

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


0
投票

试试这个

  1. stop-all.是
  2. 你hdfs-site.hml
  3. 更改属性dfs.data.dir的值
  4. 目的的格式
  5. start-all.是

0
投票

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


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

0
投票

我已经应用了一些混合配置,它对我有用。 第一>> 使用${HADOOP_HOME}/sbin/stop-all.sh停止Hadoop所有服务 第二>> 检查位于${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


-1
投票
  • 擦除数据和名称在dfs中的文件。

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

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


-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

-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

解决方案:停止群集并发出以下命令,然后再次启动群集。

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

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

如果是权限问题,请使用

   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检查正在运行的服务。

6
投票

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


2
投票
  1. 首先停止dfs和纱线。
  2. 删除core-site.xml文件中指定的datanode和namenode目录。
  3. 重新创建目录。
  4. 然后按如下方式重新启动dfs和纱线。 start-dfs.sh start-yarn.sh mr-jobhistory-daemon.sh启动历史服务器 希望这很好。

1
投票

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

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

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


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意图格式(格式化你的目的)
  5. start-all.sh(运行全部启动以启动所有hadoop进程)
  6. JPS(它将显示正在运行的进程)

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。

1
投票

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

格式化目的(格式hadoop)

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

这对我来说启动datanode服务有所不同。

© www.soinside.com 2019 - 2024. All rights reserved.