汽车之家:基于 Flink + Iceberg 的湖仓一体架构实践

简介: 由汽车之家实时计算平台负责人邸星星在 4 月 17 日上海站 Meetup 分享的,基于 Flink + Iceberg 的湖仓一体架构实践。

内容简要:

一、数据仓库架构升级的背景

二、基于 Iceberg 的湖仓一体架构实践

三、总结与收益

四、后续规划

一、数据仓库架构升级的背景

1. 基于 Hive 的数据仓库的痛点

原有的数据仓库完全基于 Hive 建造而成,主要存在三大痛点:

痛点一:不支持 ACID

1)不支持 Upsert 场景;

2)不支持 Row-level delete,数据修正成本高。

痛点二:时效性难以提升

1)数据难以做到准实时可见;

2)无法增量读取,无法实现存储层面的流批统一;

3)无法支持分钟级延迟的数据分析场景。

痛点三:Table Evolution

1)写入型 Schema,对 Schema 变更支持不好;

2)Partition Spec 变更支持不友好。

2. Iceberg 关键特性

Iceberg 主要有四大关键特性:支持 ACID 语义、增量快照机制、开放的表格式和流批接口支持。

  • 支持 ACID 语义

    • 不会读到不完整的 Commit;
    • 基于乐观锁支持并发 Commit;
    • Row-level delete,支持 Upsert。
  • 增量快照机制

    • Commit 后数据即可见(分钟级);
    • 可回溯历史快照。
  • 开放的表格式

    • 数据格式:parquet、orc、avro
    • 计算引擎:Spark、Flink、Hive、Trino/Presto
  • 流批接口支持

    • 支持流、批写入;
    • 支持流、批读取。

二、基于 Iceberg 的湖仓一体架构实践

湖仓一体的意义就是说我不需要看见湖和仓,数据有着打通的元数据的格式,它可以自由的流动,也可以对接上层多样化的计算生态。

——贾扬清(阿里云计算平台高级研究员)

1. Append 流入湖的链路

img

上图为日志类数据入湖的链路,日志类数据包含客户端日志、用户端日志以及服务端日志。这些日志数据会实时录入到 Kafka,然后通过 Flink 任务写到 Iceberg 里面,最终存储到 HDFS。

2. Flink SQL 入湖链路打通

我们的 Flink SQL 入湖链路打通是基于 “Flink 1.11 + Iceberg 0.11” 完成的,对接 Iceberg Catalog 我们主要做了以下内容:

1)Meta Server 增加对 Iceberg Catalog 的支持;

2)SQL SDK 增加 Iceberg Catalog 支持。

然后在这基础上,平台开放 Iceberg 表的管理功能,使得用户可以自己在平台上建 SQL 的表。

3. 入湖 - 支持代理用户

第二步是内部的实践,对接现有预算体系、权限体系。

因为之前平台做实时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值