DolphinScheduler & K8s 在优路科技的实践

T 摘要 ·

    本文通过介绍DolphinScheduler on Kubernetes 在优路科技的实践,阐述了DolphinScheduler如何在云原生时代,更好地助力企业实现高效的数据调度解决方案。 

讲师介绍

李文禾,重庆优路科技书香事业部大数据组及创新组负责人 & Apache DolphinScheduler Committer,文禾也是 DolphinScheduler 对 K8s 实现的主要作者。

10 月 24 日的易观A10数据智能峰会 - 开发者日上,来自优路科技的李文禾同学带来了题为《DolphinScheduler & K8s 在优路科技的实践》的分享。以下是分享视频: 

1

前言

关于优路

重庆优路科技有限公司成立于2010年,以建设移动互联网科技创业加速器为突破,夯实互联网科技发展基础;以增强孵化能力为重点,打造一个全新的平台。重庆优路延伸的公司主要有重庆可兰达科技有限公司、重庆优启科技有限公司、重庆市九吨科技有限公司等互联网创新型公司。

关于产品

想必大家可能对优路科技的产品没那么熟悉,但优路旗下有App Store日历类排名第一、几亿人在用的万年历黄历等APP,您的手机上是否也装有这款黄历APP呢?

2

 介绍Kubernetes

Kubernetes是什么

Kubernetes 是一个开源项目,用于统一管理容器化的应用集群。

Kubernetes 负责在大规模服务器环境中管理容器组(Pod)的扩展、复制、健康,并解决 Pod 的启动、负载均衡等问题。

Kubernetes 最初是 Google 发布的,现在已经被多家大公司支持,例如 Microsoft, RedHat, IBM, Docker。

Kubernetes的架构

Kubernetes集群中有2种角色:

1、一个是 Master 作为集群的管理节点,负责管理集群,提供集群的资源数据访问入口       

a)、API Server 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制;

b)、Controller Manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;

c)、Scheduler 负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上,同时 etcd 保存了整个集群的状态;

2、一个是 Node 用来承载被分配 Pod 的运行,是 Pod 运行的宿主机

a)、Kubelet 负责维护容器的生命周期,同时也负责 Volume 和 Network 的管理;

b)、Container Runtime 负责镜像管理以及 Pod 和容器的真正运行时 Kube-Proxy 负责为 Service 提供 Cluster 内部的服务发现和负载均衡

Kubernetes的特点

Kubernetes的应用场景

1、持续集成及自动化部署

系统会自动构建、测试并准备代码变更,以便将其发布到指定环境的过程,包括开发环境、预发布环境、生产环境等。自动化部署解决了手动部署既慢又容易出错,并且无法跟上部署环境中不断增加的部署目标数量。

2、应用微服务化

随着业务的发展,许多应用中有很多相同业务逻辑的重复代码,且单个应用为了给其他应用提供接口,增加了很多不属于该应用的逻辑,导致应用边界模糊,功能归属混乱。因此出现开发、测试、部署、维护愈发困难。

由于我司技术栈不统一,采用微服务(Microservices)进行改造将面临一些问题:

1、开发人员要处理分布式系统的复杂性;

2、服务之间的分布式通信问题;

3、服务的注册与发现问题;

4、服务之间的分布式事务问题;

5、服务管理的复杂性,服务的编排;

Istio是一个用于连接/管理以及安全化微服务的开放平台,提供了一种简单的方式用于创建微服务网络,并提供负载均衡、服务间认证以及监控等能力,并且关键的一点是并不需要修改服务本身就可以实现上述功能

Istio主要提供以下功能:

1、流量管理:控制服务之间调用的流量和API调用,使得调用更可靠,并使网络在恶劣情况下更加健壮;

2、可观察性:获取服务之间的依赖,以及服务调用的流量走向,从而提供快速识别问题的能力;

3、策略执行:控制服务的访问策略,不需要改动服务本身;

4、服务身份和安全:为网格中的服务提供可验证身份,并提供保护服务流量的能力,使其可以在不同可信度的网络上流转等

