YARN(Yet Another Resource Negotiator):
ResourceManager: 通常存在于独立节点Mastr上,承担了 JobTracker 的角色,管理整个集群的内存、Cpu、甚至带宽等基础物理资源
ApplicationMaster:承担了以前的 TaskTracker 的一些角色,
负责应用程序相关事务,比如任务调度、任务监控和容错等
NodeManager:存在于slave上,进行从单个节点管理,包括单节点的基础物理分配(contaner)
Container:资源抽象,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的
TaskScheduler:
(1)默认的调度器FIFO:先进先出策略
(2)计算能力调度器Capacity Scheduler:限定资源多用户FIFO多队列,限定单一用户Taskset资源。调度时:
阶段一:
首先计算每个队列中正在运行的任务数与其应该分得的计算资源之间的比值,选择一个该比值最小的队列
(相对于每个队列限定资源一致,运行任务少得队列优先,或者相对于运行Task的比重一样,限定资源多的队列优先);
阶段二:
然后按以下策略选择该队列中一个作业:按照Task优先级和提交时间顺序选择,同时考虑用户资源量限制和内存限制。
(3)公平调度器Fair Scheduler:多队列,多用户,每个队列中的资源量可以配置,同一队列中的Task公平共享队列中所有资源
(4)适用于异构集群的调度器LATE(Longest Approximate Time to End):落后任务的算法处理调度器
(5)适用于实时作业的调度器
软实时调度器Deadline Scheduler:允许Task执行的相对的时间偏移处理
硬实时调度器Constraint-based Scheduler:预测Task在规定时间完成,如不能返回信息给用户请求优化Task逻辑
########################################################################################################
HDFS(Hadoop Distributed File System):
DataNode:数据节点服务HDFS的实例抽象节点
NameNode:元数据节点
secondaryNameNode:元数据备份节点
Metadata:Block文件的寻址文件
fsimage:fsimage文件就是内存的镜像文件(最终元数据信息文件)
内存中HDFS_元数据信息:Block数据上传的时候的信息包括BlockID、位置信息
edits***.log:(不支持修改,只能追加)元数据存储日志,包括空间分配信息(也就是Block对应的DataNode信息)固定大小
四者的关系:上传HDFS文件,写入edits***.log(例如固定大小20M),接着内存中缓冲分布式文件信息(有用的寻址空间:信息节点名称,对应blockID,大小,日期等),当edits达到对应大小(20M)的时候开始,开始从内存更新fsimage,对应的逻辑Block抽象叫做Metadata。
########################################################################################################
Yarn框架阶段流程:
(2.x YARN 版本可以扩展到任意处理引擎,内部处理类似,大致差异来源:数据子集的阶段性处理【内存磁盘罗列】)
资源分配: 对象:RM、AM、NM、Container、Task、
client----任务下发---->RM----接收到数据处理任务---->生成一个AM进行Node资源均衡计算----策略结果返回--->RM根据分配策略,通知Node Manager分配资源逻辑单位Container---通知AM资源分配就绪--->AM进行Task调度---作业调度排序-->调用container运行Task----AM监听----->task运行完成---AM通知RM回收资源---->RM通知相应的NM回收资源----->NM回收资源。
为什么阶段性的结果可以保存,因为有变量接收。
数据流程:对象:计算框架、Task、matedata、block、
client----任务下发---->某种建立在HDFS和YARN计算框架上的类型组件----->Namenode----元数据(matedate)查询 fsimage---->框架组件下发任务Task,权限通过RM移交Application做好就绪工作(相应的资源,block同步等待机制,跨界点的操作,应该无先后)----按照本地化处理逻辑【1】----->Task进行内存数据操作(注意:这是HDFS到YARN,非Local到HDFS文件操作,其括Mapper,中包Reducer两个阶段),处理流程为有向无环。----变量保存内存--->App监听Task完成处理,RM资源回收。
推测Container里是包含阶段处理的数据加载内存【推测来源根据Spark,MR的处理流程,Task作用域容器】
RM:处理阶段性磁盘罗列
Spark:处理阶段性内存溢出式磁盘罗列
【1】资源本地化:在container中启动任务之前,先要为任务准备好各种文件资源,这些文件资源通常在用户提交应用程序时已上传到HDFS上,而container启动之前,需要下载到本地工作录下,该过程称为资源本地化
【1】进程本地化:针对Task来说Container是其作用域的运行容器,Task必定运行在DataNode之上
流处理与批处理
总的来说,
1、ResourceManager作用(RM)
1)处理客户端请求
2)启动或监控ApplicationMaster
3)与NodeManager通信
4)资源的分配与调度(Worker) 、NM管理(datanode)
2、 ApplicationMaster(AM)
1)Task调度策略
2) Task监听
3)RM通信
1.x 叫 MapReduce
关键名词:
JobTracker:资源管理
TaskTracker:任务管理
2.x版本Yarn 版本特性
关键名词:
1. namenode单节点故障:多个NameNode横向扩展(NameNode HA)
secondaryNameNode
2.去掉JobTracker,taskTracker 分别对应 Resource Manager和Application Master提升到JobTracker的高度
每个应用程序对应一个ApplicationMaster
3.兼容1.x
4.对于资源的表示以内存为单位
5.Yarn不再是计算框架,而是框架管理器,由YARN进行统一管理和资源分配。目前可以支持多种计算框架运行在YARN上面,比如默认的MapReduce、Storm、Spark、Flink等
6.引擎封装成lib库存在client上,易更新性