点击蓝字 关注我们

K8s 打通了主流公私云之间的壁垒,成为唯一连通公私云的基础架构平台。K8s 是未来云端的趋势,全面拥抱 K8s 成为更多企业推动 IT 现代化的选择。

杭州思科基于 Apache DolphinScheduler,也在进行支持 K8s 的相关探索,且部分功能已经成功上线运行。今天,来自杭州思科的大数据工程师 李千,将为我们分享他们的开发成果。

PROFILE

李千

杭州思科 大数据工程师,多年大数据解决方案经验,有 Spark,Flink,以及调度系统,ETL 等方面的项目经验。

本次我的分享主要分为这几部分,Namespace 管理,持续运行的 K8s 任务,K8s 任务的工作流调度,以及未来的规划。

01 Namespace 管理

资源管理

第一部分中,我首先介绍一下资源管理。我们引入资源管理目的,是为了利用 K8s 集群运行不属于 Apache DolphinScheduler 所属的调度概念上的任务,比如 Namespace,更类似于一个数据解决方案,如果 CPU 的 memory 有限,就可以限制队列中的资源,实现一定的资源隔离。

以后我们可能会把一部分资源管理功能合并到 Apache DolphinScheduler 上。

增删维护管理

我们可以加一些 Type,即标记的类型,比如某些 Namespace 只允许跑一些特定类型的 job。我们可以统计Namespace 下面的任务数量、pod 数量、请求资源量、请求等,查看队列的资源使用情况,界面默认只有管理员才可以操作。

多 K8s 集群

K8s 支持多个集群,我们通过 Apache DolphinScheduler 客户端连接到多个 K8s 集群,batch、PROD 等可以搭建多套这K8s 集群,并通过 Namespace 支持多套 K8s 集群。

我们可以编辑所开发的集群,修改所有的属性,如内存等。

在新版中,用户权限的管理位于 user master 中,可以给某个用户授权,允许用户可以向某个 Namespace 上提交任务,并编辑资源。

02 持续运行的 K8s 任务

第二部分是关于我们目前已经支持的任务类型。

启动不退出的普通镜像,如 ETL 等

比如 ETL 这种提交完之后必须要手动操作才会退出的任务。这种任务一旦提交,就会把数据 sink,这种任务理论上只要不做升级,它永远不会停。

这种任务其实调度可能用不到,因为它只有启停这两种状态。所以,我们把它放在一个实时列表中,并做了一套监控。POD是实时运行的状态,主要是通过一个 Fabris operator 进行交互,可以进行动态进行扩展,以提高资源利用率。

Flink 任务

我们对于 CPU 的管理可以精确到 0.01%,充分利用了 K8s 虚拟 CPU。

另外,我们也常用 Flink 任务,这是一种基于 ETL 的扩展。Flink 任务界面中包含编辑、查看状态、上线、下线、删除、执行历史,以及一些监控的设计。我们用代理的模式来设计 Flink UI,并开发了权限管控,不允许外部的人随意修改。

Flink 默认了基于 checkpoint 启动,也可以指定一个时间创建,或基于上一次 checkpoint 来提交和启动。

Flink 任务支持多种模式镜像版本,因为 K8s 本身就是运行镜像的,可以直接指定一些镜像来选择使用包,或通过文件上传的方式提交任务。

另外,Batch 类型的任务可能一次运行即结束,或是按照周期来调度,自动执行完后退出,这和 Flink 不太一样,所以对于这种类型的任务,我们还是基于 Apache DolphinScheduler 做。

03 K8s 任务的运行

K8s 任务的工作流调度

我们在最底层增加了一些 Flink 的 batch 和 Spark 的 batch 任务,添加了一些配置,如使用的资源,所运行的 namespace 等。镜像信息可以支持一些自定义参数启动,封装起来后就相当于插件的模式,Apache DolphinScheduler 完美地扩展了它的功能。

Spark 任务

Spark 任务下可以查看 CPU 等信息,上传文件支持 Spark Jar 包,也可以单独上传配置文件。

这种多线程的上层,可以大幅提高处理速度。

04 其他和划化

Watch 状态

除了上述改动,我们还对任务运行状态进行了优化。

当提交任务后,实际情况下运行过程中可能会出现失败,甚至任务的并行度也会基于某些策略发生改变。这时,我们就需要一种 watch 的方式来动态实时地来获取任务状态,并同步给 Apache DolphinScheduler 系统,以保证界面上看到的状态一定是最准确的。

