摘要:关系数据库的数据入湖,有多种场景、多种工具、多种入湖时效要求等,本文梳理相关场景,以及对应的建议方案。

本文分享自华为云社区《关系数据库数据入湖的场景及方案总结》,作者:HisonHuang 。

关系数据库的数据入湖,有多种场景、多种工具、多种入湖时效要求等,本文梳理相关场景,以及对应的建议方案。

首先介绍下两种入湖工具:批量数据迁移工具(如CDM)和实时数据接入工具(如CDL)。

批量数据迁移工具,可以一次全量、一次全量+批次增量的方式将数据从关系数据库的数据迁移到数据湖,往往入湖时效性(从数据产生到数据进入数据湖贴源层)在10多分钟或更长,如15分钟左右,取决于批次增量迁移任务的时间间隔。以下是批量数据迁移工具(CDM)的功能架构图:

实时数据接入工具(如CDL),可以实时捕获关系数据库的binlog日志,保存在消息队列如Kafka,并支持实时解析binlog日志生成增删改命令来操作数据湖的数据记录,实现关系数据库的数据实时入湖,入湖时效性在秒级或分钟级,一般小于15分钟。以下是实时数据接入工具(CDL)的功能架构图:

场景1:关系数据库有存量历史数据,无实时产生的新数据

方案:
1、入湖工具:批量数据迁移工具(如CDM)
2、入湖方式:整表迁移,示意如下:

3、入湖流程:
3.1、使用入湖工具,配置关系数据库作为源端,配置HDFS/Hive的目录作为目的端;
3.2、用入湖工具启动入湖作业,关系数据库-》HDFS目录(数据湖贴源层)。

场景2:关系数据库初始无数据,在建立入湖流程后,关系数据库才开放数据写入

方案:
前置条件:关系数据库打开binlog日志开关。
1、入湖工具:实时数据接入工具(如CDL)
2、入湖方式:实时增量数据入湖,示意如下:

3、入湖流程:
3.1、使用入湖工具,配置关系数据库作为源端,配置Hudi文件的目录作为目的端;
3.2、启动入湖工具运行;
3.3、关系数据库的实时增量数据入湖;
3.3.1、数据记录插入、修改、删除到关系数据库;
3.3.2、关系数据库的数据变化日志被实时捕获到入湖工具;
3.3.3、入湖工具解析日志,调用Hudi接口插入、修改、删除数据记录到Hudi文件的目录(数据湖贴源层)。

场景3:关系数据库有存量历史数据,且实时产生新数据,数据记录有时间标识字段

方案1:
1、入湖工具:批量数据迁移工具(如CDM)
2、入湖方式:首次存量历史数据入湖+持续批次增量数据入湖
3、入湖时效:近实时(取决于批次调度周期)
4、入湖流程:
4.1、假设关系数据库实时产生稳定数量的新数据;
4.2、使用入湖工具,配置关系数据库作为源端,配置HDFS/Hive的目录作为目的端;
4.3、用入湖工具,启动存量数据入湖作业,其中Where过滤条件的时间标识字段从初始时间截止到当前时间;
注:存量数据入湖作业运行时间较久,视存量历史数据量、网络带宽、入湖作业吞吐量等因素决定。在此期间,关系数据库由于不断接受新写入,累积较大量的新数据。
4.4、持续批次启动增量数据入湖作业,其中Where过滤条件的时间标识字段从上一批次作业的截止时间到到当前时间;每批次迁移数据量逐步减少,批次之间的时间间隔逐步减小并趋向稳定,每批次作业所占用的计算资源也逐步减小并趋向稳定。示意如下:

