4 亿用户,7W+ 作业调度难题,Bigo 基于 Apache DolphinScheduler 巧化解
阅读原文时间:2023年07月08日阅读:3

点击上方 蓝字关注我们

✎ 编 者 按

成立于 2014 年的 Bigo,成立以来就聚焦于在全球范围内提供音视频服务。面对 4 亿多用户,Bigo 大数据团队打造的计算平台基于 Apache DolphinScheduler 调度系统日均处理 7W+ 作业。

Bigo 如何基于 Apache DolphinScheduler 打造离线计算服务平台?Bigo 计算平台负责人在 Apache DolphinScheduler Meetup 2021 上进行了用户案例分享,现将演讲整理如下:

01

建设背景

疫情催生了音视频需求快速上涨,加上 5G 技术的推广,让技术积淀深厚的音视频行业迎来了全新的发展机遇。IDC 数据显示,2020上半年,中国视频云基础设施市场规模达到26.3亿美元,预计到 2024 年将超过 191 亿美元,应用场景主要包括长短视频点播、直播、音视频通信、媒体处理、智能内容等。

成立于 2014 年的 Bigo,成立以来就聚焦于在全球范围内提供音视频服务,如今其旗下全球视频直播社区 Bigo live,短视频内容创作平台 Likee,音视频通讯 imo 服务于全球150 个国家的 4 亿多用户,覆盖实时多人语音/视频+直播+点播场景。

Bigo 内部成立了大数据团队来服务 4 亿多用户,并在其下设立计算平台,为整个公司提供大数据计算服务,支持离线、OLAP、实时等多种业务场景。当前,Bigo 计算平台维护着 2000 台离线集群,每天处理着 7W+ 作业,服务上千个用户。

面对如此大规模的任务,Bigo 计算平台使用了 Apache DolphinScheduler、Oozie、Airflow(主要用于机器学习)、Crontab 等多种调度方式,作业以 Spark 为主,覆盖了 Hive、Python、MR、Shell、Sqoop 等。但基于日常业务实践中的使用体验出发,Bigo 计算平台决定不久后将所有调度任务逐步迁移至 DolphinScheduler。

02

为什么迁移到 DolphinScheduler

多种调度方式既为 Bigo 计算平台带来很多选择,但同时也因为调度框架过多,导致用户的入口分散,而且各种调度系统都存在不同程度的缺点,比如 Oozie 使用起来不友好较难上手,Airflow 基于镜像,对于机器学习用户来说很便利,但是稳定性较差。

Bigo 计算平台的目标很明确,就是要搭建一个离线服务平台,作为用户的统一入口。这个服务平台对调度系统的要求是扩展性、易用性要好,且要有完善的API和活跃的社区支持。

综合调研对比 Oozie、Airflow、DolphinScheduler、Livy、DataSphereStudio、DataWorks 后,Bigo计算平台最终得出结论,DolphinScheduler 在各方面比较优秀,尤其是 API 支持和中文社区的支持。

03

提升用户体验的改进

虽然 DolphinScheduler 在各方面都比较适合使用,但仍有改进的空间,以保证用户体验,尽量兼容用户的使用方式。

1

用户管理

接入 DolphinScheduler 之后,Bigo计算平台第一件事就是打通 OA,免去了注册的步骤,可以更好管理人员流动。

此外,Bigo 计算平台还屏蔽了租户概念,因为群组级别的权限控制在管理员手中,而当实际作业规模较大时,管理员权限控制会带来诸多提交上的不便,因此 Bigo 计算平台屏蔽了租户概念,改用个人账号提交作业。

2

项目管理

原来 DolphinScheduler 要求项目名全局唯一,用户名不能重名,而当项目成千上万时,这个要求会带来不必要的麻烦。对此,Bigo计算平台允许不同项目、资源和数据源重名,去掉了全局唯一。

另外,DolphinScheduler 只能在管理员层面进行项目分享,分享的成本较高,Bigo计算平台针对这一点,将权限下放至个人,非 admin 用户也可以分享资源。

3

工作流管理

  • 工作流页面完成开发、上线、查看一站式操作

原来在 DolphinScheduler 工作流列表页面才能进行上下线,用户在不同页面之间跳转才能完成上线操作,其他平台工作流嵌入到页面更是繁琐。

在此之上,Bigo计算平台进行改进,让用户可以在工作流页面就完成开发、上线、查看一站式操作,免去跳转的麻烦。

  • 工作流历史聚合

工作流随时间的运行状况,在 DolphinScheduler 原来的树形结构上需要把鼠标放在上面才能查看。为优化用户体验,Bigo计算平台在树形图下方添加了一个工作流运行列表,直观地展示工作流每日运行状态,一段时间内的工作运行状况一览无遗。

  • 用户可直达App

点击 link 可以跳转到App,查看页面的真正的日志和执行情况。

4

各种任务开发

除了工作流查看外,Bigo 还进行了各种任务开发改造。

比如支持多种资源方式,不仅支持资源中心上传,还支持直接输入 HDFS 路径,本地上传文件。

支持 sub process 个性化参数,用户在引用子工作流时可以设置个性化参数,更方便开发作业。

04

内核改造,以适应实际业务需求

除了在用户体验上的优化,DolphinScheduler 还进行了内核层面的改造,以更适应其实际业务需求。

