实时数仓-Flink使用总结

阿里云实时计算Flink版是阿里云基于Apache Flink构建的企业级、高性能实时大数据处理系统。具备一站式开发运维管理平台,支持作业开发、数据调试、运行与监控、自动调优、智能诊断等全生命周期能力。本期将对Flink的使用进行总结。
摘要由CSDN通过智能技术生成

阿里云实时计算Flink版是阿里云基于Apache Flink构建的企业级、高性能实时大数据处理系统。具备一站式开发运维管理平台,支持作业开发、数据调试、运行与监控、自动调优、智能诊断等全生命周期能力。本期将对Flink的使用进行总结。


1. Flink产品回顾

阿里云实时计算Flink版是阿里云基于Apache Flink构建的企业级、高性能实时大数据处理系统。具备一站式开发运维管理平台,支持作业开发、数据调试、运行与监控、自动调优、智能诊断等全生命周期能力。100%兼容Apache Flink。

  • 优势:分布式集群、支持弹性扩缩容、支持SQL作业调试,支持作业智能调优
  • 限制:仅支持Chrome内核的浏览器访问、默认不支持公网(公网需另外开通)

2. Flink相关概念

2.1. 基本概念

  • 工作空间:Flink全托管管理项目空间的基本单元,每个工作空间的计算资源隔离,开发控制台相互独立。
  • 项目空间:项目空间是Flink全托管管理作业的基本单元,所有配置、作业、权限均在单个项目空间下进行。可以创建多个项目空间,为每个项目空间分配单独的资源和权限,通过项目空间进行资源和权限的完全隔离。
  • 草稿:在实时计算Flink版SQL开发界面中创建的SQL作业称为草稿
  • 部署:草稿通过部署使草稿变为线上作业,目的是将开发和生产隔离。
  • 集群:集群为作业上线后的运行环境,以内存速度和任何规模执行计算。Flink全托管支持Per-Job集群和Session集群两种集群模式,分别用于正式和测试开发环境。
  • 连接器:通过 Flink SQL 对上下游表存储进行映射,实现数据读写与同步;
  • 元数据管理:提供了元数据信息,使用CTAS语法可实现DDL语句同步、自动建表功能。

2.2. 核心功能

2.2.1. Server ID 概念

Server ID 唯一标识一个Flink作业的执行环境。每个Server ID对应一个独立的Flink作业执行环境,它包含了资源配置、状态存储、作业管理等信息。

Server ID的作用:

  • 唯一标识:每个同步作业都对应着不同的server id,有助于区分不同的同步作业。
  • 资源隔离:Server ID用于隔离不同的Flink作业,确保在运行过程中不会相互影响。
  • 状态存储:Server ID关联着作业的状态存储,这对于故障恢复和作业的持久性非常重要。

Server ID参数取值范围为 5400~6400。

推荐在开启增量读取模式多并发读取数据时,设置该参数为ID范围,因为这样可以使得每个并发使用不同的ID。

注意:Server ID数少于并发数、多作业共用同ServerID,都会导致任务读取数据异常。

2.2.2. Flink CDC 技术

CDC是Change Data Capture(变更数据获取)的简称。主要是监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。

MySQL CDC 实现原理(断点续传):

同步任务启动时,将表按主键分为多个分片(chunk),记录此时binlog点位。使用增量快照算法通过select,逐个读取每个分片的数据。记录下已完成的分片。当发生Failover时,只需要继续读取未完成的分片。

3. Flink作业开发

3.1. 作业开发语言

  • SQL作业开发:阿里云全托管 Flink 开发控制台进行开发
  • JAR作业开发:本地开发,然后上传资源
  • Python作业开发:本地开发,然后上传资源

常规作业推荐SQL开发,涉及复杂逻辑或算法可使用 Python

3.2. 作业开发方式

  • SQL基础模版

  • 数据同步模版:点点点

4. Flink数据同步技术

4.1. 同步作业开发推荐

前提:确保工作空间中已注册目标端的元数据Catalog

  • 元数据catalog可以理解为数据源,但搭配CTAS/CDAS提供了额外功能,例如:自动建表、支持同步DDL等

4.1.1. CTAS 同步方式

通过CTAS(CREATE TABLE AS)语句实现了多库多表的合并同步,另外还能实时将上游表结构(Schema)的变更同步到下游表,提高在目标数据库中创建表和维护源表结构变更的效率。

具体什么是CTAS语法,请看代码:

如果使用Insert Into方式同步,代码如下:

可以看到Insert Into方式使用连接器进行同步,不仅作业配置复杂,且数据库连接信息完全裸露。

新增同步表:将新增表的同步代码加入到作业中,重新部署作业

4.1.2. CDAS 同步方式

CDAS(CREATE DATABASE AS)是CTAS语法的一个语法糖,用于实现整库同步、多表同步的功能。

如何新增同步表?

  • 方式一:开启CDAS新增表读取功能 SET 'table.cdas.scan.newly-added-table.enabled' = 'true';
  • 方式二:重新部署作业(停止作业前创建一次快照,从快照恢复作业)

Flink作业还支持使用STATEMENT SET语法将多个CDAS和CTAS语句作为一个作业一起提交,并支持对源表节点的合并复用,降低对数据源的压力。

4.1.3. CTAS & CDAS 区别与适用场景

同步方式

主要功能

适用场景

CTAS

分库分表合并同步

适用互动业务多数场景(方便维护)

CDAS

整库同步、多表同步

使用 STATEMENT SET 语法,优势在于可以使用一个Source节点读取多业务表的数据,降低源端的压力:

BEGIN STATEMENT SET;

CREATE DATABASE IF NOT EXISTS `holo`.`bigdata`
AS DATABASE `mysql-fuyao-1`.`bigdata` INCLUDING ALL TABLES
/*+ OPTIONS('server-id' = '5400') */;

CREATE DATABASE IF NOT EXISTS `holo`.`componentuserlogdb`
AS DATABASE `mysql-fuyao-1`.`componentuserlogdb` INCLUDING ALL TABLES
/*+ OPTIONS('server-id' = '5400') */;

END;

推荐CTAS方式,使用 STATEMENT SET ,方便维护与管理,但需在后续需求开发中,定义表归类标准。

4.2. 同步作业功能验证

4.2.1. 作业启动方式

启动方式介绍

  • 全量-无状态启动
  • 增量-指定源表开始时间:指定点位采集,仅针对SLS、Kafka
  • 增量-从最新状态恢复:系统自动保存Checkpoint恢复
  • 增量-从指定状态恢复:快照恢复

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值