点击蓝字 关注我们
用户案例 | T3 出行
业务挑战
作为一家车联网驱动的公司,T3出行汇聚了“人、车、路、云”各端的海量数据。为了承载如此多元化的数据以更好地释放数据价值,T3出行构建了以Apache Hudi为基础的企业级的数据湖,并在此之上搭建了BI分析,机器学习,数据质量,权限管理等一系列平台,为业务提供强有力的支撑。
同时,T3出行使用Apache DolphinScheduler作为全平台的任务调度载体,任务类型包含Spark、SQL、Shell、Python等,日均任务数量4w+。且随着内部平台越来越多,业务结构越来越复杂,也在倒逼内部对Apache DolphinScheduler适用性、可靠性及能效的不断提升,愿景是实现从数据接入到数据应用的一站式数据应用于交互。
01
解决方案
01
数据湖架构
来自Kafka的流式数据会对接Flink进行流式消费;随后Flink会以低延迟的形式将数据写入到Hudi数据湖中。Apache DolphinScheduler及其他组件以此为基础围“湖”而建,架构整体上保证了数据湖上低延迟的 Pipeline 高效调度与加工。
02
提高适用性
依赖任务逻辑重构
对于非depend-all的依赖任务,以任务实例视图代替工作流实例视图作为依赖判定基准。如果因为一个没有包含目标依赖任务的工作流片段而导致依赖任务判定异常,这显然是不符合预期的。下图以恢复失败场景为例:
跨Apache DolphinScheduler版本依赖
为了既可以使用高版本Apache DolphinScheduler的新特性,又不对线上低版本Apache DolphinScheduler做变更,同时保证Apache DolphinScheduler高低版本间互通、协同调度,实现了跨Apache DolphinScheduler版本依赖。
ds-client
提供ds-client用于内部平台与DScheduler交互。多数情况下,业务倾向于通过消息触发的方式与调度进行交互,通过ds-client可以将Apache DolphinScheduler核心功能完全释放到平台侧,对于上层业务来说甚至不感知调度的存在。
03
提高可靠性
提高SPARK任务容错
异步获取application id,不再依赖解析任务日志,spark日志级别可设置为INFO以上
添加针对业务使用"spark.yarn.submit.waitCompletion=false"参数时的容错
添加针对rm主备倒换期间yarn任务的容错及校验
精细化监控与告警
例如增加服务负载监控与告警;或自定义工作流定义未运行监控告警等。
黑名单与滚动升级
虽然可以依赖Apache DolphinScheduler master/worker容错来类似实现滚动升级,但任务容错的原理是kill&restart,低效且缺失容错监控手段。同时在日常运维时,也缺少对于故障节点的规避措施。对此,T3出行支持了master/worke黑名单管理,并基于此实现了滚动升级。
04
提高能效
资源中心缓存
对于引用了资源中心文件的任务,在每次执行时都要执行下载操作是冗余的。为此,T3出行实现了资源中心缓存,同一台worker节点上的同个资源中心文件,可以被所有任务反复引用,并保证本地缓存与资源中心文件的一致性。
数据源集成Kyuubi,为使用hive数据源的SQL任务提效
02
用户收益
受益于Dolphin Scheduler的高扩展性和开放性,T3在性能、稳定性及易用性方面做了很多创新和优化,使得DS所在公司内所涵盖的业务越来越广,调度需求越来越多。
过程中真实地帮助业务部门以较低的门槛启动大数据相关需求,同时提升了数据开发部门的研发效率。
目前,T3出行内部聚焦在如何通过Apache DolphinScheduler实现大数据开发的CI\CD管理,这将使Apache DolphinScheduler一站式开发更加完善。
03
用户简介
T3出行是是由一汽、长安、东风三家央企联合阿里、腾讯、苏宁三家知名互联网公司共同成立的主打B2C的网约车平台,是国内首家基于车联网的出行平台。公司提供的服务包括出租车、专车、拼车、代驾、租车等多种出行方式。
T3出行的宗旨是为用户提供更加安全、便捷和舒适的出行体验,同时也为司机和车主提供更加优质的服务和收益。
参与贡献
随着国内开源的迅猛崛起,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/community/development/contribute.html
来吧,DolphinScheduler开源社区需要您的参与,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是巨大的。
参与开源可以近距离与各路高手切磋,迅速提升自己的技能,如果您想参与贡献,我们有个贡献者种子孵化群,可以添加社区小助手微信(Leonard-ds) ,手把手教会您( 贡献者不分水平高低,有问必答,关键是有一颗愿意贡献的心 )。
添加社区小助手微信(Leonard-ds)
添加小助手微信时请说明想参与贡献。
来吧,开源社区非常期待您的参与。
< 🐬🐬 >
更多精彩推荐
☞PyDolphinScheduler 发布 4.0.3 版本,修复无法提交文件到资源中心的问题
☞优秀用户案例有奖征集 | 活动火热开启,快来投稿!
☞Apache DolphinScheduler 从 1.3.4 升级至3.1.2 过程中的问题记录及解决方案
☞Apache DolphinScheduler 3.1.5 发布,修复工作流实例甘特图查看异常等问题
☞去年办了这么多场Meetup都没有你,2023年赶紧安排起来!
☞为什么工作流中的数据质量要尽早验证,经常验证?
☞【每周 FAQ】第二期 | 回答你关于 Apache DolphinScheduler 的疑问
点击阅读原文,点亮Star支持我们哟