栏目语

数澜科技开设栏目「技术派+」,聚焦前沿技术,洞悉行业风向,分享来自一线的研发经验与应用实践。

本期专栏由数澜科技研发中心副总经理白松带来,分享湖仓一体实践与探索。

导语

随着社会数字化进程不断加快,数据规模、数据类型持续高速增长。为了满足更加复杂的业务数据分析诉求,大数据基础设施技术从数据库、数据仓库、数据湖、再到湖仓一体逐步演化。

而伴随多个领域、场景的成功落地,湖仓一体这一技术概念正式走入了主流视野,AWS、阿里、华为、谷歌、腾讯等大厂纷纷推出基于云技术的数据湖服务产品。在国际知名机构Gartner发布的《Hype Cycle for Data Management 2021》中,湖仓一体(Lake house)首次被纳入到技术成熟度曲线中

湖仓一体从本质上打破了数据仓库和数据湖之间的壁垒,使得割裂的数据融合统一,减少了数据分析中的搬迁,实现了统一的数据管理,有利于挖掘、发挥更多数据价值。

在展开阐述湖仓一体之前,我们先了解数据湖与数据仓库。

一、数据湖与数据仓库

参考维基百科的定义,数据湖是一个存储企业的各种各样原始数据的大型仓库,其中的数据可供存取、处理、分析及传输。数据湖是以其自然格式存储数据的系统或存储库,通常是对象或文件。数据湖通常是企业所有数据的单一存储,包括源系统数据的原始副本,以及用于报告、可视化、分析和机器学习等任务的转换数据。数据湖可以包括来自关系数据库的结构化数据,半结构化数据(CSV、日志、XML、JSON),非结构化数据(电子邮件、文档、PDF)和二进制数据(图像、音频、视频)。

数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据存储系统,它将来自不同来源的结构化数据聚合起来,用于业务智能领域的比较和分析,数据仓库是包含多种数据的存储库,并且是高度建模的。

数据湖和数据仓库两者的区别如下:

在数据存储方面,数据湖可以存储结构化、半结构化、非结构化的所有数据,而数据仓库只能处理结构化数据。数据仓库在处理数据之前要先进行数据梳理、定义数据Schema后才进行入库操作,而数据湖是将原始数据原样同步进来,这就为后续数据湖的机器学习、数据挖掘带来无限可能。

数据仓库因为模型范式的要求业务不能随便地变迁,但对于数据湖来说,即使像互联网行业不断有新的应用,业务不断发生变化,数据模型也不断地变化,但数据依然可以非常容易地进入数据湖,对于数据的采集、清洗、规范化的处理,完全可以延迟到业务需求的时候再来处理。因此数据湖相对于企业来说,灵活性比较强,能更快速地适应前端业务的变化。

从两者的具体应用来看,数据仓库存储结构化的数据,适用于快速的BI和决策支撑,而数据湖可以存储任何格式的数据,往往通过挖掘能够发挥出数据的更大作为。

虽然数据仓库和数据湖的应用场景和架构不同,但它们并不是对立关系,在一些场景上二者的并存可以给企业带来更多收益,因此引出湖仓一体的解决方案。

二、湖仓一体定义

直观来看,湖仓一体就是把面向企业的数据仓库技术,与低廉的数据湖存储技术相结合,为企业提供一个统一的、可共享的数据底座,避免传统的数据湖、数据仓库之间的数据移动,将原始数据、加工清洗数据、模型化数据,共同存储于一体化的“湖仓”中,既能面向业务实现高并发、精准化、高性能的历史数据、实时数据的查询服务,又能承载分析报表、批处理、数据挖掘等分析型业务。

目前行业普遍认同的观点:湖仓一体需要打通数据仓库和数据湖两套体系,让数据和计算在湖和仓之间自由流动,从而构建一个完整有机的大数据技术生态体系

湖仓一体方案的出现,帮助企业构建起全新的、融合的数据平台。通过对机器学习和AI算法的支持,实现数据湖+数据仓库的闭环,提升业务的效率。数据湖和数据仓库的能力充分结合,形成互补,同时对接上层多样化的计算生态。

