从理论到实践,实时湖仓功能架构设计与落地实战

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 实时湖仓是「实时计算」和「数据湖」的一种结合应用场景,并不是具体指一个产品模块。本文主要介绍了平台通过相关功能的设计,让数据开发可以更简单更直观地了解 Flink Catalog、数据湖、流批一体等概念,并在实际业务场景中更方便地去落地实践。

在上篇文章中,我们向大家解释了为什么实时湖仓是当前企业数字化转型过程中的解决之道,介绍了实时计算和数据湖结合的应用场景。(“数据驱动”时代,企业为什么需要实时湖仓?


在这篇文章中,我们将详细介绍在数栈实时开发平台内,实时湖仓的功能架构设计和具体实操案例。


功能架构介绍

实时湖仓并不是一个独立的产品模块,它的完整实践是基于数栈实时开发平台进行的。为了更直观地介绍我们建设实时湖仓的完整思路,我们单独拆出了架构图供大家参考。

湖仓管理

湖仓管理是建设实时湖仓的基础,通过这一层的建设,你可以:


· 借助 Flink Catalog 管理,构建一套虚拟湖仓分层架构,类似传统离线数仓中的主题域、DW 分层设计

· 可视化创建湖表,平台支持 Paimon、Hudi、Iceberg 三种湖表创建,并分别提供对应的 DDL DEMO

· 通过 Flink 表管理,持久化存储基于 RDB、Kafka 创建的 Flink 映射表,和湖表一起,为实时计算提供表管理能力

· 作为实时计算领域最常用的数据介质,平台同时也支持对 Kafka Topic 进行基础的增删改查、数据统计分析等功能


湖仓开发

湖仓开发是建设实时湖仓的核心能力,按应用场景主要分为:


· 数据入湖:通过实时消费 Kafka,或者读取 RDB 的 CDC 数据,将业务数据实时打入数据湖,构建实时湖仓的 ODS 层,为后续的流/批读写提供统一的数据基础

· 湖仓加工:借助湖表格式的事务特性、快照特性等能力,通过 FlinkSQL 任务读写湖表,构建湖仓中间层

· 流批一体:在湖仓加工过程中,根据不同的业务场景,可以选择流读或批读。在流批一体的设计上,你可以选择先批读存量数据,无缝衔接流读增量数据;也可以选择流读增量数据,批读进行数据订正


湖仓治理

在湖仓开发过程中,我们可以通过湖仓治理能力,不断优化完善实时湖仓:


· 湖表文件治理:在湖仓开发过程中,会产生大量小文件、过期快照、孤儿文件等数据,严重影响湖表的读写性能。通过文件治理功能,可以定期合并小文件、清理过期快照/孤儿文件,提高开发效率

· 元数据查询:在提供 Catalog/Database/Table 基础信息查询的同时,会对湖表的存储、行数、任务依赖等信息进行统计,方便全局判断湖表价值

· Hive 表转换:对于历史 Hive 表,平台支持在不影响历史数据的前提下,一键转换表类型


实操案例分享

下面通过一个数开案例,详细介绍如何在平台实现数据入湖、湖仓开发、湖仓治理。


数据入湖(实时采集 DB2 数据,写入 PaimonA 湖表)

● 先创建 DB2-CDC 的 Flink 映射表和 Paimon 湖表


● 开发入湖任务


湖仓开发(流式读取 PaimonA,流式写入 PaimonB)

● 创建 PaimonB

方式同上,此处不再重复演示。


● 开发读写湖表任务

平台支持读写参数的配置化开发,无需在 SQL 代码中定义,从而极大地提高了开发效率。例如,在湖表读取时选择时间戳,如果使用 SQL 开发,需要先在后台查询快照数据,并进行时间戳转换才能理解。而通过配置化方式,可以直接选择或输入日期时间,在提交任务时自动进行时间戳转换


湖仓治理

● 元数据查询

提供 Catalog、Database、湖表(Paimon/Hudi/Iceberg)、Flink 映射表的元数据查询。


● 数据文件治理

湖表的读写,特别是实时场景下的读写,会产生大量的小文件,小文件过多又会影响读取性能。因此对于湖表文件的治理功能,是建设实时湖仓必不可缺的一部分。


总结

实时湖仓是「实时计算」和「数据湖」的一种结合应用场景,并不是具体指一个产品模块。平台通过相关功能的设计,让数据开发可以更简单更直观地了解 Flink Catalog、数据湖、流批一体等概念,并在实际业务场景中更方便地去落地实践。


本文根据《实时湖仓实践五讲第二期》直播内容总结而来,感兴趣的朋友们可点击链接观看直播回放视频及免费获取直播课件。

直播课件:

https://www.dtstack.com/resources/1053?src=szgzh

直播回放视频:

https://www.bilibili.com/video/BV1Uw411k7iS/?spm_id_from=333.999.0.0


《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001?src=szsm

《数栈V6.0产品白皮书》下载地址:https://www.dtstack.com/resources/1004?src=szsm

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=szalykfz

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术 qun」,交流最新开源技术信息,qun 号码:30537511,项目地址:https://github.com/DTStack

相关实践学习
数据库实验室挑战任务-初级任务
本场景介绍如何开通属于你的免费云数据库,在RDS-MySQL中完成对学生成绩的详情查询,执行指定类型SQL。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
相关文章
|
4天前
|
运维 Oracle 容灾
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
Oracle dataguard 容灾技术实战(笔记),教你一种更清晰的Linux运维架构
|
6天前
|
存储 监控 API
构建高效微服务架构:后端开发的现代实践
【5月更文挑战第9天】 在本文中,我们将深入探讨如何在后端开发中构建一个高效的微服务架构。通过分析不同的设计模式和最佳实践,我们将展示如何提升系统的可扩展性、弹性和维护性。我们还将讨论微服务架构在处理复杂业务逻辑和高并发场景下的优势。最后,我们将分享一些实用的工具和技术,以帮助开发者实现这一目标。
|
2天前
|
缓存 监控 安全
Django框架在大型Web应用中的架构设计与实战
【5月更文挑战第18天】Django框架在构建大型Web应用中扮演重要角色,采用分层架构(数据、业务逻辑、表示层)和多应用组织模式,结合缓存策略(如Memcached、Redis)提升性能。通过异步处理、分布式部署提高响应速度和扩展性。关注数据分区、安全设计及监控日志,确保系统高效、稳定。Django为复杂业务提供坚实基础,助力打造卓越Web系统。
19 7
|
3天前
|
敏捷开发 监控 API
构建高效微服务架构:从理论到实践
【5月更文挑战第18天】 在当今快速发展的软件开发领域,微服务架构已经成为一种流行的设计模式,它通过将大型应用程序分解为一系列小型、独立的服务来提高系统的可伸缩性、弹性和维护性。本文旨在探讨如何从理论走向实践,构建一个高效的微服务架构。文章首先介绍微服务的基本概念和优势,然后详细讨论了在设计和部署微服务时需要考虑的关键因素,包括服务划分、通信机制、数据一致性、容错处理和监控策略。最后,结合具体案例分析,展示如何在现实世界中应用这些原则,确保微服务架构的高效运行。
|
3天前
|
测试技术 持续交付 API
构建高效的微服务架构:后端开发的现代实践
【5月更文挑战第18天】在数字化转型的浪潮中,微服务架构已成为企业追求敏捷、可扩展和容错能力的关键解决方案。本文将深入探讨微服务的核心概念,包括其设计原则、技术栈选择以及实施过程中的挑战与对策。通过对微服务架构实践的详细剖析,旨在为后端开发人员提供一套构建和维护高效微服务系统的实用指南。
|
3天前
|
前端开发 Android开发
Android架构组件JetPack之DataBinding玩转MVVM开发实战(四)
Android架构组件JetPack之DataBinding玩转MVVM开发实战(四)
Android架构组件JetPack之DataBinding玩转MVVM开发实战(四)
|
4天前
|
运维 Cloud Native 持续交付
构建未来:云原生架构的演变与实践
【5月更文挑战第17天】 在数字化转型的浪潮中,企业正迅速采用云原生技术来构建和部署应用程序。本文将深入探讨云原生架构的核心概念、发展历程以及如何在现代IT环境中实现敏捷、可扩展和高效的服务。通过对容器化、微服务、持续集成和持续部署(CI/CD)等关键技术的分析,我们将揭示如何利用云原生方法论来优化资源利用、加快产品上市速度,并提高系统的可靠性。
13 3
|
4天前
|
Android开发
Android Jetpack架构开发组件化应用实战,字节跳动+阿里+华为+腾讯等大厂Android面试题
Android Jetpack架构开发组件化应用实战,字节跳动+阿里+华为+腾讯等大厂Android面试题
|
5天前
|
边缘计算 负载均衡 网络协议
B站千万级长连接实时消息系统的架构设计与实践
本文将介绍B站基于golang实现的千万级长连接实时消息系统的架构设计与实践,包括长连接服务的框架设计,以及针对稳定性与高吞吐做的相关优化。
23 9
|
6天前
|
消息中间件 Go API
基于Go语言的微服务架构实践
随着云计算和容器化技术的兴起,微服务架构成为了现代软件开发的主流趋势。Go语言,以其高效的性能、简洁的语法和强大的并发处理能力,成为了构建微服务应用的理想选择。本文将探讨基于Go语言的微服务架构实践,包括微服务的设计原则、服务间的通信机制、以及Go语言在微服务架构中的优势和应用案例。