条件反射是什么| 纹眉失败擦什么淡化| 什么是阴阳| bra是什么| 劲仔小鱼是什么鱼做的| 为什么身上会出现淤青| 豆汁是什么| 梦见很多棺材是什么征兆| 咖啡与什么食物相克| 低血糖吃什么好的最快| 鸡肉炖什么好吃| 95年的猪是什么命| 事无巨细是什么意思| 痔疮什么样子图片| 宫颈肥大伴纳氏囊肿是什么意思| 人为什么怕死| 脚底疼是什么原因引起的| 614是什么星座| 1992年属猴的是什么命| 龋齿是什么样子的图片| 黑鸟是什么鸟| 什么叫感性的女人| 晞是什么意思| 花枝鼠吃什么| 肚子左下方是什么器官| 着凉感冒吃什么药| 凶宅是什么意思| 铁树开花是什么意思| 静脉曲张是什么样子| 惊蛰是什么季节的节气| 看望病人买什么东西好| 生吃大蒜有什么好处和坏处| 河南南阳产什么玉| 为什么不建议割鼻息肉| 口腔检查挂什么科| 晚上吃什么好| 乏了是什么意思| 红眼病有什么症状| 激素6项检查是些什么| 二建什么时候考试| 5月23是什么星座| 载歌载舞的载是什么意思| 去医院检查艾滋病挂什么科| 丁火是什么火| 意思是什么意思| 经常做噩梦的原因是什么| 黄牛票是什么意思| 有什么事| 什么是cp| 印比是什么意思| 脑心通主治什么病| 46什么意思| 农历正月十五吃什么| 绿豆什么人不能吃| 土豪是什么意思| 脏器灰阶立体成像是检查什么的| 男性什么适合长期泡水喝| 什么是生理盐水| 夏天为什么不能喝中药| 男属猴和什么属相最配| 淋巴结肿吃什么消炎药| 勾践姓什么| 喝柠檬水有什么好处和坏处| 强的松又叫什么| 鱼豆腐是用什么做的| 血压高是什么引起的| 体癣用什么药| 均金念什么| 鸡蛋白过敏指的是什么| 促排卵吃什么药| 一般炒什么菜放蚝油| 吃六味地黄丸有什么好处| d什么意思| 铁树开花是什么生肖| wb是什么意思| 沉冤得雪是什么意思| 一只眼睛充血是什么原因| 南昌有什么好玩的地方| 桃子有什么营养价值| 梦是什么意思| 荷叶搭配什么一起喝减肥效果好| 12月6日什么星座| hg是什么元素| 胸膜炎是什么病| 吃什么水果可以美白| 嘴干嘴苦是什么原因| 为什么会有盆腔积液| 绿色食品是什么| 生气对身体有什么危害| 怀孕10天左右有什么症状| 女人腰上有痣代表什么| 花生吃多了有什么坏处| 巴斯光年是什么意思| 暖五行属什么| abob是什么药| 假小子是什么意思| prc是什么| 硝苯地平是什么药| 稀料对人体有什么危害| 比热容是什么| 白带正常是什么颜色| 促甲状腺激素高是什么原因| 胆囊炎什么症状| ecg医学上什么意思| 什么的友谊| 尿频尿急是什么症状| 珍珠翡翠白玉汤是什么| 心脏不舒服吃什么药最好| 变色龙指什么样的人| 纪是什么意思| 兰台是什么意思| 5月28日什么星座| 吐黑水是什么原因| 黑洞是什么东西| 贫血是什么症状| 身上长红点很痒是什么原因| 绿五行属什么| 腰椎退行性改变是什么意思| 诺五行属什么| 头晕喝什么饮料| 为什么叫川普| 梦见前夫是什么兆头| 护理假是什么意思| 肚脐眼左侧是什么器官| 椰子煲鸡汤放什么材料| 美丽的动物是什么生肖| 送女生什么生日礼物比较好| 2016年属什么生肖| 借您吉言什么意思| 百香果什么时候开花结果| 坐骨神经痛什么症状| 什么情况下需要做肠镜检查| 九加虎念什么| 什么是职务| 最大的罩杯是什么杯| 细菌计数高是什么原因| 南昌有什么特产| 脸上爱长痘痘是什么原因| rhd血型阳性是什么意思| 麸皮是什么东西| 下巴下面长痘痘是什么原因| 执业药师证有什么用| 树欲静而风不止是什么意思| 欧豪资源为什么这么好| 发物有什么| 男人出虚汗是什么原因引起的| 皮肤上有小白斑点是什么原因| 月经不能吃什么东西| 小孩子不吃饭是什么原因引起的| 皋读什么| 沪深300是什么意思| reald厅什么意思| 看客是什么意思| 腰子是什么| 不来例假也没怀孕是什么原因| 眼睛流眼泪用什么眼药水| 打狂犬疫苗后注意什么| 女性肝囊肿要注意什么| 月经过多是什么原因| 玉髓是什么玉| 什么程度下病危通知书| 出马什么意思| 常字五行属什么| 梦见带小孩是什么意思| 出是什么意思| 心肌酶能查出什么病| 胆囊炎的症状是什么| 孕32周需要做什么检查| 绯是什么意思| 检查hpv需要注意什么提前注意什么| 高血糖能吃什么| 三七是什么意思| 什么的阳光| 舌尖发麻是什么原因| 707是什么意思| 胸口疼痛吃什么药| com什么意思| 怀孕生气对胎儿有什么影响| 释迦摩尼是什么意思| 后羿代表什么生肖| 国花是什么| 夏季摆摊卖什么好| 阴道有异味用什么药| 月亮什么时候是圆的| 什么叫钙化| 威海的海是什么海| 怀孕会出现什么状况| 被cue是什么意思| 风湿病吃什么药| 癞蛤蟆长什么样| 广东有什么市| 低血糖吃什么| 兰芝属于什么档次| 早餐吃什么英语怎么说| 唱过什么歌| 铁蛋白低吃什么可以补| 膝盖疼痛是什么原因| 泡是什么意思| 是什么原因| 母鸡是什么意思| 高血糖吃什么菜好| 溶豆是什么| 缺钾有什么表现和症状| 失态是什么意思| 什么季节掉头发最厉害| 木瓜是什么季节的| 鱼油有什么好处| 风景旧曾谙是什么意思| 痛风吃什么药最有效| 电视剧上星是什么意思| 妈妈生日送什么| 拉屎肛门疼是什么原因| 三月三十号是什么星座| 缺碘会有什么症状| 甲状腺一度肿大是什么意思| 检查怀孕挂什么科| 为什么来大姨妈会拉肚子| 虫草花是什么| 2004年是什么生肖| 胆的作用及功能是什么| 一百岁叫什么之年| 7月20日什么星座| 前列腺增大吃什么药| 许莫氏结节是什么意思| 尿路感染是什么原因引起的| 醋酸是什么| 为什么会有痛经| 尿路感染吃什么药最快| dazzle是什么牌子| 被电击后身体会有什么后遗症| 产妇月子吃什么下奶多| 什么名字最霸气| 茶颜悦色什么好喝| 和田玉籽料是什么意思| 坐骨神经痛用什么药| 常喝黑苦荞茶有什么好处| 肝实质密度减低是什么意思| 天涯海角是什么生肖| 哺乳期妈妈感冒了可以吃什么药| 奥沙利文为什么叫火箭| tj什么意思| 企鹅是什么动物| 广州有什么好吃的| 中意你是什么意思| 西施姓什么| 中国最高学位是什么| 真丝棉是什么面料| 手没有力气是什么原因| 嗜的意思是什么| 满族不吃什么肉| 赢荡为什么传位嬴稷| miko是什么意思| 西红柿什么时候成熟| 为什么医生很少开阿斯美| 肝火旺盛吃什么药| 免疫力低下吃什么药| 意有所指是什么意思| 什么是uv| 泰山石敢当什么意思| 芈月和嬴政什么关系| 丁毒豆泡酒能治什么病| 大便秘结是什么原因| surprise什么意思| 女人吃玛卡有什么好处| 百度

