一、引言
在上期的两篇连载文章中,我们分析了Lambda 和 Kappa 架构固有的一些问题,同时也引出了流批一体架构的优势,本文就 FastData流批一体大数据平台DLink ,如何基于 Flink + Iceberg 流批一体技术及其实践进行初步探讨。
二、需求背景
传统的基于离线(比如 Hive)数仓有很高的成熟度和稳定性,但在一些时延要求比较高的场景,则需要借助实时数仓 Flink 的帮助,将延时降低到秒级(或分钟级),但两套并存的数仓架构,势必带来双倍的资源消耗和开发维护工作量。那么,是否存在可以将离线和实时任务、批处理和流式任务,统一放在一套架构中调度和运行的架构呢?答案自然是肯定的。这就是 Dlink 的统一技术栈。
三、DLink 流批一体技术架构
(1)统一技术栈
DLink整体技术方案的核心理念就是“统一”。从底层Data Stack 的角度看,包括5 个部分:
- 数据存储:首先是数据存储格式的统一。利用 Iceberg 基于快照的读写分离和回溯(backfill)、流批统一的写入和读取、不强绑定计算存储引擎、ACID 语义及数据多版本、表schema和 partition evolution 等能力。
- Catalog Manager:统一Data Catalog,兼容 Hive Meta Store 接口,可实现 Flink、Trino、Hive 等常用大数据分析、计算引擎的无缝接入和良好的互操作性。
- 计算引擎:Unified DataStream,Flink 引擎在 DataStream 和 Table API 中均支持 batch 和 streaming 两种执行模式。
- 调度引擎:流批一体调度器,同时支持流批调度模式。在调度器内部通过 DAG 的合并和拆解、资源的细粒度配置等规则,对物理执行计划进行自适应调优。
- SQL引擎:统一了流式计算 SQL 与分析、点查等 Serving 类SQL 语义(兼容 ANSI SQL 标准)。所有的 SQL 类操作使用统一的 SQL 引擎。
图一 DLink 统一技术栈