最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

Cloudera 开源新项目:轻量级通用资源调度程序 YuniKorn

  • 2019-07-18
  • 本文字数:2282 字

    阅读完需:约 7 分钟

Cloudera 开源新项目:轻量级通用资源调度程序YuniKorn

2019 年 7 月 17 日,Cloudera 官方博客发文开源了一个幕后工作很久的大数据存储和通用计算平台交叉的新项目——YuniKorn。据介绍,YuniKorn 是一种轻量级的通用资源调度程序,适用于容器编排系统,负责为大数据工作负载分配/管理资源,包括批处理作业和常驻运行的服务。


以下为博客原文的译文


Hello World,已经有一段时间了!


今天我们非常兴奋地宣布开源我们在幕后工作了很久的大数据存储和通用计算平台交叉的一个令人兴奋的新项目 - YuniKorn!- 一个新的独立通用资源调度程序,负责为大数据工作负载分配/管理资源,包括批处理作业和常驻运行的服务。


让我们一起来深入了解一下!

介绍

YuniKorn 是一种轻量级的通用资源调度程序,适用于容器编排系统。它的创建是为了一方面在大规模,多租户环境中有效地实现各种工作负载的细粒度资源共享,另一方面可以动态地创建云原生环境。YuniKorn 为混合工作负载提供统一的跨平台调度体验,包括无状态批处理工作负载和状态服务,支持但不限于 YARN 和 Kubernetes。YuniKorn[‘ju:nikɔ:n]是一个虚构的词,“Y”代表 YARN,“K”代表 K8s,“Uni”代表统一,其发音与“Unicorn”相同。创建它是为了最初支持这两个系统,但最终目的是创建一个可以支持任何容器协调器系统的统一调度程序。


YuniKorn 目前有 4 个组件


  • yunikorn-scheduler-interface

  • yunikorn-core

  • yunikorn-k8shim

  • yunikorn-web


我们将在下面稍后深入讨论这些问题。

背景

企业用户在不同的平台上运行工作负载,例如 YARN 和 Kubernetes。他们需要使用不同的资源调度程序,以便规划其工作负载有效地在这些平台上运行。目前,调度程序生态系统是分散的,并且在平衡现有用例(如批处理工作负载)以及云本机体系结构,自动扩展等新需求方面的实现不是最理想的。例如:


  1. YARN 具有批量工作负载的 Capacity Scheduler 和 Fair Scheduler。

  2. K8s 具有服务的默认调度程序。对于批处理工作负载,社区有 Kube-batch,Poseidon,Rubix(Spark 的 Scheduler 扩展)。


我们调查了这些项目,并意识到到目前为止还没有一个完美的方案来支持无状态批处理作业(需要公平性,高调度吞吐量等)和长期运行服务(需要持久化存储,复杂的编排约束,等等。)。这促使我们必须创建一个统一的调度框架来满足所有这些重要需求,并使大数据和云原生社区受益。

架构

YuniKorn 的其中一个设计目标是将调度程序与下面的资源管理系统分离,为此,我们创建了一个定义通信协议的通用调度程序接口。通过利用它,scheduler-core 和 shim 一起工作来处理调度请求。关于 YuniKorn 组件的解释如下。



图:YuniKorn 架构

YuniKorn 的主要模块

YuniKorn -scheduler-interface:调度程序接口是资源管理平台(如 YARN / K8s)将通过诸如 GRPC /编程语言绑定之类的 API 与之交谈的抽象层。


YuniKorn Core:YuniKorn Core 封装了所有调度算法,它从资源管理平台(如 YARN / K8s)下面收集资源,并负责资源分配请求。它决定每个请求的最佳部署位置,然后将响应分配发送到资源管理平台。调度程序核心与下层平台无关,所有通信都通过调度程序接口。


Scheduler Shim Layers:调度程序 Shim 在主机系统内运行(如 YARN / K8s),它负责通过调度程序接口转换主机系统资源和资源请求,并将它们发送到调度程序核心。在做出调度程序决策时,它负责实际的 pod /容器绑定。


Scheduler UI:调度程序 UI 为已托管的节点,计算资源,应用程序和队列提供简单视图。

YuniKorn 的一些特性

以下是 YuniKorn 目前支持的调度功能列表:


  • 调度功能支持批处理作业和长期运行/有状态服务

  • 具有最小/最大资源配额的分层池/队列

  • 队列,用户和应用程序之间的资源公平性

  • 基于公平性的跨队列抢占

  • 自定义资源类型(如 GPU)调度支持

  • 丰富的编排约束支持

  • 根据策略自动将传入的容器请求映射到队列

  • 对节点使用专用配额/ ACL 管理将大的集群拆分成若干子群集


同时, YuniKorn 作为调度程序对 K8S 的一些支持如下:


  • 支持 K8s 谓词。如 pod 亲和/反亲和,节点选择器

  • 支持持久化存储,配额申请等

  • 从 configmap 动态加载调度程序配置(热刷新)

  • 可以在 Kubernetes 之上部署

  • YuniKorn Web 支持监

  • 视调度程序队列,资源使用,应用程序等