李健为什么退出水木年华

原创
07/31 10:45
阅读数 1.9K
百度 有的婆婆对待儿媳妇并不会很刻意,不会刻意客气,也不会刻意端出婆婆架子,更不会用自己的一已私利在儿子面前故意诋毁儿媳妇,而是用对待常人一样的态度来对待她,既不把她当成外来的儿媳妇,又不把她当成自己的女儿一样,只是相互之间的关系很轻松,有什么说什么,有什么家务大家一起做。

Flink-Doris-Connector 作为 Apache Flink 与 Doris 之间的桥梁,打通了实时数据同步、维表关联与高效写入的关键链路。本文将深入解析 Flink-Doris-Connector 三大典型场景中的设计与实现,并结合 Flink CDC 详细介绍了整库同步的解决方案,助力构建更加高效、稳定的实时数据处理体系。

一、Apache Doris 简介


Apache Doris 是一款基于 MPP 架构的高性能、实时的分析型数据库,整体架构精简,只有 FE 、BE 两个系统模块。其中 FE 主要负责接入请求、查询解析、元数据管理和任务调度,BE 主要负责查询执行和数据存储。Apache Doris 支持标准 SQL 并且完全兼容 MySQL 协议,可以通过各类支持 MySQL 协议的客户端工具和 BI 软件访问存储在 Apache  Doris 中的数据库。

