点击蓝字 关注我们

5a427ed76c9074ae0fe1209750f64480.png

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

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

PROFILE

李千

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

bb02a3c1a8a1dbfdd5e64567ca525028.png

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

01 Namespace 管理

资源管理

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

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

增删维护管理

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

a5ea877b23f73c10e69846cce35f9e82.png

多 K8s 集群

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

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

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

02 持续运行的 K8s 任务

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

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

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

50e4348da590e553394856f775592731.png

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

Flink 任务

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

3e4cd79b778a93d8df19aaafef77cccc.png

b130b1767084d0de186b10ed52121681.png

3dcb09ee3b28f269722d09c8b9b5ecd6.png

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

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

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

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

03 K8s 任务的运行

K8s 任务的工作流调度

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

37a10522b5cfab86b7d23166c76f7ac4.png

Spark 任务

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

1c2d7f0aa84b968e2b48bb43946f7141.png

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

04 其他和划化

Watch 状态

63b58480b2aaffd757a339bdb59fa9e7.png

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

当提交任务后,实际情况下运行过程中可能会出现失败,甚至任务的并行度也会基于某些策略发生改变。这时,我们就需要一种 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 社区迎来蓬勃发展,为了做更好用、易用的调度,真诚欢迎热爱开源的伙伴加入到开源社区中来,为中国开源崛起献上一份自己的力量,让本土开源走向全球。

495a6757c422d0135121e49568b083d2.png

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

73c2024faf5347402a596337b2c4dacb.png

贡献第一个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 为企业大数据开发者、开源技术爱好者带来一场技术盛宴。

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

7ba5ffc830fc40ed83fe7cd0f637cda0.png

扫码观看直播

19c4688adcc5ce726a28aa016989e933.png

扫码入直播群


fcb05adb63ed7060ac234d413ac5221e.png


☞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 接口变化

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

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