【问题标题】:Datanode process not running in HadoopDatanode进程未在Hadoop中运行
【发布时间】:2012-08-07 00:33:59
【问题描述】:

我使用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

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

【问题讨论】:

  • 这个jps运行在哪个节点上?
  • 您能否查看jawwadtest1 节点上的/usr/local/hadoop/libexec/../logs/hadoop-root-datanode-jawwadtest1.log 文件,看看是否有任何错误消息可以发回?
  • Razvan,这一切都在主节点上。
  • 克里斯,我的错!我已将它们添加到问题的末尾。
  • 你最终解决了这个问题吗?

标签: hadoop configuration process


【解决方案1】:

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

hdfs namenode -format

最终运行:

start-all.sh

那么你的问题就解决了。

【讨论】:

    【解决方案2】:

    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/*
    

    【讨论】:

      【解决方案3】:

      我已经应用了一些混合配置,它对我有用。
      第一>>
      停止使用 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

      【讨论】:

        【解决方案4】:

        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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

            试试这个

            1. stop-all.sh
            2. vi hdfs-site.xml
            3. 更改属性dfs.data.dir 的值
            4. 格式化名称节点
            5. start-all.sh

            【讨论】:

              【解决方案7】:

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

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

              【讨论】:

              • 这与之前的答案有何不同?
              【解决方案8】:

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

              【讨论】:

                【解决方案9】:

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

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

                【讨论】:

                  【解决方案10】:

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

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

                  4)然后重新启动dfs。

                  【讨论】:

                    【解决方案11】:

                    需要遵循 3 个步骤。

                    (1) 需要去logs查看最近的log(在hadoop- 2.6.0/logs/hadoop-user-datanode-ubuntu.log)

                    如果错误为

                    java.io.IOException:/home/kutty/work/hadoop2data/dfs/data 中的集群 ID 不兼容:namenode clusterID = CID-c41df580-e197-4db6-a02a-a62b71463089;数据节点集群ID = 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中的Datanode集群ID替换为Namenode集群ID

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

                    重启 Hadoop。将运行 DataNode

                    【讨论】:

                      【解决方案12】:
                      1. 先停止 dfs 和 yarn。
                      2. 删除在 core-site.xml 文件中指定的 datanode 和 namenode 目录。
                      3. 重新创建目录。
                      4. 然后重新启动dfs和yarn如下。

                        开始-dfs.sh

                        start-yarn.sh

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

                        希望一切正常。

                      【讨论】:

                        【解决方案13】:

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

                        【讨论】:

                          【解决方案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 检查正在运行的服务。

                          【讨论】:

                          • 也为我工作!使用mkdir 而不是sudo mkdir
                          • 谢谢,为我工作。还有
                          • 使用chmod -R 755 datanode 使我的datanode 上的权限与我的namenode 匹配,我认为这很不稳定,并为我解决了问题。除了 Anirban 的说明之外,不要忘记检查 tmpdata 和 dfsdata 目录的内容和权限。假设这是一个尚未完全正常工作的全新安装,并且您没有任何数据可丢失,基本上,对于您在安装期间创建的所有目录,检查它们的权限,核对任何内容,重新格式化它们,然后重新启动这两个服务。我不确定我的安装在哪里失败,但这成功了。
                          【解决方案15】:

                          第 1 步:- Stop-all.sh

                          第 2 步:- 到达这条路

                          cd /usr/local/hadoop/bin
                          

                          第 3 步:- 运行该命令 hadoop 数据节点

                          现在DataNode工作

                          【讨论】:

                            【解决方案16】:
                                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
                            

                            【讨论】:

                              【解决方案17】:

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

                              格式化namenode。(hadoop namenode -format)

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

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

                              【讨论】:

                                【解决方案18】:
                                • 擦除数据和名称在 dfs 中的文件。

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

                                然后,namenode 格式。再试一次,

                                【讨论】:

                                  【解决方案19】:

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

                                  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。

                                  【讨论】:

                                    【解决方案20】:
                                    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

                                      数据节点开始工作了。

                                    【讨论】:

                                      【解决方案21】:

                                      你需要做这样的事情:

                                      • 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 来丢失数据。

                                      【讨论】:

                                      • 确实如此。这适用于多节点!我在所有节点(主/从)中删除了我的 tmp 目录(在 core-site.xml 中设置),格式化所有节点,并且像魅力一样工作!
                                      • @gilts 在您的示例中,我可以假设您将core-site.xml 中的hadoop.tmp.dir 值更改为/app/tmp?换句话说,将 hadoop.tmp.dir` 指向 myproj/tmp 是一个很好的模式?
                                      • 虽然在自制软件安装中文件的位置不同,但这种方法对我有用。谢谢。
                                      • 如果你没有配置hadoop.tmp.dir,默认的临时目录将在/tmp/hadoop-{username}(第二步)
                                      • 我在重启后遇到了这个问题。在我的情况下,执行bin/stop-yarn.shbin/stop-dfs.sh 然后bin/start-dfs.shbin/start-yarn.sh 就足够了。
                                      【解决方案22】:

                                      在一行中运行以下命令:-

                                      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(它将显示正在运行的进程)

                                      【讨论】:

                                        【解决方案23】:

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

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

                                        希望这会有所帮助。

                                        【讨论】:

                                          【解决方案24】:

                                          您需要检查:

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

                                          在这两个文件中以及namenode和datanode的Namespace ID中。

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

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

                                          【讨论】:

                                            【解决方案25】:

                                            这适用于较新版本的 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

                                            希望这会有所帮助。

                                            【讨论】:

                                              【解决方案26】:

                                              您可以设置另一个,而不是删除“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。

                                              【讨论】:

                                                【解决方案27】:

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

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

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

                                                【讨论】:

                                                  【解决方案28】:

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

                                                  【讨论】:

                                                    【解决方案29】:

                                                    我遇到了同样的问题。我创建了一个 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。我可以找到数据节点!

                                                    【讨论】:

                                                    • 我遇到了同样的问题。由于某种原因,从 1 节点切换到 3 节点后,datanode 文件夹变为 700 而不是 755
                                                    【解决方案30】:

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

                                                    【讨论】:

                                                      猜你喜欢
                                                      • 1970-01-01
                                                      • 1970-01-01
                                                      • 2014-12-15
                                                      • 1970-01-01
                                                      • 1970-01-01
                                                      • 1970-01-01
                                                      • 1970-01-01
                                                      • 1970-01-01
                                                      • 1970-01-01
                                                      相关资源
                                                      最近更新 更多