hadoop中各个节点的功能及HDFS文件上传流程图

       Hadoop是一个能够对大量数据进行分布式处理的软件框架,实现了Google的MapReduce编程模型和框架,能够把应用程序分割成许多的小的工作单元(块),并把这些单元放到任何集群节点上执行。在MapReduce中,一个准备提交执行的应用程序称为“作业(job)”,而从一个作业划分出得、运行于各个计算节点的工作单元称为“任务(task)”。此外,Hadoop提供的分布式文件系统(HDFS)主要负责各个节点的数据存储,并实现了高吞吐率的数据读写。

  在分布式存储和分布式计算方面,Hadoop都是用主/从(Master/Slave)架构。在一个配置完整的集群上,想让Hadoop这头大象奔跑起来,需要在集群中运行一系列后台(deamon)程序。不同的后台程序扮演不用的角色,这些角色由NameNode、DataNode、 SecondaryNameNode、JobTracker、TaskTracker组成。其中NameNode、SecondaryNameNode、JobTracker运行在Master节点上,而在每个Slave节点上,部署一个DataNode和TaskTracker,以便 这个Slave服务器运行的数据处理程序能尽可能直接处理本机的数据。对Master节点需要特别说明的是,在小集群中,SecondaryNameNode可以属于某个从节点;在大型集群中,NameNode和JobTracker被分别部署在两台服务器上。

      我们已经很熟悉这个5个进程,但是在使用的过程中,我们经常遇到问题,那么该如何入手解决这些问题。那么首先我们需了解的他们的原理和作用。

五个节点分别是:

   Namenode    SecondaryNameNode    DataNode       ResourceManager      NodeManager

1.  Namenode 

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

   namenode结构图(盗的图)

 


       客户端(client)代表用户与namenode和datanode交互来访问整个文件系统。客户端提供了一些列的文件系统接口,因此我们在编程时,几乎不用知道datanode和namenode,即可完成我们所需要的功能。

2.  DataNode

      Datanode是文件系统的工作节点,他们根据客户端或者是namenode的调度存储和检索数据,并且定期向namenode发送他们所存储的块(block)的列表(心跳机制)。

      集群中的每个服务器都运行一个DataNode后台程序,这个后台程序负责把HDFS数据块读写到本地的文件系统。当需要通过客户端读/写某个数据时,先由NameNode告诉客户端去哪个DataNode进行具体的读/写操作,然后,客户端直接与这个DataNode服务器上的后台程序进行通信,并且对相关的数据块进行读/写操作。


3. SecondaryNameNode

        SecondaryNameNode是一个用来监控HDFS状态的辅助后台程序。就像NameNode一样,每个集群都有一个Secondary  NameNode,并且部署在一个单独的服务器上。SecondaryNameNode不同于NameNode,它不接受或者记录任何实时的数据变化,但是,它会与NameNode进行通信,以便定期地保存HDFS元数据的快照。由于NameNode是单点的,通过Secondary  NameNode的快照功能,可以将NameNode的宕机时间和数据损失降低到最小。同时,如果NameNode发生问题,Secondary NameNode可以及时地作为备用NameNode使用。这其中SecondaryNameNode作为NameNode备用节点,切换的过程完全不影响其它节点,举个栗子:NameNode就相当于皇帝,而SecondaryNameNode相当于东宫太子,皇帝即NameNode出现故障或者死去,东宫太子会立即继位,下面的大臣(DataNaem)完全感觉不到皇位已经换人了。


4.  ResourceManager   和  NodeManager

   一个为资源管理,另一个为节点管理,顾名思义,一个主要负责资源的管理,另一个负责节点的管理

   ResourceManager 主要完成以下几个功能:

                 1. 与客户端交互,处理来自客户端的请求

                 2. 启动和管理ApplicationMaster,并在它运行失败时重新启动它;资源管理和调度,接收来自ApplicationMaster                       的资源申请请求,并为之分配资源

                3. 管理NodeManager,接收来自NodeManager的资源汇报信息,并向NodeManager下达管理指令(比如杀死                           Container等)

    NodeManager :

         Node Manager就是Weblogic Server提供的一个Java 程式,可以使让你在本地域控制台启动、关闭、重启及监管受管Server。Node Manager 允许你从远程machine控制受管Server。要使用NodeManager的功能,必须在受管Server机             器上启动Node Manager。


HDFS运行流程图(图是盗的)

      首先用户即客户端想要上传文件,就先要给namenode发个请求,告诉它说我要上传文件了(即写数据),然后namenode会返回一个响应,这个响应是namenode根据自身情况,比如会先查一下namenode里面还能存数据吗?能存多少?有几个datanode能存?(心跳信息)然后返回一个可以存储的节点列表,意思是这些里面能存,但不是能存的datanode全部返回,它会根据上传文件的大小来适当的返回,客户端收到这个列表后,就向根据返回的列表里面的datanode中写数据,文件会分为多个块(block),写的过程是以流的方式写入的,一个块存入一个DataNode,存完后DataNode就会备份,我们默认的备份数是3,存完后,会告诉namenode说我存完了。这样就结束了hdfs文件上传的流程。


上面那张看不懂的话看这张


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Gscsd_T/article/details/79948187
个人分类: hadoop
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

hadoop中各个节点的功能及HDFS文件上传流程图

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