用于监控 YuniKorn 队列资源使用情况的 Web UI


YuniKorn Web UI

用于监控 YuniKorn 应用程序管理和资源使用情况的 Web UI


YuniKorn 用于监控的 Web UI

下一步工作 ?

在单一系统上运行混合负载存在许多的挑战,YuniKorn 是我们打算让这条路径更容易的选择。我们的目标是开始支持各种大数据工作负载运行在 K8S 集群之上。同时,我们正在努力更好地支持 K8S 上的 Spark,Flink 和 Tensorflow 等工作负载。我们的最终目标是为大数据和云原生世界带来最佳的调度体验。


作者介绍:


Weiwei Yang,Cloudera 的软件工程师,Apache Hadoop 提交者和 PMC 成员,专注于分布式系统上的资源调度。


Wangda Tan,Cloudera 的 K8S/Yarn 团队资深软件工程师经理,Apache Hadoop PMC 成员和提交者。自 2011 年以来的 Apache Hadoop。资源管理,调度系统,计算平台的深度学习。


Sunil Govindan,Cloudera 软件工程经理。自 2013 年以来的 Apache Hadoop 项目,贡献者,提交者和 PMC 成员。Hadoop YARN 调度。


Wilfred Spiegelenburg,Cloudera 软件工程师。6 年的 Apache Hadoop 开发经验,主要在 YARN,MapReduce 和 Spark。


Vinod Kumar Vavilapalli,Hortonworks / Cloudera 的工程总监。Apache Hadoop PMC 主席。ASF 会员。Apache Hadoop 创始团队成员之一。主要精力在大数据,大规模调度,容器化支持,扩展性及开源社区。


原文链接:


https://blog.cloudera.com/blog/2019/07/yunikorn-a-universal-resource-scheduler/


2019-07-18 11:519358

评论 1 条评论

发布
用户头像
新的开源工具,贴个GitHub地址,可以一试哈。
https://github.com/cloudera/yunikorn-core
2019-07-18 13:38
回复
没有更多了
发现更多内容

Docker 教程(三):Docker 命令

看山

Docker

控制台的安装与使用 | 联盟链开发(二)

李大狗

联盟链 FISCO BCOS 狗哥

Seldon使用(一):简介及入门

托内多

tensorflow kubeflow Kubernetes PyTorch seldon

FISCO BCOS 开发环境节点搭建 | 联盟链开发(一)

李大狗

区块链 联盟链 FISCO BCOS 狗哥

Vue3源码 | createApp都干了什么?

梁龙先森

源码分析 大前端 Vue3

银行业只是开始,60个可以被区块链改变的行业

CECBC

数字技术

MongoDB中的null类型查询

Kylin

mongodb 3月日更 21天挑战 数据库查询 NoSql查询语法

大数据中流量分析常见分类

大数据技术指南

大数据 28天写作 3月日更

科技强国的使命召唤中,百度AI埋下三根未来“引线”

脑极体

探索 Snabbdom 模块系统原理

pingan8787

JavaScript Vue Web Vue 3 Snabbdom

工作多年后我更明白了UT的重要性

好好学习,天天向上

架构师训练营 4 期 第12周

引花眠

架构师训练营 4 期

为何数字人民币要采用“小额匿名、大额可溯”的设计?

CECBC

数字货币

Go Channel源码分析

非晓为骁

源码分析 channel Go 语言

JVM - 类加载器

insight

3月日更

数据仓库设计

大数据技术指南

大数据 28天写作 3月日更

从Nacos客户端视角来分析配置中心原理

麦洛

nacos SpringCloud Alibaba 动态配置

产品训练营第八章作业

Arnold

hive数据倾斜解决办法

五分钟学大数据

大数据 hive 28天写作 3月日更

2021十大区块链领域即将起飞

CECBC

区块链 投资

在离开新手村后,你该如何的走出呢?打造属于你的快与慢的能力。

叶小鍵

【LeetCode】矩阵置零Java题解

Albert

算法 LeetCode 28天写作 3月日更

架构 idea

型火🔥

架构 原则 架构之道

Java8中的 Stream 那么彪悍,你知道它的原理是什么吗?

Java小咖秀

Java 面试 stream java8 开发

新年上班第一天生产环境分布式文件系统崩了!!

冰河

高可用 分布式存储 fastdfs 可扩展 无限扩容

(继续码字) 因果有顺序吗?是一种必要充分条件吗?

mtfelix

28天写作 bewriting 胡思乱想

领域驱动设计101 - 通用语言

luojiahu

领域驱动设计 DDD

Spark详细剖析

五分钟学大数据

大数据 spark 28天写作 3月日更

uni-app跨端开发H5、小程序、IOS、Android(四):了解uni-app项目结构

黑马腾云

html5 微信小程序 uni-app android iOS Developer

2.3 Go语言从入门到精通:数据类型

xcbeyond

3月日更 Go 语言

OpenCV 写图像也有讲究,取经之路第 5 天

梦想橡皮擦

28天写作 3月日更

Cloudera 开源新项目:轻量级通用资源调度程序YuniKorn_云原生_Weiwei Yang 等_InfoQ精选文章