万象

云原生数据湖构建分析与开发治理最佳实践

发布时间:2022/9/17 16:31:49   点击数:
数据湖技术圈

作者

郑锴,阿里云高级技术专家

张晨晖,阿里云产品专家

最近几年数据湖热度很高,当搞大数据的同学聚在一起时候,经常会谈到这方面的话题,可能有的同学说“我们在做Hudi数据湖,你们用Delta还是Iceberg?”,也会有同学说“我在阿里云上搞了一个OSS数据湖”、“什么,你们数据湖用HDFS?”、“我们在阿里云上搞JindoFS,优化数据湖”、“最近搞了个湖仓一体”等等的讨论。

数据湖的相关讨论可以说是千人千面,每一个技术同学面对数据湖的时候,根据自己不同的工作背景,都可能有自己不同的理解,那么,数据湖到底意味着什么呢?可以先了解一下数据湖的三要素。

数据湖核心三要素:

1、包罗万象的数据

不是指数据库,也不是数据仓库;

而是指各种数据,包罗万象。非结构化数据、半结构化数据和结构化数据。

2、理想的存储

HDFS?不是。

对象存储?Itdepends。

实际上,公共云对象存储才是。

为什么?海量,弹性;分层、归档,低成本;安全,合规。

3、开放的计算

数据广泛可触达,充分挖掘价值。

丰富和开放的计算,不止BI,AI。

针对计算场景的优化、加速,性能不打折扣。

那么到底什么是云原生数据湖呢?

从理念上来讲,就是按照云原生的理念构建出来的数据湖存储系统。运用数据湖构建产品快速搭建出来的,基于oss对象存储系统挖出来的数据湖。然后基于这样的诉求,我们可以做BI和AI的分析。那么我们以阿里云上的云原生数据湖为例,可以看下云原生数据湖的上云途径。

(点击查看大图)

可以看到,我们可以利用阿里云数据湖构建DataLakeFormation、统一的对象存储OSS快速搭建出一个数据湖。

那么利用这个数据湖,我们可以用数据集成DateHub和DataLakeFormation提供的数据入湖的手段,把各种数据源做数据入湖的处理。那么我们最主要的业务目的是什么?是利用上面各种开放丰富的计算来做分析。

我们提供了阿里云自研的MaxCompute这种分析产品,还有E-MapReduce这个开源大数据全家桶的分析产品,来做BI的分析。我们可以利用阿里云的PAI、EMRDateScience这种AI的套件来做AI的智能分析。

我们刚才说了这个计算是非常开放以及丰富的,如果你在阿里云上有一个自建的Hadoop,或是CDH这种集群,同样可以对接到数据湖,然后进行分析。战略上面我们还合作了大量的第三方产品,比如Databricks数据洞察,同样可以对接到数据湖进行分析。

接下来,我们再来看一下数据湖的构建和分析的过程,我们提供了怎样的支持。以下讲的是数据湖构建,我们专门提供了这样的一个数据湖构建产品DataLakeFormation。

(点击查看大图)

它的核心就是维护数据湖的元数据,数据湖不光是包括数据本身,还包括数据的元数据。数据的元数据是在DataLakeFormation中,统一管理和存储的。好处是避免了各个计算产品自己来维护文件的元数据所带来的不一致性。统一集中来管理的话,我们还可以做集中的访问控制上的权限或日志审计。DataLakeFormation对接的各种数据源,比如MySQL、Kafka等,提供了离线和实时入湖的方式。目前我们对接的数据湖的格式,有Delta和Hudi。

接下来重点讲解一下,我们在分析产品上,利用开源大数据分析的套件E-MapReduce来做数据湖分析。

(点击查看大图)

EMR其实是一个开源大数据全家桶的产品,以上只是列出了数据湖分析上的相关支持。在分析引擎和OSS数据湖之间,我们还提供了数据湖加速的支持。我们有了Alluxio这种开源的加速器,同时也有自研的JindoFS加速器。JindoFS对OSS数据湖我们提供了全面对接开源分析引擎的支持。

整个EMR的产品可以run在ACK上,也可以run在ECS上面,利用ECS和ACK的弹性伸缩的能力,我们让整个数据湖分析变得低成本。

(点击查看大图)

刚才提到,在EMR产品套件中,有了数据湖加速的这一层次,接下来重点讲一下JindoFS和JindoTable双加速的能力。

JindoFS主要是在文件系统层面,利用计算侧的磁盘资源,对远端的OSS数据做缓存加速,从而大幅度提升Hive、Spark、Presto的分析处理能力。JindoTable和JindoFS相当于是相互配合,它主要是在表分区这个层次上面,去做缓存去做加速。然后对Parquet、ORC这种格式做了Native的优化,从而更进一步提升了上面提到的分析引擎的处理能力。

(点击查看大图)

除了性能优化,我们知道数据湖还需要做成本优化,因为里面保存了大量的数据。JindoTable和JindoFS同样互相配合,我们做了分层和归档。利用OSS的基础能力,我们维护数据的热度、冷度,然后通过Jindo的相关命令,可以对数据进行缓存、归档和分层这些功能。利用分层的能力,我们可以看到假定一个用户,如果它有10PB的数据,以HDFS这种方式来做存储方案,成本会达到上百万。但如果我们换用OSS数据湖的方案,我们可以把大量的冷数据放在归档,整个存储成本可以大幅度降低。

接下来,我们来看一个数据湖的最佳实践。来源于上海数禾科技的大数据架构师程俊杰先生的一篇在阿里云社区分享的案例文章。以下经过他的同意,对他的文章进行了一些摘要和加工。

(点击查看大图)

上海数禾科技在某云上面使用的是CDH+EMR,云上混合的架构。它迁移到阿里云之后,是按照数据湖的理念做的设计,充分考虑到他们不同的业务需求,以及权限控制和脱敏相关的部分。

经过过去的一年,他们在成功地迁移到阿里云数据湖架构上之后,又做了EMR的治理和OSS的治理,这些治理方面的经验在文章里面都做了大量的分享。最近他们又升级到了湖仓一体的架构,把元数据用DataLakeFormation来统一管理,然后组合使用EMR和MaxCompute等多个阿里云计算产品来对数据湖进行分析。

《数禾云上数据湖最佳实践》文章链接:



转载请注明:http://www.mabulili.com/wxjc/25819.html

------分隔线----------------------------