YARN(Yet Another Resource Negotiator)是 Hadoop 生态系统中的资源调度器,主要用于资源管理和作业调度。YARN 自身具备队列管理功能,通过对 YARN 资源队列进行配置和管理,实现集群资源的分配,以满足不同应用和用户的需求。YARN 的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
在大数据环境下,企业通常会有多个应用程序同时运行,这些应用程序可能具有不同的资源需求和优先级。为了合理分配和管理资源,避免资源争夺和冲突,需要对资源进行划分和调度。
本文将为大家介绍各类资源划分和队列管理方式,以及 EasyMR 新上线的 YARN 的队列管理功能,如何通过可视化界面管理,给广大用户带来更高效和便捷的队列管理体验。
资源划分方式
在大数据领域中,常见的资源划分方式通常有以下几种:
按照应用程序的类型或特性进行分类
例如,可以将 CPU 密集型的应用程序放置在一个队列中,将内存密集型的应用程序放置在另一个队列中。通过这种方式,可以确保不同类型的应用程序获得各自所需的资源,并避免资源浪费和不均衡的情况发生。
按照应用程序的优先级进行分类
对于一些重要的任务或紧急任务,可以为它们分配更高的资源配额和优先级,以保证它们能够得到及时响应和优先处理。而对于一些次要的任务或低优先级的任务,可以为它们分配较低的资源配额,以确保其他重要任务的执行效率和优先级。
按照部门或团队的需求进行分类
不同部门可能对资源有不同的需求,通过为不同部门分配独立的资源队列,可以确保每个部门能够独立管理和分配自己的资源,不会相互干扰或影响。
虽然 YARN 自身具备队列管理功能,但在实际使用中,YARN 只能通过配置文件进行资源队列的管理,这种方式相对繁琐且需要一定的技术知识。
CDH & HDP
业界首选的基础开源数据平台要数基于 Hadoop 分布式技术的 CDH 和 HDP。
CDH(Cloudear Manager)
● Fair Share 策略
CDH 的 Cloudear Manager 采用 Fair Share 策略,每个用户或组织的权重和优先级需要事先确定,需要管理者对系统的使用情况有较好的了解。如果这些设置不合理,可能会导致某些用户或组织长期不能获得足够的资源来执行任务。
● 调度效率影响
当有多个任务或作业同时提交时, Fair Share 的算法需要进行复杂的计算,导致调度效率下降。
HDP(Ambari)
● 管理复杂性
Ambari 采用可视化拖拽进行资源调整,操作简单。但是由于 Yarn 资源队列必须保证同一级队列资源之和等于100%,因此单一队列资源调整,必须调整其他队列资源保证队列资源之和等于100%,管理复杂度比较高。
● 资源配平
为保证同级队列资源之和等于100%,创建或者删除队列时,需要调整其他队列资源保证队列资源。
EasyMR 的 Yarn 资源队列管理功能
基于上述优缺点,为了改善队列管理体验,提供一个更直观、更详细的信息展示和简易明了的操作界面进行队列资源管理,EasyMR 上线了 Yarn 的队列管理功能进行可视化界面管理,提高其灵活性、可用性和可扩展性。
EasyMR 的 Yarn 资源队列管理特点
● 容量策略
基于最大、最小资源容量策略,限制队列的资源使用,用户或部门可以根据自己业务需求创建属于自己的专属资源队列。
● 队列独立
当调整队列资源大小或者创建删除队列时,无需调整其他队列资源大小,仅需保证同一父队列下所有子队列资源小于等于100%即可。
● 用户对接
支持对接 LDAP、OAuth 用户体系,通过对 Yarn 资源队列-叶子队列绑定用户、用户组,实现了基于用户和用户组的访问控制和资源分配,保障资源安全。
叶子队列:是指不能再分配子队列的队列,它可以直接用来分配资源给应用程序,在叶子队列中,可以直接运行应用程序或者将它们放置在默认分配队列中进行调度。
非叶子队列:可以再分配子队列,以进一步划分资源并进行资源管理,不支持应用程序和任务的提交。例如,可以将 CPU 密集型应用程序和内存密集型应用程序分别放置在不同的子队列中,并为它们分配不同的资源配额和优先级。
父队列:通常是一个非叶子队列,它包含多个子队列,并控制着这些子队列的资源分配和优先级等属性。例如,一个父队列可以包含多个子队列“memory”、“cpu”等,通过为不同的子队列设置不同的资源配额和优先级,可以更好地管理集群中的资源。
子队列:是父队列的一部分,它们继承了父队列的所有属性,并具有自己的资源配额和优先级等属性。在子队列中可以运行应用程序不支持再次划分子队列。
EasyMR 如何创建 Yarn 资源队列,在之前的文章《大数据计算引擎 EasyMR 如何简单高效管理 Yarn 资源队列》中进行了详细的介绍,请点击阅读。
未来,EasyMR 会持续优化 Yarn 资源队列管理,完善资源队列的安全审计与队列监控,通过将资源队列与需求背景进行对应,制定更优资源分配策略,以更好地满足企业在大数据环境下的资源管理和调度需求。