在典型的数据集成和处理链路中,往往会对 TP 数据库、用户行为日志、时序性数据以及本地文件等数据源进行采集,经由数据集成工具或者 ETL 工具处理后写入至实时数仓 Apache Doris 中,并由 Doris 对下游数据应用提供查询和分析,例如典型的 BI 报表分析、OLAP 多维分析、Ad-hoc 即席查询以及日志检索分析等多种数据应用场景。

Flink-Doris-Connector 是 Apache Doris 与 Apache Flink 在实时数据处理 ETL 的结合,依托 Flink 提供的实时计算能力,构建高效的数据处理和分析链路。Flink-Doris-Connector 的使用场景主要分为三种:

  • Scan:通常用来做数据同步或是跟其他数据源的联合分析;

  • Lookup Join:将实时流中的数据和 Doris 中的维度表进行 Join;

  • Real-time ETL:使用 Flink 清洗数据再实时写入 Doris 中。

二、Flink-Doris-Connector 典型场景的设计与实现


本章节结合 Scan、Lookup Join、Write 这三种场景,介绍 Flink-Doris-Connector 的设计与实现。

01 Scan 场景

Scan 场景指将 Doris 中的存量数据快速提取出来,当从 Doris 中读取大量数据时,使用传统的 JDBC 方法可能会面临性能瓶颈。因此 Flink-Doris-Connector 中可以借助 Doris Source ,充分利用 Doris 的分布式架构和 Flink 的并行处理能力,从而实现了更高效的数据同步。

Doris Source 读取流程

  • Job Manager 向 FE 端发起请求查询计划,FE 会返回要查询的数据对应的 BE 以及 Tablet;

  • 根据不同的 BE,将请求分发给不同的 TaskManager;

  • 通过 Task Manager 直接读取每个 BE 上对应 Tablet 的数据。

通过这种方式,我们可以利用 Flink 分布式处理的能力从而提高整个数据同步的效率。

02 Lookup Join 场景

对于维度表存储在 Doris 中的场景,可通过 Lookup Join 实现对实时流数据与 Doris 维度表的关联查询。

JDBC Connector

Doris 支持 MySQL 协议,所以可以直接使用 JDBC Connector 进行 Lookup Join,但是这一方式存在一定的局限:

  • Jdbc Connector 中的 Lookup Join 是同步查询的操作,会导致实时流中每条数据都要等待 Doris 查询的结果,增加了延迟。

  • 仅支持单条数据查询,在上游数据量吞吐较高时,容易造成性能瓶颈和反压。

Flink-Doris-Connector 的优化