Batch 做不做 watch 都可以,因为这不是一个需要全量监听的独立任务而且 namespace 的资源使用率也是基于 watch 模式,这样就可以保证状态都是准确的。

多环境

多环境是指,同一个任务可以推送到不同的 K8s 集群上,比如同一个Flink 任务。

从代码上来说,watch 有两种方式,一种是单独放一些 pod,比如当使用了 K8s 模块时,定义多个 K8s 集群的信息,在每个集群上创建一些watch pod 来监听集群中的任务状态,并做一些代理的功能。另一种是跟随 API 或单独服务,启动一个监听服务监听所有K8s集群。但这样无法在外做一些K8s内外网络的代理。

而针对 Batch 有多种方案,一种是可以基于 Apache DolphinScheduler 自带功能,通过同步的方式进行 watch,这和 Apache DolphinScheduler 比较兼容。关于这方面的工作我们未来可能很快会提交 PR。Spark 使用相同的模式,提供一些 pod 来进行交互,而内部代码我们使用的是 Fabric K8s 的 client。

今后,我们将与 Apache DolphinScheduler 一起共建,陆续支持这里讨论的功能,并和大家分享更多关于我们的工作进展。谢谢大家!

参与贡献

随着国内开源的迅猛崛起,Apache DolphinScheduler 社区迎来蓬勃发展,为了做更好用、易用的调度,真诚欢迎热爱开源的伙伴加入到开源社区中来,为中国开源崛起献上一份自己的力量,让本土开源走向全球。

参与 DolphinScheduler 社区有非常多的参与贡献的方式,包括:

贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。

社区汇总了以下适合新手的问题列表:https://github.com/apache/dolphinscheduler/issues/5689

非新手问题列表:https://github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A%22volunteer+wanted%22

如何参与贡献链接:https://dolphinscheduler.apache.org/zh-cn/docs/development/contribute.html

来吧,DolphinScheduler开源社区需要您的参与,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是巨大的。

参与开源可以近距离与各路高手切磋,迅速提升自己的技能,如果您想参与贡献,我们有个贡献者种子孵化群,可以添加社区小助手微信(Leonard-ds) ,手把手教会您( 贡献者不分水平高低,有问必答,关键是有一颗愿意贡献的心 )。

添加小助手微信时请说明想参与贡献。

来吧,开源社区非常期待您的参与。

活动推荐

2022 年 3 月 26 日(星期六), Apache DolphinScheduler 和 Apache ShenYu(Incubating) 两大新生开源力量将携手,邀请来自 YY直播、自如、政采云等团队的实战型专家,更有 Apache ShenYu 创始人 & PPMC  & Dromara 开源组织创始人,以及Apache ShenYu Committer 为企业大数据开发者、开源技术爱好者带来一场技术盛宴。

本次活动受疫情影响仍以线上直播的形式开展,活动现已开放免费报名,欢迎扫描下图二维码,或点击“阅读原文”免费报名!

扫码观看直播

扫码入直播群

☞Apache DolphinScheduler&ShenYu(Incubating)联合 Mee‍tup,暖春 3 月与你相约

☞杭州思科对 Apache DolphinScheduler Alert 模块的改造

☞日均处理 10000+ 工作流实例,Apache DolphinScheduler 在 360 数科的实践☞Apache DolphinScheduler 2.0.5 发布,Worker 容错流程优化

☞Apache DolphinScheduler 版本控制核心原理揭

☞喜讯 | Apache DolphinScheduler PMC Chair 代立冬,PMC 郭强获邀成为 ASF Member

☞途家大数据平台基于 Apache DolphinScheduler 的探索与实践

☞Apache DolphinScheduler 2.0 时代 API 接口变化

点击阅读原文,免费报名!

