• 如何确定Hadoop守护进程分别会在哪台机器上运行


    经过一段时间的配置,Hadoop环境总算运行起来了,但是呢,为何主节点就没有跑tasktracker和datanode进程,slave节点也没有跑secondary进程,Hadoop是如何控制的呢?

    经过看权威指南(267页)和跟群里同学讨论,还有自己测试,最终确定:

    tasktracker和datanode这两个守护进程 —— 只会在conf/slaves文件里指定的那些节点上运行

    secondarynamenode 这个守护进程 —— 只会在conf/masters文件里指定的那个节点上运行

    namenode和jobtracker这两个守护进程 —— 他们只会在同一台server上运行,可以通过core-site.xml和mapred-site.xml来确定要运行的主机。并且,假如说配置文件里指定的是node1,那么必须要在node1这台server上运行start脚本。否则,tasktracker,datanode和secondarynamenode这些进程都能顺利启动,而namenode和jobtracker无法启动。

    实际测试结果:

    我的配置环境:(请对下面频繁出现的delly表示淡定和理解。。。因为我的英文名叫Delly。。。)

    dellypc-master,dellypc-1,dellypc-2三台主机。

    其中,masters文件里记录了dellypc-master(表示secondarynamenode在dellypc-master上运行),slaves文件里记录了dellypc-1和dellypc-2(表示datanode和tasktracker要在dellypc-1和dellypc-2上运行)。

    core-site.xml文件里:hdfs://dellypc-master:9000, mapred-site.xml文件里:<value>dellypc-master:9001</value>。(表示namenode跟jobtracker都在dellypc-master上运行,分别监听9000和9001端口)

    正常情况:

    在dellypc-master上执行start-all.sh脚本,完全正常。

    结果:

    dellypc-master:namenode,jobtracker和secondarynamenode

    dellypc-1:tasktracker和datanode

    dellypc-2:tasktracker和datanode

    测试1:

    在dellypc-1上执行start-all.sh脚本,namenode和jobtracker没有启动,其他进程正常启动。

    结果:

    dellypc-master:secondarynamenode

    dellypc-1:tasktracker和datanode

    dellypc-2:tasktracker和datanode

    测试2:

    修改core-site.xml: <value>hdfs://dellypc-1:9000</value>

    修改mapred-site.xml: <value>dellypc-1:9001</value>

    然后,再dellypc-1上执行start-all.sh,

    结果:

    dellypc-master:secondarynamenode

    dellypc-1:tasktracker,datanode和jobtracker

    dellypc-2:tasktracker和datanode

    奇怪的是namenode没有启动起来!按照预期,namenode应该会在dellypc-1上启动的嘛。。。为什么?

    纠结了一会儿,大概想出来问题的关键了:因为在dellypc-1上没有格式化的hdfs文件系统,所以无法正常启动namenode。

    也许你会跟我一样想说格式化一下试试呗,于是我就做了。。。但是格式化的时候失败了,因为我在hdfs-site.xml这个文件里设置了两个namenode元数据存储的目录,但是dellypc-1上没有其中的一个目录。于是我想就改回去吧。配置改回去,结果发现,datanode启动不了了。。。。。所以说啊,这个hdfs应该是一种分布式系统,跟所有的节点可能都会有关联。。。

    最后又把dellypc-1和dellypc-2上的hadoop文件夹删掉,又重新从主节点拷贝了一份,这才恢复了正常。

    这些试验,足够解决我的疑问了。希望也同样能帮到有同样疑问的同学。

  • 相关阅读:
    针对Python基本数据类型的操作
    Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from 这类问题的解决方法
    校招有感:计算机专业毕业生如何找工作(Java方向)
    我用了半年的时间,把python学到了能出书的程度
    Java面试官经验谈:如何甄别候选人真实的能力,候选人如何展示值钱技能
    Java字节码与反射机制
    以我的亲身经历,聊聊学python的流程,同时推荐学python的书
    面试时通过volatile关键字,全面展示线程内存模型的能力
    如果很好说出finalize用法,面试官会认为你很资深
    C# post json和接收json
  • 原文地址:https://www.cnblogs.com/delly/p/3849738.html
Copyright © 2020-2023  润新知