3

  介绍DolphinScheduler

DolphinScheduler是什么

Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用

DolphinScheduler的架构

DolphinScheduler的特点

DolphinScheduler的应用场景

1、数据同步

 

业务早期的时,没有复杂的数据统计与分析,可以在数据库中进行数据查询及统计来,或者借助于第三方平台。随着业务的增长,数据库压力越来越大,况且常规 OLTP 数据库并不适合做数据分析,因此需要自建 OLAP 数据库,如:ClickHouse 。当接入的数据库越来越来多,各个数据库中的数据需要相互依赖,那么需要把依赖的数据进行数据同步。

数据同步的几种方式:

1)基于数据库日志的数据同步

2)基于Sqoop的数据同步

3)基于Datax的数据同步

4)基于Databus的数据同步

5)基于Gobblin的数据同步

6)基于FlinkX的数据同步

7)基于Apache NIFI的数据同步

8)基于StreamSets的数据同步

考虑到以上这些工具要么活跃度不高且关注的人数不是很多,要么太重量级了,要么都缺少监控和任务配置调度管理。因此结合公司的具体情况,再加上对实时的需求量不高,选定了较轻量级的 DataX 作为数据同步的工具,但是就面临了一个问题,任务调度的问题,那个时候 DolphinScheduler 还么问世呢,最后选择了 Airflow 。

在使用Airflow的过程中,出现过以下问题:

1)部署及集群扩容相较于复杂及麻烦;

2)通过Python代码绘制DAG,当任务数及依赖增多后,不便于维护;

3)当任务量多的时,容易造成卡死。

那么 DolphinScheduler 的出现解决了我司的哪些问题呢?

1)部署及集群扩容简单,本身我司也对 DolphinScheduler 做了一定的定制化;

2)流程可视化,并且可以通过拖拽的方式来绘制DAG;

2、数据处理

虽然 DolphinScheduler 本身可以执行 Jar 、Python 程序。对于我们来说,DolphinScheduler 就是一个任务管理平台,因此我们的整个架构,DolphinScheduler 职责只是做定时调度。像数据处理、数据爬取等都是交于Kubernetes中执行的。

那么我们使用DolphinScheduler的流程是怎样的呢?

1)编写数据处理逻辑,并提交代码到Gitlab上;

2)Gitlab触发Runner,然后进行代码测试、编译、打包;

3)在Runner中调用DolphinScheduler API并根据配置生成任务;

4)DolphinScheduler 定时调度生成的任务,并通过Spark-Client提交任务到Kubernetes上。

4

  结束语

Kubernetes 解决了部署、维护、滚动升级及高可用的问题(也就是自动化运维),同时也解决了开发、测试、生产的运行环境不一致的问题。因此研发人员的重心着重在产品研发上,而不是在运维上,这也是我们的主旨:快速试错、结果导向。

DolphinScheduler 主要是解决了数据同步任务需要人员编码的问题,让不会编码的人员也能够快速进行任务配置,提高开发人员及业务人员的工作效率,同时由于自定义简单相较于简单,很容易对 DolphinScheduler 高度定制化,不需要重复造轮子。

5

参与贡献

参与 DolphinScheduler 社区有非常多的参与贡献的方式,包括文档、翻译、布道、答疑、测试、以及代码等,此外也极其欢迎各种实践文章,DolphinScheduler开源社区非常期待您的参与。

贡献第一个PR(文档、代码) 我们也希望是简单的,试想如果是一个新人一上来就贡献1个改了几十个文件的 PR 将会对参与 review 的伙伴的心理造成多大的摧残,????

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

文档github地址:https://github.com/apache/incubator-dolphinscheduler-website

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

DolphinScheduler's Github Repo 传送门

↓↓↓

https://github.com/apache/incubator-dolphinscheduler

喜欢❤️ DolphinScheduler 的话,别忘了 Star 收藏一下哟~

点击“阅读原文”获取会议PPT资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DolphinScheduler社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值