统一资源调度管理
YARN是新一代框架管理器,为各种框架进行资源分配和提供运行时环境。它允许多个应用程序同时、高效地运行在一个的集群上。有了YARN,Hadoop将是一个真正的多应用程序平台,可服务于整个企业。
YARN为核心的生态系统
Hadoop YARN基本架构:
YARN基本架构
Hadoop YARN各模块组成:
ResourceManager
处理客户端请求
启动/监控ApplicationMaster
监控NodeManager
资源分配与调度
NodeManager
单个节点上的资源管理
处理来自ResourceManager的命令
处理来自ApplicationMaster的命令
ApplicationMaster
数据切分
为应用程序申请资源,并分配给内部任务
任务监控与容错
统一资源调度关键特性
基于开源Yarn进行深度优化和改造,可提升分布式的集群环境下的资源利用率,这些资源包括内存、IO、网络、磁盘等。Yarn支持多种计算框架,基于一个全局的资源管理器,所有接入的框架要先向该全局资源管理器申请资源。 提供资源隔离与动态调整。不同的框架中的不同任务往往需要的资源(内存,CPU,网络IO等)不同,它们运行在同一个集群中,会相互干扰,资源统一管控与调度平台提供一种资源隔离机制避免任务之间由资源争用导致效率下降。
Yarn的调度器维护一群队列的信息。用户可以向一个或者多个队列提交应用。每次NM心跳的时候,调度器,根据一定的规则选择一个队列,再在队列上选择一个应用,尝试在这个应用上分配资源。不过,因为一些参数限制了分配失败,就会继续选择下一个应用。在选择了一个应用之后,这个应用对应也会有很多的资源申请的请求。调度器会优先匹配本地资源是申请请求,其次是同机架的,最后的任意机器的。
FifoScheduler:最简单的调度器,按照先进先出的方式处理应用。只有一个队列可提交应用,所有用户提交到这个队列。可以针对这个队列设置ACL。没有应用优先级可以配置。
CapacityScheduler:可以看作是FifoScheduler的多队列版本。每个队列可以限制资源使用量。但是,队列间的资源分配以使用量作排列依据,使得容量小的队列有竞争优势。集群整体吞吐较大,延迟调度机制使得应用可以放弃夸机器或者夸机架的调度机会,争取本地调度。
FairScheduler:多队列,多用户共享资源。特有的客户端创建队列的特性,使得权限控制不太完美。根据队列设定的最小共享量或者权重等参数,按比例共享资源。资源抢占特性,是指调度器能够依据公平资源共享算法,计算每个队列应得的资源,将超额资源的队列的部分容器释放掉的特性。
Hadoop是构建在以hdfs为基础的文件系统之上的。YARN所运行的应用的绝大部分输入都是hdfs上的文件。而hdfs上的文件的是分块多副本存储的。假设文件系统的备份因子是3。则每一个文件块都会在3个机器上有副本。在YARN运行应用的时候,AM会将输入文件进行切割,然后,AM向RM申请的container来运行task来处理这些被切割的文件段。
假如输入文件在ABC三个机器上有备份,那如果AM申请到的container在这3个机器上的其中一个,那这个task就无须从其它机器上传输要处理的文件段,节省网络传输。这就是Hadoop的本地优化。所以Hadoop的文件备份数量除了和数据安全有关,还对应用运行效率有莫大关系。
YARN的实现本地优化的方式是AM给RM提交的资源申请的时候,会同时发送本地申请,机架申请和任意申请。然后,RM的匹配这些资源申请的时候,会先匹配本地申请,再匹配机架申请,最后才匹配任意申请。
而延迟调度机制,就是调度器在匹配本地申请失败的时候,匹配机架申请或者任意申请成功的时候,允许略过这次的资源分配,直到达到延迟调度次数上限。CapacityScheduler和FairScheduler在延迟调度上的实现稍有不同,前者的调度次数是根据规则计算的,后者的调度次数通过配置指定的,但实际的含义是一样的。
采用YARN对于集群进行资源管理分配。
YARN集群管理
Resource Manager 管理全局所有应用的计算资源的分配,每个应用由一个Application Master负责相应的调度和协调。Resource Manager 是基于应用对资源的需求进行调度。YARN通过不同的调度策略,将集群资源分配给多个队列以及应用。
Yarn将资源封装在容器中,资源包括:内存,CPU等。不同的应用根据实际资源需求,请求不同个数以及大小的容器。基于YARN的资源调度与隔离,用户可以根据不同需求,启用多个内存分析计算引擎。如对流处理的分析应用,对于在线实时数据内容的统计分析应用,对于离线数据仓库的统计分析应用,以及使用R语言进行数据探索以及挖掘的应用等。
YARN为了提高可靠性主要指解决 ResourceManager单点问题,ResourceManager负责整个系统的资源管理和调度,内部维护了各个应用程序的ApplictionMaster信息,NodeManager信息,资源使用信息等。这些信息绝大多数可以动态重构,因此解决YARN单点故障要比HDFS单点容易很多。与HDFS类似,YARN的单点故障仍采用主备切换的方式完成,不同的是,备节点不会同步主节点的信息,而是在切换之后,才从共享存储系统读取所需信息。之所以这样,是因为YARN ResourceManager内部保存的信息非常少,大部分可以重构,且这些信息是动态变化的,很快会变旧。
统一资源调度技术特点:
可以通过YARN对所有的计算资源进行统一管理,可以按业务或者部门需要动态创建多个MapReduce或者Spark分析集群同时运行。通过YARN的资源隔离和配额管理,可以避免使用同一个计算集群时出现的资源争抢现象,保证每项业务都能顺利完成。
同时集群的创建和销毁是动态的,对批量统计业务,可以在每个运行完成后动态销毁,从而节省计算资源,避免建立独立的物理集群造成浪费。
YARN支持对计算资源(CPU核心)和内存资源的管理能力,避免占用内存资源多的Spark或Map/Reduce集群之间争抢内存资源。在申请资源配额后,如果当前用户的资源紧张或受限,还可以动态调配其他用户的闲置资源加入,当其他用户使用时再归还。
资源分配控制:
计算资源分配控制:
统一对租户进行计算资源的分配,分配完的参数部署到hadoop、传统关系型数据库和MPP数据库,实现过程中的控制。
Hadoop/Spark计算资源控制:
要实现计算资源的控制,支持HADOOP/SPARK,安装安全组件(sentry)
计算资源控制原理:
资源池跟系统的账号相关。一个系统账号只能属于一个资源池,YARN支持采用资源池方式对系统用户进行CPU,内存的运行控制。
资源池控制参数:
独占资源:最小分配的资源。系统确保此用户有最小的资源。
共享资源:系统空闲时可以使用的最大资源。
其中单位:虚拟的cpu核和内存单位。
存储资源分配控制:
Hadoop存储资源控制,每个租户独立一个文件跟目录,设置文件目录大小;
说明:hadoop存储控制采用的是操作系统的目录大小的控制。缺陷是无法高度自动共享可用空间。即一个目录大小分配出去之后,意味其就占有了这个空间。因此一般做法是由小到大慢慢分配空间。
- 点赞
- 收藏
- 关注作者
评论(0)