- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 视频嵌入链接 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
DolphinScheduler & K8s在优路科技的实践-李文禾
李文禾 重庆优路科技书香事业部大数据组及创新组负责人 & Apache DolphinScheduler Committer
1、优路科技为何选择K8s
2、优路科技为何在众多大数据任务调度中选择了DolphinScheduler
考虑到以上这些工具要么活跃度不高且关注的人数不是很多,要么太重量级了,要么都缺少监控和任务配置调度管理。因此结合公司的具体情况,再加上对实时的需求量不高,选定了较轻量级的 DataX 作为数据同步的工具,但是就面临了一个问题,任务调度的问题,那个时候 DolphinScheduler 还么问世呢,最后选择了 Airflow 。
在使用Airflow的过程中,出现过以下问题:
1)、部署及集群扩容相较于复杂及麻烦;
2)、通过Python代码绘制DAG,当任务数及依赖增多后,不便于维护;
3)、当任务量多的时,容易造成卡死。
那么 DolphinScheduler 的出现解决了我司的哪些问题呢?
1)、部署及集群扩容简单,本身我司也对 DolphinScheduler 做了一定的定制化;
2)、流程可视化,并且可以通过拖拽的方式来绘制DAG;
总结:
Kubernetes 解决了部署、维护、滚动升级及高可用的问题(也就是自动化运维),同时也解决了开发、测试、生产的运行环境不一致的问题。因此研发人员的重心着重在产品研发上,而不是在运维上,这也是我们的主旨:快速试错、结果导向。
DolphinScheduler 主要是解决了数据同步任务需要人员编码的问题,让不会编码的人员也能够快速进行任务配置,提高开发人员及业务人员的工作效率,同时由于自定义简单相较于简单,很容易对 DolphinScheduler 高度定制化,不需要重复造轮子。
展开查看详情
1 .DolphinScheduler & Kubernetes 在优路科技的实践 李文禾 重庆优路科技书香事业部大数据组及创新组负责人
2 .目录 01 前言 02 介绍Kubernetes 03 介绍DolphinScheduler 04 结束语
3 .01 前言 1、关于优路 2、关于产品
4 .关于优路 重庆优路科技有限公司成立于2010年,以建设移动互联网科技创业加速器为突破,夯实互联网科技发 展基础;以增强孵化能力为重点,打造一个全新的平台。重庆优路延伸的公司主要有重庆可兰达科技 有限公司、重庆优启科技有限公司、重庆市九吨科技有限公司等互联网创新型公司。 用户至上 快速试错 结果导向 极简 共赢
5 .关于产品 重庆柯兰达科技 重庆优启科技 万年历 点滴日历 莉莉斯 即阅小说 喵喵记账 Moo日记 重庆九吨科技 优路游戏 小精灵美化 爱字幕 新晴天气 落樱小屋 街头飞车 女皇之刃
6 .02 介绍Kubernetes 1、Kubernetes是什么 2、Kubernetes的架构 3、Kubernetes的特点 4、Kubernetes的应用场景
7 .Kubernetes是什么 Kubernetes 是一个开源项目,用于统一管理容器化的应用集群。 Kubernetes 负责在大规模服务器环境中管理容器组(Pod)的扩展、复制、健康,并解决 Pod 的启 动、负载均衡等问题。 Kubernetes 最初是 Google 发布的,现在已经被多家大公司支持,例如 Microsoft, RedHat, IBM, Docker。
8 .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 内 部的服务发现和负载均衡
9 .Kubernetes的架构
10 .Kubernetes的特点 自动化 批处理 Kubernetes有一套自动化机制。 特点 提供一次性任务,定时任务; 可以降低整个集群的运维成本 满足批量数据处理和分析的场 和运维难度,可以实现自动扩 景。 容、自动更新、自动部署、自 动化管理资源等等。 以服务为中心 存储编排 Kubernetes以服务为中心,可 挂载外部存储系统,无论是来 以让我们抛开系统环境和运行 自本地存储,公有云(如阿里 细节,有更多精力去处理逻辑 云、AWS等),还是网络存储 业务。 (如NFS、GlusterFS等)都 作为集群资源的一部分使用, 高可用 滚动更新 极大提高存储使用灵活性。 Kubernetes会定期进行检查应 Kubernetes可以使整个集群平 用实例,这包括对这些实例的 滑升级。就是说,Kubernetes 数量检查,实例健康状态检查 可以在不停止对外服务的前提 等等。 下完成应用的更新。
11 .Kubernetes的应用场景 1、持续集成及自动化部署 系统会自动构建、测试并准备代码变更,以便将其发布到指定环境的过程,包括开发环境、预发布环境、生产环境等。自动化部署解决了手动部署 既慢又容易出错,并且无法跟上部署环境中不断增加的部署目标数量。
12 .Kubernetes的应用场景 2、应用微服务化 随着业务的发展,许多应用中有很多相同业务逻辑的重复代码,且单个应用为了给其他应用提供接口,增加了很多不属于该应用的逻辑,导 致应用边界模糊,功能归属混乱。因此出现开发、测试、部署、维护愈发困难。 由于我司技术栈不统一,采用微服务(Microservices)进行改造将面临一些问题: 1、开发人员要处理分布式系统的复杂性; 2、服务之间的分布式通信问题; 3、服务的注册与发现问题; 4、服务之间的分布式事务问题; 5、服务管理的复杂性,服务的编排; Istio是一个用于连接/管理以及安全化微服务的开放平台,提供了一种简单的方式用于创建微服务网络,并提供负载均衡、服务间认证以及监控等能力, 并且关键的一点是并不需要修改服务本身就可以实现上述功能。 Istio主要提供以下功能: 1、流量管理:控制服务之间调用的流量和API调用,使得调用更可靠,并使网络在恶劣情况下更加健壮; 2、可观察性:获取服务之间的依赖,以及服务调用的流量走向,从而提供快速识别问题的能力; 3、策略执行:控制服务的访问策略,不需要改动服务本身; 4、服务身份和安全:为网格中的服务提供可验证身份,并提供保护服务流量的能力,使其可以在不同可信度的网络上流转等
13 .Kubernetes的应用场景 Istio与Kubernetes的架构图
14 .Kubernetes的应用场景 搭配Kiali监控各个服务的情况
15 .03 介绍DolphinScheduler 1、DolphinScheduler是什么 2、DolphinScheduler的架构 3、DolphinScheduler的特点 4、DolphinScheduler的应用场景
16 .DolphinScheduler是什么 Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度系统。致力于 解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
17 .DolphinScheduler的架构
18 .DolphinScheduler的特点 特点 高可靠性 简单易用 丰富的使用场景 高扩展性 去中心化的多 Master 和 DAG监控界面,所有流 支持暂停恢复操作,支持 支持自定义任务类型,调 多 Worker ,自身支持 程定义都是可视化,通过 多租户,更好的应对大数 度器使用分布式调度,调 HA 功能,采用任务队列 拖拽任务定制DAG,通 据的使用场景,支持更多 度能力随集群线性增长, 来避免过载,不会造成机 过API方式与第三方系统 的任务类型,如 Spark、 Master 和 Worker 支持 器卡死。 对接,一键部署。 Hive、MR、Python、 动态上下线 Sub_process、Shell
19 .DolphinScheduler的应用场景 1、数据同步 业务早期的时,没有复杂的数据统计与分析,可以在数据库中进行数据查询及统计来,或者借助于第三方平台。随着业务的增 长,数据库压力越来越大,况且常规 OLTP 数据库并不适合做数据分析,因此需要自建 OLAP 数据库,如:ClickHouse 。 当接入的数据库越来越来多,各个数据库中的数据需要相互依赖,那么需要把依赖的数据进行数据同步。 数据同步的几种方式: 1)、基于数据库日志的数据同步 2)、基于Sqoop的数据同步 3)、基于Datax的数据同步 4)、基于Databus的数据同步 5)、基于Gobblin的数据同步 6)、基于FlinkX的数据同步 7)、基于Apache NIFI的数据同步 8)、基于StreamSets的数据同步
20 .DolphinScheduler的应用场景 考虑到以上这些工具要么活跃度不高且关注的人数不是很多,要么太重量级了,要么都缺少监控和任务配置调度管理。因此 结合公司的具体情况,再加上对实时的需求量不高,选定了较轻量级的 DataX 作为数据同步的工具,但是就面临了一个问 题,任务调度的问题,那个时候 DolphinScheduler 还么问世呢,最后选择了 Airflow 。 在使用Airflow的过程中,出现过以下问题: 1)、部署及集群扩容相较于复杂及麻烦; 2)、通过Python代码绘制DAG,当任务数及依赖增多后,不便于维护; 3)、当任务量多的时,容易造成卡死。 那么 DolphinScheduler 的出现解决了我司的哪些问题呢? 1)、部署及集群扩容简单,本身我司也对 DolphinScheduler 做了一定的定制化; 2)、流程可视化,并且可以通过拖拽的方式来绘制DAG;
21 .DolphinScheduler的应用场景
22 .DolphinScheduler的应用场景 2、数据处理 虽然 DolphinScheduler 本身可以执行 Jar 、Python 程序。对于我们来说,DolphinScheduler 就是一个任务管理平台,因 此我们的整个架构,DolphinScheduler 职责只是做定时调度。像数据处理、数据爬取等都是交于Kubernetes中执行的。 那么我们使用DolphinScheduler的流程是怎样的呢? 1)、编写数据处理逻辑,并提交代码到Gitlab上; 2)、Gitlab触发Runner,然后进行代码测试、编译、打包; 3)、在Runner中调用DolphinScheduler API并根据配置生成任务; 4)、DolphinScheduler 定时调度生成的任务,并通过Spark-Client提交任务到Kubernetes上。
23 .DolphinScheduler的应用场景
24 .05 结束语
25 .结束语 Kubernetes 解决了部署、维护、滚动升级及高可用的问题(也就是自动化运维),同时也解决 了开发、测试、生产的运行环境不一致的问题。因此研发人员的重心着重在产品研发上,而不是 在运维上,这也是我们的主旨:快速试错、结果导向。 DolphinScheduler 主要是解决了数据同步任务需要人员编码的问题,让不会编码的人员也能够 快速进行任务配置,提高开发人员及业务人员的工作效率,同时由于自定义简单相较于简单,很 容易对 DolphinScheduler 高度定制化,不需要重复造轮子。
26 .THANKS 李文禾 嘉宾企业 logo