StarLake:汇量科技云原生数据湖的探索和实践

简介: 快速了解汇量科技在云原生数据湖领域的探索和实践,详解 StarLake 的架构及业务应用案例。

作者:陈绪(汇量科技资深算法架构师,EnginePlus 2.0 产品负责人)

image.png

内容框架:

  • 互联网业务视角看湖仓一体
  • StarLake 架构实践
  • StarLake 业务应用案例
  • 未来方向

 

一、互联网业务视角看湖仓一体

1、数据仓库

  • 结构化数据
  • 范式建模
  • 预设 Schema
  • 流批架构复杂
  • 计算存储弹性一般

 

2、数据湖

  • 非结构化
  • 读取型 Schema
  • 流批一体化
  • 云原生,天然弹性
  • 元数据和对象存储能力持续演进

 

3、湖仓一体

  • 以湖为底座
  • 增强元数据扩展性
  • 提升云对象存储性能
  • 优化宽表实时数据摄入吞吐
  • 分析、科学一体化

 

二、StarLake 架构实践

image.png

 

在我们自己去实践湖仓一体的应用的时候也找了一些业务场景,比如说我们的推荐系统,我们的设备管理、DMP。一些开源的数据湖组件我们也遇到了部分问题,也是这些问题驱动我们重新去设计了一套新的 StarLake 数据湖。

 

具体来讲解决了这样几类问题,第一个就是 Upsert 的性能,Upsert 要去做实时匡表的插入,每一列每一行有不同的实施流,可能是并发在写。跟一般的 ETL 流程会有比较大的区别,传统的框架可能它这块的性能优化程度是一般的,StarLake 有做专门的设计。

 

第二块就是元数据的扩展性,他们往往会在一定的量级比如说小文件到亿级别十亿级别,一般会有一些性能的扩展性的问题,针对这块 StarLake 也专门用分布式 DB 的方式做元数据扩展。

 

第三,对象存储的吞吐性,一般来讲数据湖框架,包括 Hive 这些框架基本不太涉及这块,没有专门为云上对象存储这种场景去考虑。但是我们在设计 StarLake 的时候就知道是要专门为对象存储这种存储介质进行优化,所以我们做了专门的设计去提升对象存储吞吐。

 

第四,高并发写入,实时匡表多流并发去更新一个表,这就需要支持高频发写入,需要支持 Copy on Write、Merge on Read 这些不同的模式,每种模式下还会有进一步不同的数据分步优化去提升实时摄入的性能。

 

最后就是我们的一些分区模式,会和查询引擎去进行算子的优化联动。

 

 

image.png

 

我们要实现上面提到的我们想去做的优化目标,实际上和现有的数据湖框架架构是有一定的区别的。

 

以前的数据湖在元数据管理这就是要多版本控制,并发控制。再往下其实还是交给每个计算引擎,他们自身的实现,去读数据写数据。比如说我们要去读一个 Parquet 这样的开发文件格式,一个劣势存储,往下就是走到 Hadoop File Format 这一层抽象。再往下读写 OSS ,这是他们的设计。我们在做 StarLake 设计的时候就发现仅仅元数据这一层是不够的。我们的元数据、查询引擎、查询计划,文件的解析和对象存储这几层需要联动,我们从元数据可以下推一些信息到查询计划,查询计划进一步下推一些东西到文件的读写,最后文件的 IO 这一层直接考虑和对象存储进行预取。这四层,在 StarLake 里面全部做在一起。

 

image.png

 

首先是基本的数据存储的模型,这一块其实我们做的一个比较有特色的地方就是它支持两种分区模式,这个有点像 Hbase,我们可以同时支持 Hash 分区和 Range 分区。这两个分区可以在一个表里同时存在。不同的分区模式下数据的分布是不一样的。比如说 Hash 分区的时候每一个分片内它都是已经按分片分好了,且在文件内是有序的。这样其实它可以获得非常多的性能提升点。第二个就是我们在增量写的时候,它也是和其他数据湖比较类似,首先第一个版本就是成为基准文件 Base File,接下来增量的我们就是 Delta File ,然后去写入,通过元数据管理形成文件组的形式把它们组织在一起。这样的好处就是我在去增量写入的时候可以有一个比较高的吞吐和并发。

 

