Hadoop集群各守护进程入门级详解

Hadoop是一个能够对大量数据进行分布式处理的软件架构,分布式处理主要体现在分布式存储和分布式计算方面。在一个hadoop分布式集群中,hadoop是基于主/从(master/slave)架构运行的,而想让集群运行起来需要在集群中运行一系列的后台(deamon)程序,这些后台程序就被我们称为hadoop的守护进程。
      现在所被人熟知的有hadoop1.x和hadoop2.x两大版本,不同版本的hadoop其守护进程也有所不同:

hadoop1.x hadoop2.x
NameNode NameNode
DataNode DataNode
SecondaryNameNode SecondaryNameNode
TaskTracker NodeManager
JobTracker ResourceManager

      这是由于在hadoop1.x时代,属于MapReduce的守护进程JobTracker和TaskTracker具有很多局限性,因此在更新后的hadoop2.x时代推出了新的YARN+MapReduce模式从而出现了新的守护进程NodeManager和ResourceManager。

    YARN 并不是下一代MapReduce(MRv2),下一代MapReduce与第一代MapReduce(MRv1)在编程接口、数据处理引擎(MapTask和ReduceTask)是完全一样的, 可认为MRv2重用了MRv1的这些模块,不同的是资源管理和作业管理系统,MRv1中资源管理和作业管理均是由JobTracker实现的,集两个功能于一身,而在MRv2中,将这两部分分开了。 其中,作业管理由ApplicationMaster实现,而资源管理由新增系统YARN完成,由于YARN具有通用性,因此YARN也可以作为其他计算框架的资源管理系统,不仅限于MapReduce,也是其他计算框架(例如Spark)的管理平台。
      Hadoop1时代中MapReduce可以说是啥事都干,而Hadoop2中的MapReduce的话则是专门处理数据分析,而YARN则做为资源管理器而存在。
      该架构将JobTracker中的资源管理及任务生命周期管理(包括定时触发及监控),拆分成两个独立的服务,用于管理全部资源的ResourceManager以及管理每个应用的ApplicationMaster,ResourceManager用于管理向应用程序分配计算资源,每个ApplicationMaster用于管理应用程序、调度以及协调。一个应用程序可以是经典的MapReduce架构中的一个单独的Job任务,也可以是这些任务的一个DAG(有向无环图)任务。ResourceManager及每台机上的NodeManager服务,用于管理那台主机的用户进程,形成计算架构。每个应用程序的ApplicationMaster实际上是一个框架具体库,并负责从ResourceManager中协调资源及与NodeManager(s)协作执行并监控任务。

    由于hadoop1.x的时代已经过去,这里我们对hadoop2.x中的各守护进程进行一定的解释。

1.NameNode
      Namenode 管理着文件系统的Namespace。它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata)。管理这些信息的文件有两个,分别是Namespace 镜像文件(Namespace image)和操作日志文件(edit log),这些信息被Cache在RAM中,当然,这两个文件也会被持久化存储在本地硬盘。Namenode记录着每个文件中各个块所在的数据节点的位置信息,但是他并不持久化存储这些信息,因为这些信息会在系统启动时从数据节点重建。

2.DataNode
      Datanode是文件系统的工作节点,他们根据客户端或者是namenode的调度存储和检索数据,并且定期向namenode发送他们所存储的块(block)的列表。集群中的每个服务器都运行一个DataNode后台程序,这个后台程序负责把HDFS数据块读写到本地的文件系统。当需要通过客户端读/写某个数据时,先由NameNode告诉客户端去哪个DataNode进行具体的读/写操作,然后,客户端直接与这个DataNode服务器上的后台程序进行通信,并且对相关的数据块进行读/写操作。

3.Secondary NameNode
      Secondary NameNode是一个用来监控HDFS状态的辅助后台程序。就像NameNode一样,每个集群都有一个Secondary NameNode,并且部署在一个单独的服务器上。Secondary NameNode不同于NameNode,它不接受或者记录任何实时的数据变化,但是,它会与NameNode进行通信,以便定期地保存HDFS元数据的快照。由于NameNode是单点的,通过Secondary NameNode的快照功能,可以将NameNode的宕机时间和数据损失降低到最小。同时,如果NameNode发生问题,Secondary NameNode可以及时地作为备用NameNode使用。

4.ResourceManager
      在YARN中,ResourceManager负责集群中所有资源的统一管理和分配,它接收来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序(实际上是ApplicationManager)。

5.NodeManager
      NodeManager是YARN中每个节点上的代理,它管理hadoop集群中单个计算节点,包括与ResourceManger保持通信,监督container的生命周期管理,监控每个Container的资源使用(内存、CPU等)情况,追踪节点健康状况,管理日志和不同应用程序用到的附属服务。

 
      最后结合前文需要总结的一点是,原生hadoop中,HDFS分布式文件系统拥有:NameNode、DataNode、SecondaryNameNode3个守护进程,可以通过start-dfs.sh/stop-dfs.sh命令来开启/关闭进程。MapReduce分布式并行计算框架拥有:ResourceManager和NodeManager两个守护进程,可以通过start-yarn.sh/stop-yarn.sh命令来开启/关闭进程。
      对于具有主/从结构的hadoop集群来说,master主节点上一般会运行NameNode、ResourceManager两个守护进程,slave从节点上一般会运行DataNode、NodeManager和SecondaryNameNode(在多从节点的集群中一般会选择在某一个从节点上运行)等进程,各守护进程之间各有联系,共同维护整个hadoop集群的正常运行。

你可能感兴趣的:(Hadoop)