1.Namenode

目录的管理者,每一个集群都有一个,记录实时的数据变化,如果没有namenode,HDFS就无法工作,系统中的文件将会全部丢失,就无法将位于不同datanode上的文件快(blocks)重建文件。因此它的容错机制很有必要。

它主要负责:

接收用户的请求;
维护文件系统的目录结构;
管理文件与Block之间的练习;
2.Datanode
是文件系统的工作节点,他们根据客户端或者是namenode的调度存储和检索。,并且定期向namenode发送他们所存储的块(block)的列表。

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

它主要负责:

存放数据;
文件被分割以Block的形式被存储在磁盘上;
3.Secondarynode

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

它主要将namenode image(fsimage)和Edit log合并的。

这两个文件的作用:


fsimage包含Hadoop文件系统中的所有目录和文件idnode的序列化信息,其中对于文件包含了文件的修改时间、访问时间、块大小和组成一个文件块信息等。对于文件夹而言包含的信息主要有修改时间、访问控制权限等信息。而Edits文件主要是进行客户端对文件操作的记录,比如上传新文件等。并且edits文件会定期与fsimage文件进行合并操作。

当客户端执行写操作,则NameNode会在edit log记录下来,并在内存中保存一份文件系统的元数据。

要注意,fsimage文件是文件系统元数据的持久化检查点,不会在写操作后马上更新,这是因为fsimage的写入是非常缓慢的。

由于Edit
log不断增长,在NameNode重启时,会造成长时间NameNode处于安全模式,不可用状态,是非常不符合Hadoop的设计初衷。所以要周期性合并Edit
log,但是这个工作由NameNode来完成,会占用大量资源,这样就出现了Secondary NameNode,它可以进行image检查点的处理工作。步骤如下:

(1)SecondaryNameNode请求NameNode进行edit log的滚动(即创建一个新的edit
log),将新的编辑操作记录到新生成的edit log文件;

(2)通过http get方式,读取NameNode上的fsimage和edits文件,到SecondaryNameNode上;

(3)读取fsimage到内存中,即加载fsimage到内存,然后执行edits中所有操作,并生成一个新的fsimage文件,即这个检查点被创建;

(4)通过http post方式,将新的fsimage文件传送到NameNode;


(5)NameNode使用新的fsimage替换原来的fsimage文件,让(1)创建的edits替代原来的edits文件;并且更新fsimage文件的检查点时间。

整个处理过程完成。

SecondaryNameNode的处理,是将fsimage和edites文件周期的合并,不会造成nameNode重启时造成长时间不可访问的情况。

4.Resourcemanager
(1)与客户端进行交互,处理来自于客户端的请求,如查询应用的运行情况等。


(2)启动和管理各个应用的ApplicationMaster,并且为ApplicationMaster申请第一个Container用于启动和在它运行失败时将它重新启动。


(3)管理NodeManager,接收来自NodeManager的资源和节点健康情况汇报,并向NodeManager下达管理资源命令,例如kill掉某个container。

(4)资源管理和调度,接收来自ApplicationMaster的资源申请,并且为其进行分配。这个是它的最重要的职能。

5.Nodemanager

NM是ResourceManager在每台机器上的代理,负责容器管理,并监控它们的资源使用情况,以及向ResourceManager/Scheduler提供资源使用报告。

总结:
(1)NameNode与ResourceManager分开部署(都是老大)

(2)NodeManager 也就是Resoucemanager 的“小弟”,它来做这事情,读取hdfs
上的数据,数据保存在datanode上,所以如果数据集群,datanode 与NodeManager ,一定要保存在同一个节点上

(3)Resoucemanager : 占用端口:8088 进行调度资源(老大),进行任务分配的,谁来做这个事情

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信