但是数据湖有两种模式,Copy on Write 和 Merge on Read,Copy on Write 它主要是低频更新,Merge on Read 相当于写快但是可能把一些数据合并的开销就推迟到读的时候做。

 

我们在这一块解决的方式是这样,我们重写了 Merge Scan 的读数据的物理计划层,它会自动去做 Base 文件和 Delta 文件这两个文件的合并,这个可能和其他的数据湖框架不太一样,他们是让计算引擎自己去做。我们其实是在文件的读取层直接做这个事情。比如分区信息,在 Hash 分片内做文件合并的时候,我们做了一个设计叫做 Merge Operator,一般来讲 Upsert 场景有可能是它需要对这个数据进行更新不仅仅是覆盖。比如一个累加池可能一直加,并不仅仅是把老数据直接覆盖掉。这样的一个场景下有个 Merge Operator 允许用户自定义,默认覆盖,也可自定义。自定义的时候就可以实现数值求和或者是字符串拼接等自定义的逻辑,能够节省非常大量的计算资源。所以 Merge Operator 它参考了数据库的实现方式。我们其实是借鉴了传统数据库分析引擎他们做的一些事情。但我们把它做在一个数据湖的框架里面。

 

image.png

有了多级分区之后,Hash 分区在这种场景下我们去做 Upsert 性能会非常快,因为我们去写入的时候,其实开销非常低,只要把 Hash 分片分好,再局部排个序直接写入就可以。它跟历史的数据是没有任何交互的,是纯增量,没有任何历史数据取出写入这样的开销,所以它会非常快。

 

我们自己测试跟 Iceberg 比,像这种行级别的更新有十倍的提升。因为非常大的性能提升,所以我们非常容易做到支持多流的并发更新。

 

第二部分是文件格式这一层去和对象存储 OSS 的访问去做联合的优化。OSS 和自建 HDFS 比较大的区别是访问延迟会相对高一点,所以它在原来的像 Hadoop FileSystem 这样的形式下去访问,通常会有比较明显的延迟。所以读数据的时候CPU利用率很低。我们想做的事情就是把读数据和计算重叠起来,不过预取做在文件系统层是不太行的,因为 Parquet 这种格式是劣势的存储,最后在分析的场景可能只读中间某几列,某一个业务查询可能就读一两列。在文件系统这一层不知道如何去 prefetch 这个信息。所以我们是做在 Parquet DataSource 里面。Parquet DataSource 里我们其实已经拿到了所有的下推条件,拿到这些信息之后去做一个并行化的 prefetch 处理。这样提升了性能而且它不会对带宽对 OSS 的访问带来额外的开销,所以在做了这样的优化之后其实在匡表读的场景是有一定提升的,这其实是E2E的测试,单独看中间读的部分是有两到三倍的提升。

 

image.png

 

接下来展开讲解我们怎么去扩展元数据。以前像 Delta Lake、Iceberg 可能就是更多的是往文件系统里面写一个文件,相当于去记录一个多版本的 Mata,遇到了冲突就去回退和重试,效率相对比较低。大家用数据湖的时候往往有一个问题,小文件多的时候性能可能会急剧下降,因为它要在 OSS 里面要把一堆的小文件用 Mata 扫出来合并,效率特别低。所以为了提升扩展性我们就干脆用一个分布式的数据库做这个事情,我们选择了 Cassandra ,它本身是分布式扩展能力非常强的数据库,数据库里面本身有一个 LWT 轻量级事务的功能,就可以用来实现高并发所需要的 ACID 事务,保证数据的一致性。Cassandra 它的维护管理还是比较容易的,因为它是去中心化数据库的设计。在云上的这种扩容其实会比较方便。

 

元数据扩展这块其实我们还要进一步去做查询计划联合优化,我们拿到分区信息,比如说有些 Range 的分区、Hash 的分区,这一类的分区其实已经对数据分布进行了提前的组织,组织的信息会下推给查询引擎这一层。比如说在 Spark 执行一个 SQL 查询的时候,会告诉它这个是同一个 Hash 分片的查询,它们天然就可以消除掉 Sort 和 Shuffle 阶段,对 Join、Intersect 这样一类场景会有非常明显的性能提升。

 