方案2:
前置条件:关系数据库打开binlog日志开关。
1、入湖工具:批量数据迁移工具(如CDM)+ 实时数据接入工具(如CDL)
2、入湖方式:首次存量历史数据入湖+持续批次增量数据入湖+实时增量数据入湖
3、入湖时效:前两个阶段非实时,最后阶段进入实时
4、入湖流程:
4.1、假设关系数据库实时产生稳定数量的新数据;
4.2、使用批量数据迁移工具,配置关系数据库作为源端,配置HDFS/Hive的目录作为目的端(表A,文件格式可能是CSV);
4.3、用批量数据迁移工具,启动存量数据入湖作业,其中Where过滤条件的时间标识字段从初始时间截止到当前时间;
注:存量数据入湖作业运行时间较久,视存量历史数据量、网络带宽、入湖作业吞吐量等因素决定。在此期间,关系数据库由于不断接受新写入,累积较大量的新数据。
4.4、持续批次启动增量数据入湖作业,其中Where过滤条件的时间标识字段从上一批次作业的截止时间到到当前时间;每批次迁移数据量逐步减少,批次之间的时间间隔逐步减小并趋向稳定,每批次作业所占用的计算资源也逐步减小并趋向稳定;
4.5、某时间点Ts暂停关系数据库的数据写入,确保Ts之前的数据全部由批次作业迁移到了HDFS目录(数据湖贴源层);
4.6、停止批量数据迁移工具的批次作业。
4.7、使用实时数据接入工具,配置关系数据库作为源端,配置Hudi文件的目录作为目的端(表B,文件格式是Hudi);
4.8、启动实时数据接入工具运行;
4.9、此时Te关系数据库开放数据写入;
4.10、关系数据库的实时增量数据入湖;
4.10.1、关系数据库的数据变化日志被实时捕获到实时数据接入工具;
4.10.2、实时数据接入工具解析日志,调用Hudi接口插入、修改、删除数据记录到Hudi文件的目录(数据湖贴源层)。示意如下:

场景4:关系数据库有存量历史数据,且实时产生新数据,数据记录无时间标识字段

方案:
前置条件:关系数据库打开binlog日志开关。
1、入湖工具:批量数据迁移工具(如CDM)+ 实时数据接入工具(如CDL)
2、入湖方式:整表迁移+实时增量数据入湖
3、入湖时效:最后阶段进入实时
4、入湖流程:
4.1、暂停关系数据库的数据写入;
4.2、使用批量数据迁移工具,配置关系数据库作为源端,配置HDFS/Hive的目录作为目的端(表A,文件格式可能是CSV);
4.3、用批量数据迁移工具批量数据迁移工具启动入湖作业,关系数据库-》HDFS目录(数据湖贴源层);
4.4、以上存量数据迁移完成后,停止批量数据迁移工具的批次作业;
4.5、使用实时数据接入工具,配置关系数据库作为源端,配置Hudi文件的目录作为目的端(表B,文件格式是Hudi);
4.6、启动实时数据接入工具运行;
4.7、此时Te关系数据库开放数据写入;
4.8、关系数据库的实时增量数据入湖;
4.8.1、关系数据库的数据变化日志被实时捕获到实时数据接入工具;
4.8.2、实时数据接入工具解析日志,调用Hudi接口插入、修改、删除数据记录到Hudi文件的目录(数据湖贴源层)。示意如下:

点击关注,第一时间了解华为云新鲜技术~

