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

news2024/12/20 22:57:54

file

视频及PPT等相关资料:点击查看

讲师介绍

file

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

业务背景

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

file

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

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

file

接入改造

接入前

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

file

接入后

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

file

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

MQ Trigger

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

file file

节点增强

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

  • 主流程与子流程:优化了主流程和子流程的管理。
  • 自定义plugin:允许自定义plugin,以适应特定的业务需求。
  • 修改dynamic节点的子流程生成规则:调整了dynamic节点的子流程生成规则,以更好地控制参数输出。
  • 异步触发&轮询:实现了异步触发和轮询机制,提高了任务的响应速度。
  • Conditional Http:引入了条件HTTP请求,以实现更复杂的工作流逻辑。

file

file

动态优先级

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

file

最佳实践

部署架构

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

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

file

集群版本

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

file

K8S任务配置

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

  • 任务传参:避免使用大JSON传参,尽量使用文件交互,以文件地址作为参数传递,以减少网络传输的负担。
  • 资源配额:对于耗时较长的k8s任务,尽量将request和limit配置相同,避免资源超卖导致OOM。
  • IO控制:对于IO密集型任务,尽量避免大量读写本地磁盘,使用CFS(Comprehensive File System),以减少对当前node上其他任务的影响。

file

K8S任务隔离&动态优先级

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

  • 支持动态修改master上任务的优先级:允许动态调整任务的优先级,以适应不同的业务需求。
  • 通过node标签和容忍度将不同类型的任务分配到不同节点上:通过这种方式,可以确保不同类型的任务在资源使用上相互隔离,同时保持各自的优先级。

file

未来规划

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

结语

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

本文由 白鲸开源科技 提供发布支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2262948.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

令牌(token)+加密(加盐)

目录 一,令牌技术 1,不使用session的原因: 2,有两种解决方案: (1)服务器层面的 (2)客户端层面的(JWT令牌) 生成签名: 生成jwt令牌: 验证令牌是否合法: (3)令牌实际运用 二,加密加盐: 进行加密: 进行验证: 一,令牌技术 1,不使用session的原因: 登录页面,用户会将密…

Flask入门:打造简易投票系统

目录 准备工作 创建项目结构 编写HTML模板 编写Flask应用 代码解读 进一步优化 结语 Flask,这个轻量级的Python Web框架,因其简洁和易用性,成为很多开发者入门Web开发的首选。今天,我们就用Flask来做一个简单的投票系统,让你快速上手Web开发,同时理解Flask的核心概…

阿里巴巴前端面试经验

