文章目录
概要
基于flink1.18集群,实现毫秒级实时数据抽取,由Oracle或MySQL关系型数据库,将数据同步到doris数据仓库。建立基于doris的实时数据仓库。主要使用flink顶层的tableApi,SqlApi,使用简单,易于上手,基本通过flink-sql解决所有问题。
例如:
Oracle数据库实时同步到doris数仓。
整体架构流程
提示:基于flink集群,Oracle通过flink-cdc获取redo日志,进而对doris数仓数据进行增删
例如:使用flink集群能力,通过flink-cdc监控实时数据,然后走tableAPI–flinkSql,构造源表、结果表,分别对应源数据表、目标数据表,直接通过flinksql–insert到目标表,实现Oracle-doris数据实时同步。
技术名词解释
提示:flink、flink-cdc、tableApi、sqlApi、
例如:Flink1.18集群
技术细节
提示:开启oracle-redo全日制、设置flink api参数、构建flink表、开启检查点、设置检查点模式、设置开始读取位置
flink官方地址 https://nightlies.apache.org/flink/flink-docs-release-1.18/zh/
定义:
Flink 是一个在有界数据流和无界数据流上进行有状态计算分布式处理引擎和框架。Flink 设计旨在所有常见的集群环境中运行,以任意规模和内存级速度执行计算。(批处理、实时流处理的计算引擎)
提供层工具接口- stream process、dataStream API、Table API、SQL
相对后边的(顶层的接口)使用更为简单,即最常用的(好用的)为Table API、SQL
检查点设置
在 Flink 1.10 之前,你可以通过 StreamExecutionEnvironment 来配置 statebackend,checkpointing 以及重启策略。 现在你可以通过在 TableConfig 中,通过设置键值选项来配置它们
设置重启策略为 “fixed-delay”
table_env.get_config().set(“restart-strategy.type”, “fixed-delay”)
table_env.get_config().set(“restart-strategy.fixed-delay.attempts”, “3”)
table_env.get_config().set(“restart-strategy.fixed-delay.delay”, “30s”)
设置 checkpoint 模式为 EXACTLY_ONCE
(保证每条数据对于 Flink 任务的状态结果只影响一次)\At_Least_Once(每条数据对于 Flink 任务的状态计算至少影响一次)
table_env.get_config().set(“execution.checkpointing.mode”, “EXACTLY_ONCE”)
table_env.get_config().set(“execution.checkpointing.interval”, “3min”) Flink Doris Connector主要是依赖Checkpoint进行流式写入,所以Checkpoint的间隔即为数据的可见延迟时间。
设置 statebackend 类型为 “rocksdb”,其他可选项有 “filesystem” 和 “jobmanager”
你也可以将这个属性设置为 StateBackendFactory 的完整类名
e.g. org.apache.flink.contrib.streaming.state.RocksDBStateBackendFactory
table_env.get_config().set(“state.backend.type”, “rocksdb”)
设置 RocksDB statebackend 所需要的 checkpoint 目录
table_env.get_config().set(“execution.checkpointing.dir”, “file:///tmp/checkpoints/”)
开始读取位置
‘scan.startup.mode’ = ‘latest-offset’ 用于指定启动时从哪个位置开始读取数据 ‘scan.startup.mode’. Supported values are [initial, latest-offset]
1.initial: 这是默认的启动模式。当你首次启动 CDC 任务时,它会从最早的可用 binlog 位置开始读取数据。
2.latest-offset: 如果你希望 CDC 在每次启动时从最新的 binlog 位置开始读取数据,可以使用此模式。CDC 会忽略之前的 checkpoint,从当前 binlog 文件的最后一个位置开始读取。
flink1.18 tableApi中的参数:
connector
database-name
debezium.database.tablename.case.insensitive
debezium.log.mining.continuous.mine
debezium.log.mining.strategy
hostname
password
port
property-version
scan.startup.mode
scan.watermark.alignment.group
scan.watermark.alignment.max-drift
scan.watermark.alignment.update-interval
scan.watermark.emit.strategy
scan.watermark.idle-timeout
schema-name
table-name
username
小结
flink1.18、cdc、oracle、mysql、实时抽数