全面拥抱 K8s,ApacheDolphinScheduler 应用与支持 K8s 任务的探索相关推荐

  1. Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.感谢 在此感谢.net ...

  2. 【K8S系列】深入解析 k8s:入门指南(一)

    目录 序言 1.背景介绍 2.前情提要 2.1 架构对比 2.2 容器技术 2.3 容器技术的优点 2.4 容器编排 3 K8S介绍 3.1 K8S是什么 3.2 K8S设计思想 3.3 K8S的优势 ...

  3. centos7中kubeadm方式搭建k8s集群(crio+calico)(k8s v1.21.0)

    文章目录 centos7中kubeadm方式搭建k8s集群(crio+calico)(k8s v1.21.0) 环境说明 注意事项及说明 1.版本兼容问题 2.镜像问题 安装步骤 安装要求 准备环境 ...

  4. 【云原生】K8s简介之什么是K8s

    文章目录 1.概述 2.什么是容器引擎? 3.什么是容器? 4.什么是容器编排? 5.容器编排工具 6.什么是K8s? 7.为什么市场推荐K8s 8.K8s架构 9.K8s组件 10.为什么需要 k8 ...

  5. K8S实战集训第二课 K8S 存储 之 Ceph 分布式存储系统

    文章目录 为什么要用Ceph Ceph架构介绍 Ceph核心概念 RADOS Librados Crush Pool PG Object Ceph核心组件 OSD Monitor MDS Mgr RG ...

  6. k8s dashboard_ASP.NET Core on K8S深入学习(2)部署过程解析与部署Dashboard

    文章转载于公众号[恰同学骚年],作者Edison Zhou 上一篇<K8S集群部署>中搭建好了一个最小化的K8S集群,这一篇我们来部署一个ASP.NET Core WebAPI项目来介绍一 ...

  7. 【K8S实战系列-nignx-2】k8s中configmap挂载配置nginx.conf

    [K8S实战系统-nignx-2]k8s中configmap挂载配置nginx.conf 1. ConfigMap是什么 ConfigMap作用是存储不加密的数据到etcd中,让Pod以变量或数据卷V ...

  8. 企业项目实战k8s篇(十三)k8s容器资源限制

    k8s容器资源限制 一.k8s容器资源限制 二.内存限制 三.cpu限制 四.namespace限制 1.为namespace设置资源限制 2.为namespace设置资源配额 3. Namespac ...

  9. 【Go】K8s 管理系统项目[Jenkins Pipeline K8s环境–应用部署]

    K8s 管理系统项目[Jenkins Pipeline K8s环境–应用部署] 1. k8s-plantform-api-Pipeline 考虑到实际工作中前后端可能是不同的同学完成,一般Api部分完 ...

最新文章

  1. 无副作用、效果超越吗啡!用微电极精准管理大脑“疼痛中心”,科学家探索止痛新方法...
  2. 解决启动flanneld失败的方法
  3. 靠谱的div引入任何外链内容
  4. E13- terminal is not big enough
  5. java.sql.SQLException: Access denied for user ‘‘@‘localhost‘ (using password: NO)报错问题解决
  6. linux 通配符与正则表达式
  7. python基础教学PPT讲义(基础部分)
  8. js之prototype、__proto__与constructor(图解)以及原型链
  9. RMI、RPC、SOAP通信技术介绍及比对
  10. 构建一个可行的BI系统的造价是多少,实施周期?具备条件基础是什么? 数据量有要求么
  11. deeping linux安装安卓,Deepin 安装Android-studio
  12. matlab bar 填充花纹,[转载]Matlab绘制柱状图采用不同图案填充
  13. 仿网易严选微信小程序
  14. Java8~9章 复习(三)
  15. SVG夜晚床月亮场景代码
  16. 我对计算机专业的看法及对未来的计划
  17. 【debug】Python pandas dataframe.groupby().sum不显示结果,只显示groupby中的条件列
  18. Naive script setup写法上传注意
  19. phpyun人才招聘系统vip版升级大屏数据v5.1升级v6.0的步骤
  20. 文献综述搜索利器——HistCite

热门文章

  1. 利盟Lexmark Impact S305 一体机驱动
  2. vue密码登录和账号登录页面的设计
  3. HTML5期末大作业:水果网站设计——水果介绍-橙子之家(6页) HTML+CSS+JavaScript 学生dreamweaver网页设计作业成品
  4. 这人乃是智多星吴用 未来软件
  5. 2014年重要的软件开发发展
  6. 【Unity植物大战僵尸】搭建基本场景(一)
  7. 关于字符串中含有中英文逗号,分号获取,判断并转换
  8. 【Kevin Learn QMUI】-->QMUIDialog
  9. 解决微信QQ邮箱提醒收不到通知的问题
  10. 一生情缘繫交大——卢善栋老学长