hadoop核心组件架构

关键性名词

YARN(
Yet Another Resource Negotiator):

ResourceManager: 通常存在于独立节点Mastr上,
承担了 JobTracker 的角色,管理整个集群的内存、Cpu、甚至带宽等基础物理资源
ApplicationMaster:承担了以前的 TaskTracker 的一些角色,
        
负责应用程序相关事务,比如任务调度、任务监控和容错等
NodeManager:存在于slave上,进行从单个节点管理,包括单节点的基础物理分配(contaner)

Container:资源抽象,
如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的

Task
Scheduler
(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:元数据备份节点

MetadataBlock文件的寻址文件

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、系统的输入包括两类数据:实时的流式数据静态的离线数据。其中,流式数据是前端设备实时发送的识别数据、GPS数据等,是通过消息中间件实现的事件触发,推送至系统的。离线数据是应用需要用到的基础数据(提前梳理好的)等关系数据库中的离线数据,是通过数据库读取接口获取而批量处理的系统。

     2、系统的输出也包括流式数据和离线数据。其中,流式数据是写入消息中间件的指定数据队列缓存,可以被异步推送至其他业务系统。离线数据是计算结果,直接通过接口写入业务系统的关系型数据库。

     3、业务的计算结果输出方式是通过两个条件决定的。一、结果产生的频率:若计算结果产生的频率可能会较高,则结果以流式数据的形式写入消息中间件。(比如要实时监控该客户所拥有的标签,也就是说要以极高的速度被返回,这类结果以流式数据形式被写入消息中间件。) 这是因为数据库的吞吐量很可能无法适应告诉数据的存取需求。 二、结果需要写入的数据库表规模:若需要插入结果的数据表已经很庞大,则结果以流式数据的形式写入消息中间件,待应用层程序实现相关队列数据的定期或定量的批量数据库转储。(比如宽表异常庞大,每次查询数据库就会有很高的延迟,那么就将结果信息暂时存入中间件层,晚些时候再定时或定量的进行批量数据库转储) 。这是因为大数据表的读取和写入操作对毫秒级别的相应时间仍是无能为力。 若以上两个条件均无要求,结果可以直接写入数据库的相应表中。

 总的来说,
1、ResourceManager作用(RM)

    1)处理客户端请求
    
2)启动或监控ApplicationMaster
    
3)与NodeManager通信
    
4)资源的分配与调度(Worker) 、NM管理(datanode)

  
2、 ApplicationMaster(AM)

    1)Task调度策略
    2) Task监听
    3)RM通信 

Yarn版本差异:
    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上,易更新性

你可能感兴趣的:(hadoop核心组件架构)