写点什么

博世智驾新动力:Apache DolphinScheduler 如何征服数据处理挑战

作者:白鲸开源
  • 2025-01-03
    天津
  • 本文字数:1790 字

    阅读完需:约 6 分钟

博世智驾新动力:Apache DolphinScheduler如何征服数据处理挑战

讲师介绍 

陶超权 博世智驾(中国)后端工程师

负责数据处理和数据调度方面工作,在智能驾驶数据处理领域具有丰富的实践经验。在 2024 年 12 月 Apache DolphinScheduler 社区线上交流会上上,他分享了 Apache DolphinScheduler 在智能驾驶数据处理中的应用案例和未来的发展蓝图。

01 业务背景


博世智驾(中国)隶属于博世集团(Bosch Group),全称是罗伯特·博世有限公司,成立于 1886 年,全球总部位于德国,员工人数超过 42 万,遍布 50 多个国家,业务涵盖汽车与智能交通技术、工业技术、消费品与能源与建筑技术四大领域。

今天的话题将聚焦于博世在智能驾驶技术方面基于 Apache DolphinScheduler 的技术改造与业务应用。

智能驾驶技术的发展高度依赖于数据。数据不仅是模型训练的基石,也是功能验证的关键。智能驾驶模型需要大量高质量的数据来训练,以提升感知、决策和控制的精确度。同时,为了确保系统的可靠性和安全性,真实场景下的车辆功能验证同样需要多样化的测试数据。

02 接入改造

接入前

在没有使用 Apache DolphinScheduler 之前,博世智驾依赖于 Jenkins 来实现业务代码中的工作流编排和调度。这种方法的优点在于其高度的灵活性,允许定义任何形式的工作流编排。然而,这种方法的缺点也显而易见,就是与业务代码的耦合度很高,任何工作流的变动都需要修改业务代码,这增加了维护的复杂性和风险。

接入后

经过调度选型之后,博世智驾决定采用 Apache DolphinScheduler,并基于 3.2.0 版本进行了一系列的接入改造,以提高数据处理的效率和灵活性。

以下是博世智驾进行的一系列改造的具体实施方案。

MQ Trigger

在数据源的基础上,博世智驾增加了消息源的创建,并将消息源与工作流绑定,实现了工作流的自动触发。这一改进使得工作流能够更加灵活地响应数据源的变化。


节点增强

博世智驾重度依赖 K8S 任务和 dynamic 任务进行编排,在这方面基于 DolphinScheduler 重点进行了一些改造,包括:

  • 主流程与子流程:优化了主流程和子流程的管理。

  • 自定义 plugin:允许自定义 plugin,以适应特定的业务需求。

  • 修改 dynamic 节点的子流程生成规则:调整了 dynamic 节点的子流程生成规则,以更好地控制参数输出。

  • 异步触发 &轮询:实现了异步触发和轮询机制,提高了任务的响应速度。

  • Conditional Http:引入了条件 HTTP 请求,以实现更复杂的工作流逻辑。


动态优先级

博世智驾还基于 Apache DolphinScheduler 实现了动态优先级功能,以适应不同业务场景的需求,确保关键任务能够优先执行。

03 最佳实践

部署架构

博世智驾采用了 K8S 部署,实现了控制集群和计算集群的隔离。这种隔离策略包括:

  • namespace 隔离:通过 namespace 级别的隔离,实现了不同任务之间的逻辑分离。

  • Node 隔离:通过 Node 级别的隔离,确保了计算任务不会因为资源抢占或负载导致控制节点被驱逐。

集群版本

博世智驾介绍了 TTL Controller,这是一种控制 job 结束后多久被删除的机制。这一功能从 Kubernetes v1.23 版本开始正式生效。需要注意的是,使用老版本可能会导致 Kubernetes 集群压力增大,甚至导致 Ds worker OOM(Out of Memory),使用时需谨慎考虑。

K8S 任务配置

在 K8S 任务配置方面,博世智驾提出了以下建议:

  • 任务传参:避免使用大 JSON 传参,尽量使用文件交互,以文件地址作为参数传递,以减少网络传输的负担。

  • 资源配额:对于耗时较长的 k8s 任务,尽量将 request 和 limit 配置相同,避免资源超卖导致 OOM。

  • IO 控制:对于 IO 密集型任务,尽量避免大量读写本地磁盘,使用 CFS(Cloud File System),以减少对当前 node 上其他任务的影响。

K8S 任务隔离 &动态优先级

面对不同类型 k8s 任务被调度到同一个 k8s 集群执行的问题,博世智驾提出了以下解决方案:

  • 支持动态修改 master 上任务的优先级:允许动态调整任务的优先级,以适应不同的业务需求。

  • 通过 node 标签和容忍度将不同类型的任务分配到不同节点上:通过这种方式,可以确保不同类型的任务在资源使用上相互隔离,同时保持各自的优先级。

04 未来规划

最后,博世智驾表示了将计划在未来实现一些新的功能和进一步的完善,包括实现任务资源隔离,并接入 CICD,以进一步提升智能驾驶数据处理的效率和稳定性。这些规划将有助于博世智驾在智能驾驶领域的技术进步和业务发展。

05 结语

这次分享不仅展示了 Apache DolphinScheduler 在博世智驾这家百年公司的智能驾驶数据处理方面的实际应用,还提供了宝贵的实践经验和未来发展方向。欢迎大家了解并加入 Apache DolphinScheduler 社区,获取更多信息和资源,共同推动智能驾驶技术的发展。

用户头像

白鲸开源

关注

一家开源原生的DataOps商业公司。 2022-03-18 加入

致力于打造下一代开源原生的DataOps 平台,助力企业在大数据和云时代,智能化地完成多数据源、多云及信创环境的数据集成、调度开发和治理,以提高企业解决数据问题的效率,提升企业分析洞察能力和决策能力。

评论

发布
暂无评论
博世智驾新动力:Apache DolphinScheduler如何征服数据处理挑战_人工智能_白鲸开源_InfoQ写作社区