三、StarLake 业务应用案例

image.png

 

接下来阐述 StarLake 真实的一些应用场景。首先我们自己搭建了一个叫做云原生数据分析智能一体化的平台,我们给它起的名字叫做 EnginePlus 。它构建在完全云原生的架构,计算的部分完全采用容器化的方式去部署,包括所有的计算节点、计算引擎。在存储这一块是完全计算存储分离,完全通过 OSS,在上面用 StarLake 去搭建数据湖加上湖仓一体的能力。我们还集成了一些AI的组件, MindAlpha 这样的云原生的部署,整体的湖仓一体分析和AI一体的平台EnginePlus 2.0,它可以非常快速的去做部署,也能够实现非常好的弹性。

 

image.png

 

四、未来方向

  • Flink Sink
  • 更多联合查询优化
  • Auto Compaction
  • 物化视图、Cache

原文链接
本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513288.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sql语句在navicat中可以查询到所有数据但是在idea程序中不行_数据迁移测试实施方案...

点击关注,我们共同每天进步一点点!最近经历了一场大型的数据迁移测试,因为以前对数据迁移测试研究甚少,所以对测试实施方案的制定非常的棘手,在网上也查询了很多,发现相关资料很少,并且大部分都…

报告:69% 的企业表示云技术有助于他们的疫情恢复

根据 DigitalOcean 最近的报告,在疫情高峰期间云使用增加的企业中,86%的企业表示云使用量在 2021 年继续增加,这表明数字加速和云采用没有放缓迹象。随着 2022 年的临近,对于各种规模的企业来说,这场疫情仍是头等大事&…

PyFlink 教程(三):PyFlink DataStream API - state timer

简介: 介绍如何在 Python DataStream API 中使用 state & timer 功能。 一、背景 Flink 1.13 已于近期正式发布,超过 200 名贡献者参与了 Flink 1.13 的开发,提交了超过 1000 个 commits,完成了若干重要功能。其中&#xff…

长跑 11 年,腾讯开源的变与不变

作者 | 贾凯强出品 | CSDN云计算(ID:CSDNcloud)在中国,开源产业的发展就像是一个美丽的童话故事。90年代,开源如一无所有的灰姑娘,仰望着海外梦幻般的舞会,自己却很难融入其中;而世纪…

.net 批量更新_Revit二次开发——读取CAD文字实现更新模型的思路

更新模型与内地BIM项目中 设计院终版图纸一波流翻模的模式不同香港BIM项目的模式是:设计出图—BIM出碰撞报告—设计再改图—BIM再碰撞报告......反反复复....模型频繁更新 是BIM项目服务过程中不可避免的应对方法:1.晚上加班2.周末加班本文中 模型更新的…

php使用七牛直播,七牛上传文件,PHP版本

自从知道七牛以来,就一直在用七牛做图片外链,但是每次需要到七牛官网登录,然后再上传图片。感觉很麻烦,最近想做一个自己的上传到七牛的平台,开始的想法是用C#写一个windows客户端,在用swift写一个mac客户端…

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

简介: 由汽车之家实时计算平台负责人邸星星在 4 月 17 日上海站 Meetup 分享的,基于 Flink Iceberg 的湖仓一体架构实践。 内容简要: 一、数据仓库架构升级的背景 二、基于 Iceberg 的湖仓一体架构实践 三、总结与收益 四、后续规划 一、数据…

基于 Scheduled SQL 对 VPC FlowLog 实现细粒度时间窗口分析

简介: 针对VPC FlowLog的五元组和捕获窗口信息,在分析时使用不同时间窗口精度,可能得到不一样的流量特征,本文介绍一种方法将原始采集日志的时间窗口做拆分,之后重新聚合为新的日志做分析,达到更细粒度的分…

实力登场!移动云技术内核2.0 四大全新升级!