因此针对 Lookup Join 场景 ,Flink-Doris-Connector 实现了异步 Lookup Join 和攒批查询的优化:

  • 支持异步 Lookup Join:异步 Lookup Join 意味着实时流中的数据不需要显式等待每条记录的查询结果,可以大大的降低延迟性。

  • 支持攒批查询:将实时流的数据追加到队列 Queue 中,后台通过监听线程 Watcher,将队列里面的数据取出来再推送到查询执行的 Worker 线程池中,Worker 线程会将收到的这一批数据拼接成一个 Union All 的查询,同时向 Doris 发起 Query 查询。

通过异步 Lookup join 以及攒批查询,可以在上游数据量比较大的时候大幅度提高维表关联吞吐量,保障了数据读取与处理的高效性。

03 实时 ETL 场景

对于实时写入来说,Doris Sink 的写入是基于 Stream Load 的导入方式去实现的。Stream Load 是 Apache Doris 中最为常见的数据导入方式之一,支持通过 HTTP 协议将本地文件或数据流导入到 Doris 中。主要流程如下:

  • Sink 端在接收到数据后会开启一个 Stream Load 的长链接请求。在 Checkpoint 期间,它会将接收到的数据以 Chunk 的形式持续发送到 Doris 中。

  • Checkpoint 时,会对刚才发起的 Stream Load 的请求进行提交,提交完成后,数据才会可见。

如何保证数据写入的 Exactly-Once 语义

那么,如何保证数据写入期间,端到端数据的精确一次性?

以 Kafka 同步到 Drois 的 Checkpoint 过程为例:

  1. Checkpoint 时,Source 端会接收到 Checkpoint Barrier;

  2. Source 端接收到 Barrier 后,首先会对自身做一个快照,同时会将 Checkpoint Barrier 下发到 Sink 端;

  3. Sink 端接收到 Barrier 后,执行 Pre-commit 提交,成功后数据就会完整写入到 Doris,由于此处执行的是预提交,所以在 Doris 上,此时对用户来说数据是不可见的;

  4. 将 Pre-Commit 成功的事务 ID 保存到状态中;

  5. 所有的算子 Checkpoint 都做完后,Job Manager 会下发本次 Checkpoint 完成的通知;

  6. Sink 端会对刚才 Pre-commit 成功的事务进行一次提交。

通过这种两阶段提交,就可以实现端到端的精确一次性。

实时性与 Exactly-Once

上面提到,Doris Sink 端的写入与 Checkpoint 绑定,数据写入 Doris 的延迟性取决于 Checkpoint 的间隔。但在一些用户的场景下,希望数据可以实时写入,但是 Checkpoint 不能做的太频繁,同时对于一些作业来说,如果 Checkpoint 太频繁会消耗大量资源,针对该情况,Flink-Doris-Connector 引入了攒批机制,以平衡实时性与资源消耗之间的矛盾。

攒批的实现原理是 Sink 端接收上游数据之后,不会立即将每条数据单独写入 Doris,而是先在内存中进行缓存,然后通过对应参数设置,将缓存数据提交到 Doris 中。结合攒批写入和 Doris 中的主键模型,可以确保数据写入的幂等性。

通过引入攒批机制,既满足了用户对数据实时写入的需求,又避免了频繁 Checkpoint 带来的资源消耗问题,从而实现性能与效率的优化。

三、基于 Flink CDC 的整库同步方案


以上是对 Flink-Doris-Connector 的典型场景和实现原理介绍,接下来我们来看它在实际业务中的一个重要应用——整库同步。相比底层实现,整库同步更偏向具体使用场景。下面我们基于前面介绍的能力,进一步探讨如何通过 Flink CDC 实现 TP 数据库到 Doris 的高效、自动化同步。

01 整库同步痛点