目前,市场上主流的三大开源数据湖方案分别是: Delta、Apache Iceberg和Apache hudi。

Delta是Apache Spark背后商业公司Databricks推出的,国内互联网公司相对使用较少;Apache Hudi是一种针对分析型业务的、扫描优化的数据存储抽象,它能够使DFS数据集在分钟级的时延内支持变更,也支持下游系统对这个数据集的增量处理;Apache Iceberg是一种用于大型数据分析场景的开放表格式,目前社区关注度暂时比不上Delta,功能也不如Hudi丰富,但具有高度抽象和非常优雅的设计。

数澜科技旗下核心产品数栖平台支持基于Iceberg和Hudi构建数据湖,下面阐述数澜科技在湖仓一体方面的实践经验,主要包括技术架构、数据入湖、数仓构建。

三、湖仓一体实践

在数澜科技提供的湖仓一体解决方案中,数据统一存储在Iceberg+HDFS上,并用Flink、Spark、Trino三个不同引擎访问湖中数据来对外提供不同类型的服务。

基于Flink+Iceberg来构建湖仓一体准实时数仓,将原来T+1的离线数仓做成准实时的数仓,提升数仓整体的数据时效性,以便更好支持上下游的业务。在数据仓库处理层,可以用 Trino进行一些简单的查询,而且 Iceberg 也支持 Streaming read,所以在系统的中间层也可以直接接入 Flink,用 Flink 做一些批处理或者流式计算的任务,把中间结果做进一步计算后输出到下游。

在具体实例中,把Mysql中的demo_users表数据通过Flink CDC实时入湖,落入数据仓库ODS层的表中,然后基于ODS层和一个实时流flink_demo_complaint_data进行Join操作生成DWD层的表。


示例代码:


CDC 数据成功入湖 Iceberg 之后,我们还会打通常见的计算引擎,例如 Presto(Trino)、Spark、Hive 等,他们都可以实时读取到 Iceberg 表中的最新数据。


下图是基于Trino准实时查询Iceberg表中的数据,给业务方提供自定义SQL类型的API。


同时,针对目前市场上湖仓解决方案中普遍存在的痛点:缺乏数据缓存层,导致数据访问速度较慢;缺乏统一的编程模型,例如针对批和流要写Spark和Flink两种类型的SQL。数澜科技在数栖平台中引入Alluxio和Beam解决此类问题。

  • 基于Alluxio进行数据缓存

    在当前架构中,计算引擎层通过Iceberg或Hudi提供的API来操作底层的文件存储系统,导致数据读写速度较慢。因此,考虑引入Alluxio作为数据编排层。加速对数据湖的读写,当Spark、Flink或Trino当问文件系统时,Alluxio充当虚拟分布式存储系统来加速数据,并与每个计算群集共存。

  • 基于Beam的统一编程模型

    Apache Beam是一个开源的统一编程模型,统一流和批,抽象出统一的API接口。并且生成的分布式数据处理任务应该能够在各个分布式执行引擎(例如Spark、Flink)上执行,用户可以自由切换分布式数据处理任务的执行引擎与执行环境。因此后续计划引入Beam作为统一的编程模型,在数据中台产品层提供一个统一的IDE。


数澜科技官网_让数据用起来

