DolphinScheduler×T3出行 | 打造车联网一站式数据应用交互体验
且随着内部平台越来越多,业务结构越来越复杂,也在倒逼内部对ApacheDolphinScheduler适用性可靠性及能效的不断提升,愿景是实现从数据接入到数据应用的一站式数据应用于交互
作为一家车联网驱动的公司,T3出行汇聚了“人、车、路、云”各端的海量数据。为了承载如此多元化的数据以更好地释放数据价值,T3出行构建了以Apache Hudi为基础的企业级的数据湖,并在此之上搭建了BI分析,机器学习,数据质量,权限管理等一系列平台,为业务提供强有力的支撑。
同时,T3出行使用Apache 作为全平台的任务调度载体,任务类型包含Spark、SQL、Shell、Python等,日均任务数量4w+。且随着内部平台越来越多,业务结构越来越复杂,也在倒逼内部对Apache DolphinScheduler适用性、可靠性及能效的不断提升,愿景是实现从数据接入到数据应用的一站式数据应用于交互。
来自Kafka的流式数据会对接Flink进行流式消费;随后Flink会以低延迟的形式将数据写入到Hudi数据湖中。Apache DolphinScheduler及其他组件以此为基础围“湖”而建,架构整体上保证了数据湖上低延迟的 Pipeline 高效调度与加工。对于非depend-all的依赖任务,以任务实例视图代替工作流实例视图作为依赖判定基准。如果因为一个没有包含目标依赖任务的工作流片段而导致依赖任务判定异常,这显然是不符合预期的。下图以恢复失败场景为例:

- 跨Apache DolphinScheduler版本依赖
为了既可以使用高版本Apache DolphinScheduler的新特性,又不对线上低版本Apache DolphinScheduler做变更,同时保证Apache DolphinScheduler高低版本间互通、协同调度,实现了跨Apache DolphinScheduler版本依赖。

提供ds-client用于内部平台与DScheduler交互。多数情况下,业务倾向于通过消息触发的方式与调度进行交互,通过ds-client可以将Apache DolphinScheduler核心功能完全释放到平台侧,对于上层业务来说甚至不感知调度的存在。- 异步获取application id,不再依赖解析任务日志,spark日志级别可设置为INFO以上
- 添加针对业务使用"spark.yarn.submit.waitCompletion=false"参数时的容错
例如增加服务负载监控与告警;或自定义工作流定义未运行监控告警等。

虽然可以依赖Apache DolphinScheduler master/worker容错来类似实现滚动升级,但任务容错的原理是kill&restart,低效且缺失容错监控手段。同时在日常运维时,也缺少对于故障节点的规避措施。对此,T3出行支持了master/worke黑名单管理,并基于此实现了滚动升级。

对于引用了资源中心文件的任务,在每次执行时都要执行下载操作是冗余的。为此,T3出行实现了资源中心缓存,同一台worker节点上的同个资源中心文件,可以被所有任务反复引用,并保证本地缓存与资源中心文件的一致性。
- 数据源集成Kyuubi,为使用hive数据源的SQL任务提效
- 受益于Dolphin Scheduler的高扩展性和开放性,T3在性能、稳定性及易用性方面做了很多创新和优化,使得DS所在公司内所涵盖的业务越来越广,调度需求越来越多。
- 过程中真实地帮助业务部门以较低的门槛启动大数据相关需求,同时提升了数据开发部门的研发效率。
- 目前,T3出行内部聚焦在如何通过Apache DolphinScheduler实现大数据开发的CICD管理,这将使Apache DolphinScheduler一站式开发更加完善。
T3出行是是由一汽、长安、东风三家央企联合阿里、腾讯、苏宁三家知名互联网公司共同成立的主打B2C的网约车平台,是国内首家基于车联网的出行平台。公司提供的服务包括出租车、专车、拼车、代驾、租车等多种出行方式。T3出行的宗旨是为用户提供更加安全、便捷和舒适的出行体验,同时也为司机和车主提供更加优质的服务和收益。