点击蓝字 关注我们

7b458c562898c96535dbbf841829f44d.jpeg

PART

01

背景

OPPO 大数据平台目前有 20+个服务组件,数据量超 1EB,离线任务数近百万,实时任务数千,数据开发分析师超千人。这也带来了系统复杂度的问题,一方面是用户经常对自己的任务运行状况“摸不着头脑”,不管是性能问题,还是参数配置问题,甚至是一些常见的权限报错问题,都需要咨询平台给出具体的解决方案。


另一方面是平台面对各类繁杂任务,运维人员经常需要对任务故障定位和排除,由于任务链路长,组件日志多,运维压力大。因此急需对任务进行实时监控和诊断,不仅要能够帮助用户快速定位异常问题,还需给出具体的建议和优化方案,同时还能治理各类“僵尸”和不合理任务,从而达到降本增效的目的。据调研,目前业界尚无成熟的开源任务诊断平台。为此,OPPO 大数据平台开发了大数据诊断平台,通过诊断平台周优化任务实例数超2 万,取得了良好的效果。

“罗盘”(Compass)便是基于 OPPO 内部大数据诊断平台的开源项目(项目地址:https://github.com/cubefs/compass),可用于诊断 DolphinScheduler等调度平台上所运行的大数据任务。

PART

02

罗盘核心功能

罗盘目前已支持非侵入式即时诊断、工作流层异常诊断、多版本 Spark、Hadoop 2.x 和 3.x 任务日志诊断和解析、引擎层异常诊断、日志匹配规则编写和异常阈值调整等功能和特性,并支持多种主流调度平台,例如 DolphinScheduler 或自研调度等。

其中,对于非侵入式,即时诊断功能,罗盘不但实现了对调度平台的解耦,还能在任务运行结束后即时诊断,同时提供了丰富的 UI 展示服务。

这里以 DolphinScheduler 调度平台为例。

ef86639a15f4251442d10a1ec4720ad1.png

从架构上看,MasterServer 主要负责 DAG 任务切分、任务提交监控并持久化任务实例数据到 DB 中,WorkerServer 主要负责任务的执行和提供日志服务,同时在 UI 提供了查看远程日志的功能。为了能够获取任务元数据和相关日志进行诊断,一个方式是在 MasterServer 中监听任务状态事件,另一个方式是订阅 MySQL binlog 日志。为了减少对 DolphinScheduler 的修改,我们采取了第二种方式。

因此只需要在 DolphinScheduler 创建一个工作流,并运行,等待运行结束,用户便可在罗盘上看到该任务运行失败等异常。

19b0a68130556b74d93361a3ed60525a.png

PART

03

DolphinScheduler & Compass

DolphinScheduler 是一个分布式和可扩展的开源工作流协调平台,具有强大的 DAG 可视化界面,有着丰富的使用场景,提供 Spark、Hive 和 Flink 等 30+种类型的任务,可靠性高和拓展性强。DolphinScheduler 经历了多年的实践和积累,已经成为了一个成熟的开源项目,并有着广泛的用户群体。

(一)部署体验

这里我们以 DolphinScheduler(2.0.6 版本)为例,体验如何快速集成罗盘。如果你还没有部署 DolphinScheduler,可参考官网部署指南:https://dolphinscheduler.apache.org/zh-cn/docs/2.0.6/%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97_menu。

如果你已经在使用 DolphinScheduler,那么只需要部署罗盘即可。罗盘支持单机和集群部署,如果你想要快速体验罗盘的功能,可使用单机部署模式,罗盘依赖 Kafka、Redis、zookeeper 和 ElasticSearch,需要提前安装,依赖服务完成后即可通过部署脚本进行罗盘部署:

代码编译

git clone https://github.com/cubefs/compass.git
cd compass
mvn package -DskipTests

修改配置

cd dist/compass
# 修改数据源和相关配置,如下图
vim bin/compass_env.sh

efa2d425cea0fbc724868b2250d53510.png

  1. 一键部署

./bin/start_all.sh

(二)使用示例

首先在 DolphinScheduler 创建好项目

e9cfb6c6df29ff63b95eaefd56a615fb.png

然后创建一个 SPARK 任务的工作流

8e146bdca318875dbbc80f91adde43e3.png

最后上线该任务和运行

e4bf911c975ab0977c102c0935629b33.png

打开罗盘 Web UI,默认路径为 http://localhost:7075/compass/ ,输入 DolphinScheduler 的账号密码,罗盘自动同步了 DolphinScheduler 用户信息。

7722d7e6580f82a1c4d0b78af9120672.jpeg

最后进入任务运行页面,便可以看到所有的异常任务诊断信息。

4dffe5588392896f452eb711dc01c041.png

参与贡献

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

a6ed864ae4b1471351d2ae368d192b3d.png

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

1748e9ba4938c92c39a16f7ef5cd8115.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/community/development/contribute.html

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

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

bde8d099a1241a2dcc90901c3236c994.jpeg

添加社区小助手微信(Leonard-ds) 

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

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

< 🐬🐬 >

更多精彩推荐

Apache DophinScheduler Meetup 成都站— 批流一体与大数据调度最佳实践

☞优秀用户案例有奖征集 | 活动火热开启,快来投稿!

Apache DolphinScheduler 从 1.3.4 升级至3.1.2 过程中的问题记录及解决方案

☞DolphinScheduler×长安汽车 | 千万级数据接入能力智能网联汽车云平台引进核心调度系统

☞去年办了这么多场Meetup都没有你,2023年赶紧安排起来!

☞DolphinScheduler UI 项目启动提速 2 倍,原来是使用了 Vite!

DolphinScheduler×思科网讯:k8S整合实践,提高大数据处理效率!

我知道你在看2612282da5e595ff4b2b0781d67a024c.png

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