阿里巴巴面经(新零售事业群-CBU技术部) 笔试 /*** 1. 查找落单的数字* 描述:给定一个非空的数字数组,数组有且只有一个非重复项,实现一个方法获取落单项* 示例:* getSingleNumber([1, 2, 1, 2, 0]); // 0* getSingle…

指针的深入讲解

本章重点: 字符指针数组指针指针数组数组传参和指针传参函数指针函数指针数组指向函数指针数组的指针回调函数 我们在指针的初阶的时候主要讲了: 1.指针就是变量,用来存放地址,地址唯一标识一块内存空间 2.指针的大小是固定4个…

网络多层的协议详述

网络层 1)地址管理:制定一系列的规则,通过地址,在网络上描述出一个设备的位置 2)路由选择:网络环境比较复杂,从一个节点到另一个节点,存在很多条不同的路径,需要规划出…

Zabbix6.0升级为6.4

为了体验一些新的功能,比如 Webhook 和问题抑制等,升级个小版本。 一、环境信息 1. 版本要求 一定要事先查看官方文档,确认组件要求的版本,否则版本过高或者过低都会出现问题。 2. 升级前后信息 环境升级前升级后操作系统CentOS…

UML复习题

用例与用户的4种关系对象图和类图有什么关系:对象图是类图某一时刻的快照组件图,体现的是静态图部署图,涉及到硬件的结点,实线链接 以上都是静态图 时序图,消息先后协作图 ,谁和谁交互,对象之间的交互某一…

【MFC】多工具栏如何保存状态

MFC中的工具栏本来只有一个,如果想增加几个工具栏是比较简单,但现在一个重要的问题是,状态无法保存,导致每次打开,工具栏就会出现问题,要么偏移位置要么显示不出。 经过研究,发现是MFC框架中的…

Buck开关电源闭环控制的仿真研究15V/5V[Matlab/simulink源码+Word文档]

课题设计要求 ⑴输入直流电压(VIN):15V ⑵输出电压(VO):5.0V ⑶负载电阻:R2欧 ⑷输出电压纹波峰-峰值 Vpp≤50mV ,电感电流脉动:输出电流的10% ⑸开关频率(fs):100kHz ⑹BUCK主电路二极管的通态压降VD0.5V…

鸿蒙项目云捐助第十八讲云捐助我的页面下半部分的实现

鸿蒙项目云捐助第十八讲云捐助我的页面下半部分的实现 在一般的应用app中都会有一个“我的”页面,在“我的”页面中可以完成某些设置,也可以完成某些附加功能,如“修改密码”等相关功能。这里的鸿蒙云捐助也有一个“我的”功能页面。这里对“…

Flink2.0未来趋势中需要注意的一些问题

手机打字,篇幅不长,主要讲一下FFA中关于Flink2.0的未来趋势,直接看重点。 Flink Forward Asia 2024主会场有一场关于Flink2.0的演讲,很精彩,官方也发布了一些关于Flink2.0的展望和要解决的问题。 1.0时代和2.0时代避免…

《深入浅出Apache Spark》系列⑤:Spark SQL的表达式优化

导读:随着数据量的快速增长,传统的数据处理方法难以满足对计算速度、资源利用率以及查询响应时间的要求。为了应对这些挑战,Spark SQL 引入了多种优化技术,以提高查询效率,降低计算开销。本文从表达式层面探讨了 Spark…

在Tomcat中部署应用时,如何通过域名访问而不加端口号

--江上往来人,但爱鲈鱼美。 --君看一叶舟,出没风波里。 在Tomcat中部署应用时,如果你希望通过域名访问而不加端口号(默认HTTP端口80或HTTPS端口443),你通常需要在前端使用一个反向代理服务器(如…

如何测量分辨率

一、什么是分辨率? 分辨率指的是分清物体细节的能力。分辨率是一个成像系统还原空间频率的能力。一些人只是简单的用分辨率去描述极限分辨率,但是相机在在不同的对比度的情况下还原低,中和高频率的能力,也可以显示全面综合的信息。…

Leetcode分隔链表

java 实现 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/ class …

maui开发成生安卓apk,运行提示该应用与此设备的CPU不兼容

在生成.NET MAUI安卓应用时遇到“该应用与此设备的CPU不兼容”的问题,确保你的.NET MAUI应用支持的Android目标框架与设备CPU架构相匹配。例如,如果你的应用是为ARM64架构编译的,而你的设备是x86架构,就会出现不兼容的问题。 一、…

在 Unity 6 中使用APV为您的世界创建全局照明的新方法(一)

Unity 6 中推出的新照明功能让您能够更快速、更高效的完成对烘焙场景的照明工作,在本文中我们将与大家详细分享在 Unity 6 中应用自适应探针卷创建快速全局光照的更多细节与具体应用方法。由于内容比较丰富,我们将把内容分为三篇文章,以便大家…

深度学习之超分辨率算法——FRCNN

– 对之前SRCNN算法的改进 输出层采用转置卷积层放大尺寸,这样可以直接将低分辨率图片输入模型中,解决了输入尺度问题。改变特征维数,使用更小的卷积核和使用更多的映射层。卷积核更小,加入了更多的激活层。共享其中的映射层&…

VSCode 搭建Python编程环境 2024新版图文安装教程(Python环境搭建+VSCode安装+运行测试+背景图设置)

名人说:一点浩然气,千里快哉风。—— 苏轼《水调歌头》 创作者:Code_流苏(CSDN) 目录 一、Python环境安装二、VScode下载及安装三、VSCode配置Python环境四、运行测试五、背景图设置 很高兴你打开了这篇博客,更多详细的安装教程&…

使用Docker启用MySQL8.0.11

目录 一、Docker减小镜像大小的方式 1、基础镜像选择 2、减少镜像层数 3、清理无用文件和缓存 4、优化文件复制(COPY和ADD指令) 二、Docker镜像多阶段构建 1、什么是dockers镜像多阶段构建 1.1 概念介绍 1.2 构建过程和优势 2、怎样在Dockerfil…