42

我使用本教程设置并配置了一个多节点 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

如您所见,没有运行数据节点进程。我尝试配置单节点集群,但遇到了同样的问题。有人知道这里可能出了什么问题吗?有没有教程中没有提到的配置文件,或者我可能看过了?我是 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
************************************************************/
4

29 回答 29

77

你需要做这样的事情:

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

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

于 2012-08-12T17:29:07.673 回答
21

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

当我启动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。我可以找到数据节点!

于 2013-10-11T19:05:33.473 回答
14

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

  1. 在 [hadoop_directory]/sbin 目录中使用 ./stop-all.sh 停止所有正在运行的服务。
  2. 使用 rm -r [hadoop_directory]/tmp 删除 tmp 目录(在 [hadoop_directory]/etc/hadoop/core-site.xml 中配置的路径)
  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 检查正在运行的服务。
于 2017-01-23T14:42:38.573 回答
6

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

于 2012-08-14T22:20:34.987 回答
5

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

于 2018-10-13T17:47:04.827 回答
3

需要遵循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;数据节点集群 ID = CID-a5f4ba24-3a56-4125-9137-fa77c5bb07b1

即namenode 集群ID 和datanode 集群ID 不相同。

(2)现在复制上述错误中的名称节点集群ID,即CID-c41df580-e197-4db6-a02a-a62b71463089

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

clusterID = CID-c41df580-e197-4db6-a02a-a62b71463089

重启 Hadoop。将运行 DataNode

于 2017-07-09T18:51:14.350 回答
2

按照这些步骤操作,您的数据节点将重新启动。

  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。
于 2015-08-28T07:25:05.297 回答
2

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

格式化namenode。(hadoop namenode -format)

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

这对我启动 datanode 服务产生了影响。

于 2016-07-29T03:10:29.950 回答
2
  1. 首先停止dfs和纱线。
  2. 删除 core-site.xml 文件中指定的 datanode 和 namenode 目录。
  3. 重新创建目录。
  4. 然后重新启动dfs和yarn如下。

    开始-dfs.sh

    启动纱线.sh

    mr-jobhistory-daemon.sh 启动历史服务器

    希望这工作正常。

于 2017-05-04T12:14:21.513 回答
1

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

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

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

于 2014-03-18T22:15:18.977 回答
1

在行中运行以下命令:-

  1. stop-all.sh(运行 Stop All 以停止所有 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(格式化你的namenode)
  5. start-all.sh(运行 Start All 以启动所有 hadoop 进程)
  6. JPS(它将显示正在运行的进程)
于 2014-11-20T13:00:03.567 回答
1

第 1 步:- Stop-all.sh

第 2 步:- 到了这条路

cd /usr/local/hadoop/bin

第 3 步:- 运行命令 hadoop datanode

现在DataNode工作

于 2016-09-06T12:53:25.520 回答
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/*
于 2017-08-10T10:30:27.690 回答
1

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

于 2018-02-02T11:00:08.823 回答
1

在 Mac 操作系统的情况下(伪分布式模式):

打开终端

  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
于 2018-10-29T12:23:40.730 回答
0

试试这个

  1. 停止所有.sh
  2. vi hdfs-site.xml
  3. 更改属性的值dfs.data.dir
  4. 格式化名称节点
  5. 全部启动.sh
于 2013-08-21T11:26:04.943 回答
0

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

于 2014-01-05T08:39:50.817 回答
0

您可以设置另一个,而不是删除“hadoop tmp dir”下的所有内容。例如,如果您的 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。

于 2014-05-30T07:15:58.983 回答
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

希望这可以帮助。

于 2014-07-30T16:16:48.810 回答
0

您需要检查:

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

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

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

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

于 2014-09-23T07:08:28.863 回答
0

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

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

希望这可以帮助。

于 2014-11-14T05:10:02.407 回答
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. 将下面列出的目录的文件权限从 777 更改为 755dfs.data.dir

    数据节点开始工作。

于 2015-04-13T23:57:06.080 回答
0

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

于 2017-04-28T05:49:00.010 回答
0

按照这些步骤操作,您的数据节点将重新启动。

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

4)然后再次启动dfs。

于 2017-09-25T23:36:51.973 回答
0

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

仅在重新启动操作系统并从头开始配置 Hadoop 后,该问题才得以解决。(在不重启的情况下从头开始配置 Hadoop 不起作用)

于 2017-12-21T09:56:04.763 回答
0

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

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

于 2018-08-01T12:16:59.210 回答
0

我已经应用了一些混合配置,它对我有用。
首先 >>使用 第二个
停止 Hadoop 所有服务 >> 检查位于您的 mapred-site.xml 并将其更改为. 第三>> 删除hadoop创建的临时文件夹 第四>> 在temp上添加递归权限。 第五>> 现在重新启动所有服务。首先检查包括datanode在内的所有服务是否正在运行。 在此处输入图像描述${HADOOP_HOME}/sbin/stop-all.sh


${HADOOP_HOME}/etc/hadoop/mapred-site.xmllocalhostmaster



rm -rf //path//to//your//hadoop//temp//folder



sudo chmod -R 777 //path//to//your//hadoop//temp//folder


于 2019-03-14T17:24:31.460 回答
0

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

hdfs namenode -format

最后运行:

start-all.sh

然后你的问题就解决了。

于 2020-07-30T15:51:30.740 回答
-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
于 2016-08-03T12:50:14.257 回答