在数据迁移过程中,用户通常希望可以尽快将数据迁移到 Doris 中,然而在同步 TP 数据库时,整库同步往往面临以下几点挑战:

  • 建表:

    • 存量表的快速批量创建:TP 数据库中往往存在成千上万的表,这些表的结构各异,对于存量表而言需要逐一在 Doris 中创建对应的表结构;

    • 同步任务开启后,新增表的自动创建与同步:为了保证数据的完整性和实时性,同步工具需要实时监控 TP 数据库的变化,并自动在 Doris 中创建和同步新表。

  • 元数据映射:上下游之间字段元数据的便捷映射,包括字段类型的转换、字段名称的对应修改等。

  • DDL 自动同步:增加、删除列等操作会导致数据库结构发生变化,进而影响到数据同步。因此,同步工具需要能够实时捕获 DDL 并动态地更新 Doris 表结构,以确保数据的准确性和一致性。

  • 开箱即用:零代码,低门槛,理想的同步工具只需进行简单配置,即可实现数据的迁移和同步。

02 基于 Flink CDC 实现整库同步

在数据抽取方面,Flink-Doris-Connector 借用了 Flink CDC 的特性能力:

  • 增量快照读取

    • 无锁读取与并发读取:不论存量数据量多大,都可以通过横向提高 Flink 的并发提升数据读取速度。

    • 断点续传:当存量数据比较大时,可能面临同步中断的情况,CDC 支持中断任务的衔接同步。

  • 丰富数据源支持,Flink CDC 支持多种数据库,如 MySQL、Oracle、SQLServer 等。

  • 无缝对接 Flink 现有生态,方便与 Flink 已有Source 和 Sink 结合使用。

一键建表与元数据自动映射

Flink-Doris-Connector 中集成了 Flink CDC 等能力,可以让用户只提交一个操作,就能进行整库同步的操作。其主要原理是 Flink CDC Source 在接收到上游的数据源之后,会进行分流处理,不同的表用不同的 Sink。同时在最新的 Connector 版本中,也支持单个 Sink 同步多张表,支持新增表的创建和同步。

集成 Flink CDC 的功能后,用户仅需通过 Flink-Doris-Connector 提交任务,就可以在 Doris 自动创建所需的表无需配置上下游表之间的显式关联,实现数据快速同步

当 Flink 任务启动后,Doris-Flink-Connector 将自动识别对应的 Doris 表是否存在。如果表不存在,Doris Flink Connector 会自动创建表,并根据 Table 名称进行分流,从而实现下游多个表的 Sink 接入;如果表存在,则直接启动同步任务。

这一改进,不仅简化了配置流程,还使得新增表的创建和同步更加便捷,从而提升数据处理的整体效率。

Light Schema Change 与 DDL 自动同步

在 Apache Doris 1.2 版本之前,Schema Change 操作比较繁琐,需要手动增改数据列。在上游 TP 数据库发生表结构变更时,需要暂停数据同步任务、待 Doris 中的 Schema Change 完成后再重启任务。

自 Apache Doris 1.2 版本起,我们引入了轻量级的 Light Schema Change 机制,极大地简化了操作流程,常见的增减列场景其处理速度可达毫秒级。Light Schema Change 机制原理如下:

  • Schema Change:

    • 客户端向 FE 发起增减列的请求;

    • FE 在接收到请求后,修改当前元数据,并将最新的 Schema 持久化;

    • FE 向客户端同步 Schema Change 的结果;

  • Data Load:

    • 当后续导入任务发起时,FE 将导入任务与最新的 Schema 信息发送给 BE;

    • 在数据写入过程中,BE 的每个 Rowset 都会存储当前导入的 Schema 信息;

  • Query:

    • FE 将查询计划与最新的 Schema 一起发送给 BE;

    • BE 使用最新 Schema 执行查询计划;

  • Compaction:

    • 在 BE 中,对参与合并的 Rowset 版本进行比较;

    • 根据最新的  Schema Change 信息进行数据合并。

经测试,与早期的 Schema Change 相比,Light Schema Change 的数据同步性能有了数百倍的提升,

图片

Light Schema Change 与 Flink-Doris-Connector 的结合,通过 Flink CDC 可以实现 DDL 的自动同步,具体步骤如下:

  • Source 端捕获上游 Schema Change 信息,开启 DDL 变更同步;

  • Doris Sink 端识别并解析 DDL 操作(加减列);

  • Table 校验,判断是否可以进行 Light Schema Change;

  • 发起 Schema Change 操作;

