标签:
1.Hadoop YARN产生背景
源于MapReduce1.0
运维成本 如果采用“一个框架一个集群”的模式,则可能需要多个管理员管理这些集群,进而增加运维成本,而共享模式通常需要少数管理员即可完成多个框架的统一管理。
数据共享 随着数据量的暴增,跨集群间的数据移动不仅需花费更长的时间,且硬件成本也会大大增加,而共享集群模式可让多种框架共享数据和硬件资源,将大大减小数据移动带来的成本。
直接源于MRv1在几个方面的缺陷:
?扩展性受限
?单点故障
?难以支持MR之外的计算
多计算框架各自为战,数据共享困难
?MR:离线计算框架
?Storm:实时计算框架
?Spark:内存计算框架
2.Hadoop YARN基本构成
ResourceManager
整个集群只有一个,负责集群资源的统一管理和调度
详细功能
?处理客户端请求
?启动/监控ApplicationMaster
?监控NodeManager
?资源分配与调度
NodeManager
整个集群有多个,负责单节点资源管理和使用
详细功能
?单个节点上的资源管理和任务管理
?处理来自ResourceManager的命令
?处理来自ApplicationMaster的命令
ApplicationMaster
每个应用有一个,负责应用程序的管理
详细功能
?数据切分
?为应用程序申请资源,并进一步分配给内部任务
?任务监控与容错
Container
?对任务运行环境的抽象
?描述一系列信息
?任务运行资源(节点、内存、CPU)
?任务启动命令
?任务运行环境
3.YARN容错性
ResourceManager
?存在单点故障;
?正在基于ZooKeeper实现HA。
NodeManager
?失败后,RM将失败任务告诉对应的AM;
?AM决定如何处理失败的任务。
ApplicationMaster
?失败后,由RM负责重启;
?AM需处理内部任务的容错问题;
?RMAppMaster会保存已经运行完成的Task,重启后无需重新运行
4.YARN调度框架
双层调度框架
?RM将资源分配给AM
?AM将资源进一步分配给各个Task
基于资源预留的调度策略
?资源不够时,会为Task预留,直到资源充足
?与“all or nothing”策略不同(Apache Mesos)
5.Hadoop YARN资源调度
YARN资源调度器
多类型资源调度
?采用DRF算法(论文:“Dominant Resource Fairness: Fair Allocation of Multiple Resource Types”)
?目前支持CPU和内存两种资源
提供多种资源调度器
?FIFO
?Fair Scheduler
?Capacity Scheduler
多租户资源调度器
?支持资源按比例分配
?支持层级队列划分方式
?支持资源抢占
YARN资源隔离方案
?支持内存和CPU两种资源隔离
?内存是一种“决定生死”的资源
?CPU是一种“影响快慢”的资源
?内存隔离
?基于线程监控的方案
?基于Cgroups的方案
?CPU隔离
?默认不对CPU资源进行隔离
?基于Cgroups的方案
YARN支持的调度语义
?支持的语义
?请求某个特定节点/机架上的特定资源量
?将某些节点加入(或移除)黑名单,不再为自己分配这些节点上的资源
?请求归还某些资源
?不支持的语义
?请求任意节点/机架上的特定资源量
?请求一组或几组符合某种特质的资源
?超细粒度资源
?动态调整Container资源
6.Hadoop YARN上的计算框架
?离线计算框架:MapReduce
?DAG计算框架:Tez
?流式计算框架:Storm
?内存计算框架:Spark
标签:
原文地址:http://www.cnblogs.com/xiejin/p/4427711.html