“中国数字经济占GDP比重持续增长,5G网络建设已进入规模化部署阶段。随着5G网络的发展,企业的数字化改造需求越来越旺盛。企业日益增长的数字化改造需求对云基础设施提出了新的挑战:需要支持多种类型网络接入、支持公有云、混合云、专属云等多…

obsidian使用分享

ob对比其他软件 上文提到obsidian,这里对obsidian做一个简要的总结 优点:对比notion,语雀这些软件,内容存储在应用商的服务器上。它是存在本地的。 对比思源笔记。说一下思源笔记的不足。思源是块来控制的,回车就是一…

苹果xr如何截屏_苹果手机自带的三种截屏技巧,你知道几个?现在知道还不迟...

今年苹果手机发布的新机自发布以来就受到了热烈的追捧,销量一直都处于只增不减的趋势。苹果手机为何如此之火?除了本身自带的IOS系统之外,手机自带很多小技巧,你知道不?今天就来为大家介绍苹果手机中的三种截屏小技巧&…

Scheduled SQL: SLS 大规模日志上的全局分析与调度

简介: 本文总结了大规模日志全局分析的需求,讨论SLS上现有的典型分析方案,并延伸到 SLS 原生数据处理方案,介绍 Schedueld SQL 功能与最佳实践。 大规模日志全局分析的需求 数据大规模与时效性 基于时间的数据(日志…

matlab制作以太网数据接收上位机_3D激光扫描仪设计及数据处理

本文内容转载自《电子技术应用》2019年第10期,版权归《电子技术应用》编辑部所有。段清明,王凡,徐琳琳,全文俊吉林大学仪器科学与电气工程学院摘要:利用2D激光雷达配合云台装置,设计了一种3D激光扫描仪作为…

跨平台(windows+linux)的线程辅助程序,跨平台(Windows+Linux)的Socket通讯程序(二)—结构...

上一篇"跨平台(WindowsLinux)的Socket通讯程序"给出了Socket通讯底层的一些函数的包装方法/类,同时屏蔽了操作系统(Windows/Linux)的不同。上一篇只是对通讯底层方法的封装,并没用涉及应用,这一篇将基于上一篇,并结合&q…

数据的“敏捷制造”,DataWorks一站式数据开发治理范式演进

简介: 企业大数据技术发展至今,历经了两次蜕变。第一次蜕变从最初的“小作坊”解决大数据问题,到后来企业用各类大数据技术搭建起属于自己的“大平台”,通过平台化的能力完成数据生产力的升级。 第二次蜕变让大数据从“大平台”向…

全新的 Fragment 通信方式

作者 | tech-bus.丹卿来源 | 程序员巴士前言就在前段时间,Google 推出了 Fragment Result API 和 Activity Results API,用来取代之前的 Activity 和 Fragment 之间通信方式的不足,大家可以前往看看都有哪些更新:https://medium.c…

数据传输完整性_电缆监测数据传输系统分析与设计

电缆线路是重要的输电方式,对电缆线路进行监测是保证电缆线路正常工作的重要的条件,研究人员利用嵌入式系统设计了电缆监测数据传输系统。该系统以CAN通信和嵌入式以太网络技术为核心,实现了对电缆及其沟道的实时监测、状态显示及预报警功能&…

大型企业多账号管理“安全心法”

简介: 云上多账号环境下的网络统一管理,是大型分支型企业网络安全防护的必经之路。无论是外企入华、国内企业出海,还是本土集团型企业规模化成长,云上统一网络安全管控与整体安全态势感知,都可以拉齐企业账号间安全水位…

苹果将于 2025 年推出的 Apple Car 长什么样?

整理 | 孙胜出品 | CSDN(ID:CSDNnews)据国外媒体报道,苹果公司预计将于2025年推出一款全新的自动驾驶汽车,旨在实现真正意义上的无人驾驶。报道称,基于自动驾驶的理念,苹果理想的汽车没有方向盘…

阿里云中间件首席架构师李小平:云原生实践助力企业高效创新

简介: 通过云原生技术,真正为企业带来更多的业务价值,助力企业整体的业务创新。 作者:李小平 前天我参加了信通院的云原生产业大会,在会场上非常感慨,参加会议的企业非常多,并且来自于各行各业…