一.Hadoop2.x的概述
分布式就是由多台机器协同来完成的任务。
Hadoop提供的服务主要是两个:分布式存储,以及分布式计算。
Hadoop的分布式系统,都采用Master-Slave的主从模式,在这样的模式下,分布式存储系统(HDFS)的主节点,是NameNode。
分布式资源管理系统(Yarn)的主节点,是ResourceManager。
可以很粗的理解为:HDFS是分布式存储层;YARN是集群资源管理层。
http://wenda.chinahadoop.cn/question/7382
二.HDFS
NameNode: 是整个文件系统的管理节点,负责管理 datanode 和记录元数据
它维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。
接收用户的操作请求。
Secondraynamenode :负责合并日志,用来合并fsimage和edits文件来更新NameNode的metedata的。
Datanode :负责存储数据
声明:我们把数据节点(DataNode)上的块(Block)叫做副本(Replica),以区别于命名节点(NameNode)上的块。
Fsimage:是namenode的元数据镜像文件,保存在磁盘上,存储某一段时间内namenode在内存中的元数据信息
Editlog:是namenode的操作日志,比如说:上传一个文件或删除一个文件等这些操作。
Fstime:最近一次的checkpoint时间
Metadata:元数据,一个文件存储在哪些DataNode节点的哪些位置的元数据信息。(相对于字典的索引),namenode始终在内存中保存metadata。
HDFS:存储数据,提供分析的数据:NameNode/DataNode
https://blog.csdn.net/u011414200/article/details/50350154
三.Yarn
YARN:提供程序运行的资源: ResourceManager/NodeManager
分布式集群资源管理框架,管理者集群的资源(Memory,cpu core)
合理调度分配给各个程序(MapReduce)使用
主节点:resourceManager
掌管集群中的资源
从节点:nodeManager
管理每台集群资源
1. ResourceManager(RM)
接收客户端任务请求,接收和监控 NodeManager(NM) 的资源情况汇报,负责资源的分配与调度,启动和监控 ApplicationMaster(AM)
2. NodeManager
节点上的资源管理,启动 Container 运行 task 计算,上报资源、container 情况给RM和任务处理情况给 AM。
3. ApplicationMaster
单个 Application(Job) 的 task 管理和调度,向 RM 进行资源的申请,向 NM 发出 launch Container 指令,接收 NM 的 task 处理状态信息
https://blog.csdn.net/CSDN19970806/article/details/81476046
四.YARN的执行流程
1.客户端向RM中提交程序
2.RM向NM中分配一个container,并在该container中启动AM
3.AM向RM注册,这样用户可以直接通过RM査看应用程序的运行状态(然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束)
4.AM采用轮询的方式通过RPC协议向RM申请和领取资源,资源的协调通过异步完成
5.AM申请到资源后,便与对应的NM通信,要求它启动任务
6.NM为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务
7.各个任务通过某个RPC协议向AM汇报自己的状态和进度,以让AM随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务
8.应用程序运行完成后,AM向RM注销并关闭自己