送你两个神器,关系数据库数据入湖轻松应对相关推荐

  1. Flink + Iceberg,腾讯百亿级实时数据入湖实战

    简介:上海站 Flink Meetup 分享内容,腾讯数据湖的百亿级数据场景落地的案例分享. 本文整理自腾讯数据湖研发高级工程师陈俊杰在 4 月 17 日 上海站 Flink Meetup 分享的&l ...

  2. Flink 和 Iceberg 如何解决数据入湖面临的挑战

    简介:4.17 上海站 Meetup 胡争老师分享内容:数据入湖的挑战有哪些,以及如何用 Flink + Iceberg 解决此类问题. GitHub 地址 https://github.com/ap ...

  3. 技术干货|基于Apache Hudi 的CDC数据入湖

    简介:阿里云技术专家李少锋(风泽)在Apache Hudi 与 Apache Pulsar 联合 Meetup 杭州站上的演讲整理稿件,本议题将介绍典型 CDC 入湖场景,以及如何使用 Pulsar/ ...

  4. 技术干货|基于Apache Hudi 的CDC数据入湖「内附干货PPT下载渠道」

    简介: 阿里云技术专家李少锋(风泽)在Apache Hudi 与 Apache Pulsar 联合 Meetup 杭州站上的演讲整理稿件,本议题将介绍典型 CDC 入湖场景,以及如何使用 Pulsar ...

  5. Flink CDC 系列 - Flink CDC 如何简化实时数据入湖入仓

    摘要:本文整理自伍翀 (云邪).徐榜江 (雪尽) 在 Flink Forward Asia 2021 的分享,该分享以 5 个章节详细介绍如何使用 Flink CDC 来简化实时数据的入湖入仓, 文章 ...

  6. 大数据产品开发流程规范_华为内部资料流出!揭秘华为数据湖:3大特点、6个标准、入湖流程...

    点蓝色字关注"云技术" 导读:数据湖:实现企业数据的"逻辑汇聚". 作者:华为公司数据管理部来源:大数据DT(ID:hzdashuju)01 华为数据湖的3个特 ...

  7. 华为数据湖:3大特点、6个标准、入湖流程

    华为数据湖:3大特点.6个标准.入湖流程 作者:华为公司数据管理部 01. 华为数据湖的3个特点 华为数据湖(如图5-2所示)是逻辑上对内外部的结构化.非结构化的原始数据的逻辑汇聚.数据入湖要遵从6项 ...

  8. 揭秘华为数据湖:3大特点、6个标准、入湖流程

    01 华为数据湖的3个特点 华为数据湖(如图5-2所示)是逻辑上对内外部的结构化.非结构化的原始数据的逻辑汇聚.数据入湖要遵从6项入湖标准,基于6项标准保证入湖的质量,同时面向不同的消费场景提供两种入 ...

  9. Flink原理解析50篇(四)-基于 Flink CDC 打通数据实时入湖

    在构建实时数仓的过程中,如何快速.正确的同步业务数据是最先面临的问题,本文主要讨论一下如何使用实时处理引擎Flink和数据湖Apache Iceberg两种技术,来解决业务数据实时入湖相关的问题. 0 ...

最新文章

  1. acwing算法题--直方图中最大的矩形
  2. PyQt5 技术篇-QWidget、Dialog设置界面固定大小、不可拉伸方法实例演示
  3. 数据结构——HDU1312:Red and Black(DFS)
  4. linux c嵌入汇编语言,Linux 下的C和Intel 汇编语言混用
  5. html多语言国际化,gMIS吉密斯i18n多语言国际化更新
  6. idea查看过期时间
  7. Linux多线程编程(一)---多线程基本编程
  8. zencart 后台 tool-define page editor define define_main_page.php
  9. tcp/ip ---数据封装过程
  10. 通过AO连接多个EO并进行使用
  11. datagridviewrow 行宽_C# Winform DataGridView实现行[Row]的上下移动…….. | 学步园
  12. ZMQ中线程之间发送命令
  13. JSP的自定义标签(二)之带属性的标签
  14. 写一个微信和支付宝订单的查询方法:
  15. 显卡刷bios改型号_A卡修改BIOS软件/刷显卡BIOS软件
  16. ROS基础篇(四)-- 调试时,常用的命令有哪些
  17. opencv 3D摄像头不能读取画面
  18. mysql删除某张表三个月前的数据
  19. 显示器接口_显示器带全能TypeC接口用起来有多爽?
  20. 《机器学习实战》学习笔记(八):预测数值型数据 - 回归

热门文章

  1. 面向对象编程起步——神来之笔
  2. jquery和javascript屏蔽右键菜单及阻止事件冒泡
  3. HTML5 绘制动画
  4. 先验、后验、似然、置信的理解
  5. python apscheduler 动态_基于Flask-APScheduler实现添加动态定时任务
  6. python websocket异步高并发_python – WebSocket聊天异步示例崩溃
  7. [转]Postgres-XL 10r1英文文档
  8. JAVA后端常用框架SSM,redis,dubbo等
  9. 转载 :配置ssh密钥认证自动登录
  10. 深入浅出项目管理——例子