基于这一实现,Doris 能自动获取到 DDL 语句并在毫秒级即可完成 Schema Change 操作,在上游 TP 数据库发生表结构变更时,数据同步任务无需暂停。

开箱即用:MySQL 整库同步示例

图片

对于用户来讲,只要有 Flink 客户端,通过上图的操作就可以提交整库同步作业。支持传入 Flink 的配置,比如并发设置、Checkpoint 间隔等,也支持正则表达式去配置需要同步的表, 同时可以将 Flink CDC Source 和 Doris Sink 的配置直接透传给具体的 Connector。通过这种方式,用户可以很便捷地提交整库同步作业。

03 Flink-Doris-Connector 核心优势

基于以上优化,可以完美解决用户的痛点:

  • 自动建表,即存量表与增量表的自动创建,无需用户提前在 Doris 中预先创建对应的表结构;

  • 自动映上下游字段,无需手动写入上下游字段间的匹配规则,节省大量人力成本;

  • 增减列无感同步,及时获取上游 DDL 语句并自动在 Doris 中实现毫秒级 Schema Change,无需停服、数据同步任务平稳运行;

  • 开箱即用,降低学习成本,更专注业务本身。

04 最佳实践

在生产环境中,若作业数量较多,直接采用上述提交方式的作业管理复杂度较高。通常建议借助任务托管平台(如 StreamPark),实现对作业的统一创建、监控与运维,从而提升任务管理效率与系统稳定性。

图片

图片

四、未来规划


未来,基于 Flink-Doris-Connector 的能力规划如下:

  • 支持实时读取。目前 Doris Source 只是把数据 Scan 出来,是一个有界流的读取,后续会支持 CDC 的场景,可以使用 Flink 来对 Doris 中的数据进行流式的读取。

  • Sink 一流多表。目前Flink-Doris-Connector支持单个 Sink 同步多张表,但是 Stream Load 的导入方式还是只支持单个表的导入。所以在表特别多的时候,需要在 Sink 端维护大量 StreamLoad 的连接,在后续会做到单个 Stream Load 的连接支持多张表的写入。

  • 整库同步方面,支持更多的上游数据源,满足更多数据同步场景。

 

展开阅读全文
加载中
点击引领话题?? 发布并加入讨论??
0 评论
0 收藏
0
分享
返回顶部
顶部
孕早期吃什么水果 BCG是什么意思 你掀起波澜抛弃了我是什么歌 天德是什么生肖 韩语思密达是什么意思
东莞有什么好玩的 流变是什么意思 手脚发热是什么原因 八纲辨证中的八纲是什么 高汤是什么汤
阚姓念什么 长水痘可以吃什么菜 前列腺是什么症状 小水滴会变成什么 甘油三酯高吃什么药
四点是什么时辰 荨麻疹有什么症状 神经鞘瘤挂什么科 辜负是什么意思 正在候车是什么意思
心机重的人弱点是什么hcv9jop3ns8r.cn 霸王别姬是什么意思hcv7jop6ns7r.cn 什么是物理sanhestory.com 属鸡女和什么属相最配hcv8jop6ns3r.cn 排卵试纸什么时候测最准确hcv8jop5ns3r.cn
签注是什么hcv8jop1ns6r.cn 什么叫柏拉图式的爱情hcv8jop6ns2r.cn 阴道出血是什么原因hcv9jop4ns5r.cn 运钞车押运员是什么人hcv9jop3ns4r.cn 梦到打死蛇是什么意思hcv7jop7ns4r.cn
中华田园犬为什么禁养hcv9jop6ns5r.cn 丧是什么意思yanzhenzixun.com 晚上吃什么不胖hcv8jop4ns2r.cn 朱砂五行属什么hcv9jop6ns9r.cn 更年期吃什么药hcv8jop3ns7r.cn
为什么睡久了会头疼hcv8jop5ns7r.cn 女人梦到被蛇咬是什么意思hcv9jop0ns8r.cn e m s是什么快递hcv8jop8ns4r.cn 同房是什么意思hcv7jop5ns0r.cn 宀与什么有关hcv9jop1ns0r.cn
百度