目前,Bigo 基于 DolphinScheduler 的计算服务主要面向公司内部用户,包括了 BI 分析、机器学习、音视频处理、数仓等几乎所有技术团队。处理场景需求的特殊性要求 Bigo  从内核层面上进行优化,以适应实际场景需求。

具体来说,Bigo 计算平台所做的 DolphinScheduler 内核改造包括:

1

任务提交去中心化

DolphinScheduler 是通过 worker fork 进程提交作业,提交之后任务等待运行。Worker 作为 client 限制了worker 同时运行任务的上限,SQL依赖hive server/ spark thrift server等,提交都要通过中心化的 server,这会影响系统稳定性和规模性。对此,Bigo 计算平台将提交方式改为分布式提交,将 Spark/Spark SQL/MR 直接提交为Yarn 的任务,Shell/Sqoop 等运行在自己开发的一个APP中,将集中在 worker 上的任务分散到整个集群中,而不是等待任务完成。

2

Worker 支持 Failover

DolphinScheduler worker重启后,作业要杀掉重新提交,但由于作业可能长达十几小时,限制了 worker 同时运行任务的上限,升级重启也会受到一定影响。

在任务提交优化基础上,Bigo 计算平台对任务管理进行了优化,Worker 提交任务到 Yarn 之后,记录 application 信息,Worker 后台异步追踪 application 运行信息,不用重新提交作业。而当一个 worker 失联后,其他 worker 可以接管原先的 application,继续追踪。

3

工作流并发度限制

工作流有一些常见的运行场景,比如部分工作流要求同时只能有一个在运行;部分工作流可以并发运行,但需要设置并发上限;补数时,可能需要补较长区间,以及限制上限,以免对集群造成冲击等。

这些都会对调度系统形成挑战,Bigo 计算平台在后台做的另一件事,是增加了并发度配置。原来,如果当前运行的工作流实例已达上限,需要等待前面的运行结束才能启动新的实例,而加了并发度配置后,可以避免占用过多资源。

4

补数支持触发下游

补数也是常见的场景,这时可能下游数据也需要重算,DolphinScheduler 目前是通过 dependency 设置上下游关系,这会导致补数时下游知道上游,但上游不知道下游,从而导致下游调度受阻。因为对补数有强需求,Bigo 对补数进行了重点改造,包括记录工作流之间依赖关系,补数时可选上游是否触发下游,以及自动计算下游需要何时触发,准确地计算补数。

5

其他改动

其他重要但不详述的改动还包括日志清理,磁盘目录清理,接入电话、微信告警打通等。

05

未来计划

Bigo 计算平台负责人 徐帅 表示,考虑到 DolphinScheduler 2.0 对 Master 的优化将对Bigo 计算平台性能提升产生较大的积极影响,因此 Bigo 计划将于近期更新至  DolphinScheduler 2.0 版本,并与机器学习平台打通,完成调度的无感知迁移。

Bigo 计算平台负责人 徐帅

社区与用户之间互相成就,是 DolphinScheduler 始终秉持的初衷。Bigo 也表示,未来会将对 DolphinScheduler 普适的改动回馈给社区,减少私有代码,紧跟社区,社区也将为 Bigo 顺利实现迁移提供全面的支持。

06

加入社区

随着国内开源的迅猛崛起,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) 手把手教会您( 贡献者不分水平高低,有问必答,关键是有一颗愿意贡献的心 )。添加小助手微信时请说明想参与贡献。
来吧,开源社区非常期待您的参与。

社区官网

https://dolphinscheduler.apache.org/

代码仓地址
https://github.com/apache/dolphinscheduler

您的 Star,是 Apache DolphinScheduler 为爱发电的动力️ ~

添加小助手微信

(Leonard-ds)

加入社区

Apache DolphinScheduler

Apache DolphinScheduler 是 Apache 基金会孵化的顶级项目。作为新一代大数据任务调度系统,致力于“解决大数据任务之间错综复杂的依赖关系,使整个数据处理流程直观可见”。DolphinScheduler 以 DAG(有向无环图) 的方式将 Task 组装起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及 Kill 任务等操作,并专注于可视化 DAG、调用高可用、丰富的任务类型依赖、任务日志/告警机制和补数 6 大能力。

迄今为止,Apache DolphinScheduler 社区已经有 260+ 位代码贡献者,70+ 位非代码贡献者,其中也不乏其他 Apache 顶级项目的 PMC 或者 Committer。开源社区也在不断发展壮大,微信用户群近 6000 人。截止 2021 年 9 月,已经有 600 + 家公司及机构在生产环境中采用 DolphinScheduler。

欢迎更多伙伴也能参与到开源社区建设中来,让未来 DolphinScheduler 的规划中也有你的一份贡献!

☞在生鲜零售业,DolphinScheduler 还能这么玩!☞荔枝机器学习平台与大数据调度系统“双剑合璧”,打造未来数据处理新模式!
☞最佳实践|联通数科基于 DolphinScheduler 的二次开发
☞DolphinScheduler 荣获 2021 中国开源云联盟优秀开源项目奖!
☞重构、插件化、性能提升 20 倍,Apache DolphinScheduler 2.0 alpha 发布亮点太多!☞巨变!a16z 关于新一代数据基础设施架构的深度洞察☞手把手教你 Apache DolphinScheduler 本地开发环境搭建 | 中英文视频教程☞Apache DolphinScheduler使用规范与使用技巧分享

点击阅读原文,报名预约!

点个在看你最好看