Yunikorn 在云上大数据平台中的应用
本文作者为中国移动云能力中心大数据团队软件开发工程师施成龙,文章介绍了开源的 K8s 资源管理器 Yunikorn,分析了它的架构及其优势,同时给出了部署方式及测试用例,并结合实际案例,帮助读者进一步了解其在大数据领域的优势和发展方向。
一、前言
目前 Kubernetes 已经成为容器云领域影响力最大的开源平台,使用 Kubernetes 用户可以轻松搭建和管理一个可扩展的企业生产级别的云平台,其主要架构如图所示:
Kubernetes 通过其默认的调度器 Scheduler 实现了自动化的资源调度服务。该默认调度器基于资源公平调度,以 Pod 为资源单位,监听 API Server 中指定域为空的 Pod 对象,发送绑定指令调度 Pod 到节点上,其后将绑定信息传回给存储器中。
而在大数据领域,这种默认的调度器由于缺乏灵活性和扩展性,在资源分配时存在着一定的缺陷。本文介绍的 Yunikorn 资源管理是一种轻量级的通用资源调度程序,可以向 K8s 提供细粒度的资源调度,其队列管理类似 Hadoop 的 YARN,开发者可无缝对接。
二、Yunikorn 的架构及其优势
YuniKorn 目前有 4 个组件,如下所示:
这 4 个组件分别为调度核心(Yunikorn Core)、调度程序接口(Yunikorn Scheduler Interface)、调度适配层(Scheduler Shim Layers)和调度界面(Scheduler UI)。其中调度核心封装了所有调度算法,它从资源管理平台(如 YARN / K8s)下面收集资源,并负责资源分配请求。它计算得到每个请求的最佳部署位置,然后将响应分配发送到资源管理平台。调度程序核心与下层平台无关,所有通信都通过调度程序接口。调度程序接口通过 API 适配资源管理平台,当前已适配 K8s,计划之后接入 YARN。而最后的调度程序 UI 界面为已托管的节点,计算资源,应用程序和队列提供简单视图。
Yunikorn 相比 K8s 的默认调度器,有着以下的优点:
因此,为了满足云服务上大数据作业资源管理的需求,可采用 Yunikorn 来替代默认调度器来管理 K8s 计算资源。
三、Yunikorn 部署及测试
3.1 安装 Yunikorn
3.1.1 创建配置
创建文件 queues.yaml,可公平策略的名为 root.ad 的资源队列。
对应创建文件以后,即可创建配置:
创建以后,可通过命令查看:
3.1.2 创建容器
使用 K8s 命令创建容器:
3.1.3 安装验证
web 应用启动后,可使用端口 9889 查看 Yunikorn 页面:
3.2 大数据(Spark/Flink)应用适配
配置应用只需要加入队列标签和调度器名称即可调用 Yunikorn 队列资源,Spark 任务和 Flink 任务都可通过这种方式像运行在 YARN 平台上一样运行在 K8s 中。
四、实际应用举例
Lakehouse 是移动云上基于 K8s 构建的云原生数据湖服务,可广泛应用于金融、政务和互联网等领域。它提供一站式的流处理、批处理、交互式分析的 Serverless 融合大数据处理分析服务,企业使用标准 SQL 即可完成云上多数据源的分析计算,助力企业快速构建数据湖/数仓解决方案,洞察业务价值。
该产品选择了 Yunikorn 作为其容器资源管理:
1.统一管理 K8s 计算资源,服务可根据需要分配给各个作业。2.计算资源可随时扩缩容,满足多样化客户的需求。
使用 Yunikorn 管理 K8s 资源可实现如同 Hadoop 的 YARN 资源队列:
类似 YARN 资源队列的好处是各个应用商可根据其已在私有云中运行的需要灵活配置其计算资源,同时其实时的资源分配也是动态分配的,即只需要设置父目录可用资源,各个应用分类可设置最大资源(所有分类之和可大于其父目录的资源)。其效果就是:不同资源需求的应用可分配在不同资源中,但仍能灵活的进行互补;合理地设置完其队列的策略后,即使所有应用同时请求了最大资源,仍能保证重要的应用可顺利运行。
同时 Yunikorn 支持对子节点资源单独设置用户权限,因此平台可直接通过配置其 acl 参数接入用户系统,可同步管理员对于权限的操作,极大的缩短了开发进程。
综上,数据湖产品 Lakehouse 通过 Yunikorn 完成了大数据业务应用从私有云迁入公有云的适配,并且通过特定的策略完成云上资源的最大利用。
五、总结及拓展
目前 Kubernetes 容器在云化服务领域得到了较大的应用,其资源调度器基本上使用的都是默认的调度器,用户只能设置固定的资源,无法适配特定应用的优先级要求。
而 Yunikorn 通过接管容器资源并对其队列化管理,利用 Kubernetes 本身调度接口对于应用申请资源统一分配。大数据应用只需要添加配置即可完成资源接管,像提交至 Hadoop 的 YARN 资源平台一样提交至 K8s 集群。
同时,由于 Yunikorn 本身为开源平台,如果特定应用有无法满足的策略需求的话,只需要适配接口在策略核心项目中开发特定的策略即可,可扩展性较强。
本文介绍了开源的 K8s 资源管理器 Yunikorn,分析了它的架构及其优势,同时给出了部署方式及测试用例,并结合实际案例,帮助读者进一步了解其在大数据领域的优势和发展方向。
评论