数智学习|湖仓一体实践与探索相关推荐

  1. 如何基于MaxCompute快速打通数据仓库和数据湖的湖仓一体实践

    简介: MaxCompute 是面向分析的企业级 SaaS 模式云数据仓库,以 Serverless 架构提供快速.全托管的在线数据仓库服务,消除了传统数据平台在资源扩展性和弹性方面的限制,最小化用户 ...

  2. 湖仓一体:基于Iceberg的湖仓一体架构在B站的实践

    文章目录 简介 Why?为什么需要湖仓一体 B站的湖仓一体实践 总结 简介 在B站,每天都有PB级的数据注入到大数据平台,经过离线或实时的ETL建模后,提供给下游的分析.推荐及预测等场景使用.面对如此 ...

  3. 湖仓一体是否会掀起金融业的下一波数字浪潮?

    当数字经济成为生活的主体,金融平台的改变是最为明显的.以往现金业务为主时,交易流程与频次都会相对更低,而如今数字化推动了交易模式和交易频率的升级,这也意味着金融平台所面临的场景及需求发生了变化.当数字 ...

  4. B站基于Iceberg的湖仓一体架构实践

    点击上方蓝色字体,选择"设为星标" 回复"面试"获取更多惊喜 八股文教给我,你们专心刷题和面试 Hi,我是王知无,一个大数据领域的原创作者. 放心关注我,获取更 ...

  5. Arctic开源!网易数帆×华泰证券,推动湖仓一体落地

    数字化转型趋势下,各行业对数据生产力的探索与追求逐步进入深水区.现实的问题是,企业数据仓库存储.数据湖多种技术并存的局面将长期存在,如何才能摆脱技术协同的内耗,让大数据直通生产力的彼岸? 8月11日下 ...

  6. Arctic开源!网易数帆X华泰证券,推动湖仓一体落地

    数字化转型趋势下,各行业对数据生产力的探索与追求逐步进入深水区.现实的问题是,企业数据仓库存储.数据湖多种技术并存的局面将长期存在,如何才能摆脱技术协同的内耗,让大数据直通生产力的彼岸? 8月11日下 ...

  7. 离线实时一体化数仓与湖仓一体—云原生大数据平台的持续演进

    简介:阿里云智能研究员 林伟 :阿里巴巴从湖到仓的演进给我们带来了湖仓一体的思考,使得湖的灵活性.数据种类丰富与仓的可成长性和企业级管理得到有机融合,这是阿里巴巴最佳实践的宝贵资产,是大数据的新一代架 ...

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

    简介:由汽车之家实时计算平台负责人邸星星在 4 月 17 日上海站 Meetup 分享的,基于 Flink + Iceberg 的湖仓一体架构实践. 内容简要: 一.数据仓库架构升级的背景 二.基于 ...

  9. 37 手游基于 Flink CDC + Hudi 湖仓一体方案实践

    简介: 介绍了 37 手游为何选择 Flink 作为计算引擎,并如何基于 Flink CDC + Hudi 构建新的湖仓一体方案. 本文作者是 37 手游大数据开发徐润柏,介绍了 37 手游为何选择 ...

最新文章

  1. MySQL / 各种锁
  2. CG CTF WEB COOKIE
  3. WebSocket入门
  4. servlet单实例多线程模式
  5. ssl提高组周三备考赛【2018.10.31】
  6. Android 4.0 Launcher源码分析系列(二)
  7. 程序员笔试面试后上机_hcie面试有哪些要注意的事项?
  8. 国家图书馆关于php的书,国家图书馆啊,能借的书太少
  9. shell 并行执行与串行执行
  10. c++计算字符串中浮点数
  11. 输入地点名可以直接查询该位置的经度纬度(结合百度地图)
  12. 关于Eclipse在servlet中连接数据库时出现驱动加载失败的解决
  13. 华为防火墙IPSec详解与配置实验
  14. 解决latex伪代码标题序号问题
  15. 【通信仿真】Aloha协议仿真含Matlab源码
  16. PIC单片机提示 No valid installed HI-TECH compiler drivers
  17. 短线交易有这些特点的,慎做短线交易
  18. 关于ARPG发展之操作和技能之泛泛而谈(转)
  19. Voldemort启动失败案例一则
  20. 让IE支持placeholder属性

热门文章

  1. 第28课:彻底解密Spark Sort-Based Shuffle排序具体实现内幕和源码详解
  2. 压力应力测试软件,管道强度和应力计算软件
  3. 在我方某前沿防守地域 matlab,[matlab]Monte Carlo模拟学习笔记
  4. oracle exp导出很慢,oracleexp导出慢
  5. 技术人员如何创业之合伙人的模式
  6. GameFramework篇:StarForce资源加载细节讲解(一:资源加载辅助器)
  7. 浅谈互联网赚钱的几种方式
  8. 三角形 已知三点坐标求面积
  9. linux上下左右为ABCD
  10. more than and less than