云原生数据湖构建、管理与分析—宋军

本文涉及的产品
对象存储 OSS,20GB 3个月
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
对象存储 OSS,恶意文件检测 1000次 1年
简介: 内容简要:一、数据湖介绍二、数据湖架构与技术探索三、阿里云云原生数据湖实践

内容简要:

一、数据湖介绍

二、数据湖架构与技术探索

三、阿里云云原生数据湖实践

 

 

一、数据湖介绍

(一)什么是数据湖?

数字化趋势许多企业通过利用数据的价值达到业务上的提升,数据量爆炸性增长使得源头越来越丰富,例如数据库数据、APP日志服务器日志LT数据。

在这背景下,需要更好的数据架构支撑,能够更灵活的支撑上层各种各样场景分析,与数据库相关的有:

HDFS/OSS/S3数据存储类组件

阿里云OSS对象存储

Delta Lake数据库格式

Hudi/Iceberg数据库组件;

湖仓一体的DataWarehouse/LakeHouse

 

什么是数据湖?

如下图所示:

image.png


中间存储底层数据通过实时离线的方式进入数据库,上层在数据库做分析学习,这是比较简单的Pipeline

 

阿里云数据库云上流程如下图所示:

image.png

数据流入有许多产品支持,主要围绕OSS对象存储数据流入后,支持数据分析和服务,包括对流入的数据做数据治理安全权限。

image.png

上图为Delta Lake网站上数据湖的一种场景。

通过流式或者批式的方式导入到数据上,数据底层的存储如HDFSS3Azure Data Lake Storage对象存储,上层数据库格式提供更丰富的场景支撑能力。

image.png

上图为另外一个数据库格式下Hudi网站上一个Pipeline。它有很多数据源,通过Hudi的工具,将数据写到Hudi格式里面。 Hudi格式底层是一些分布式存储或者对象存储还有Alluxio加速。

 

目前数据湖的定义存在些许差别

Wikipedia数据的定义是原始数据的存储,支持后续分析学习,存储结构化数据和非结构化数据,可以构建线下的机房里面也可以在云上构建数据库。

AWS数据的定义是一个中心化的存储,存储结构化数据和非结构化数据,可以做各种各样的分析

微软数据的定义是提供许多相关的产品工具,让开发者或者数据科学家能够存储各种各样的数据类型,提供各种各样分析的能力或平台。

概括来说,数据库是:

·一个中心化的存储,接入不同数据源,可以存储半结构化、结构化和非结构化的数据。

·存储偏原始的数据,可以支撑上层各种各样的分析。

Keywords:

·Centralized repository

·Streaming&batch ingest

·Semi-structured/unstructured/structured

·Data as-is/raw data

·Support different types of analytics.

image.png


数据偏原始的数据,数据入库的时候不需要做建模,数据仓库需要提前做各种建模,管理与定义Schema,然后数据才能进来。数据湖是数据先进来,分析的时候抓取Schema,再去做分析。数据仓库是结构化的数据

数据类型比较丰富是开放的存储上层可以对接分析引擎,例如可以机器学习查询,或者在数据基础上构建一个数仓。数据湖较为开放灵活。对比之下,数据仓库较为封闭存储引擎一体,存储在引擎下面,做优化时需要结合引擎。

数据仓库导入过程会对文件做优化或索引,数据质量Schema保证上层的数据治理权限较为完善数据灵活开放,在数据治理安全上有隐患,导入时可能存在小文件的问题。

现在数据仓库向湖仓一体方向发展,结合数据的灵活性和开放性,以及数据仓库数据治理安全,导入的数据质量,整套的体系较为完善。

数据体系里面,各自有不同的位置,HDFS/OSS/S3是数据存储Delta Lake/Hudi/Iceberg数据库格式DataWarehouse/LakeHouse数据湖上层应用场景

 

(二)为什么要用数据湖

企业做数字化转型,需要从不同的角度与地点采集数据,将爆炸性增长的数据挖掘与利用

image.png

数据源数据类型越来越多,LT相关的数据,业务数据库相关的数据等数据湖暂时无规划的数据,等有需要的时候再将数据做分析处理,导入到数据仓里做后续查询。数据湖有非常灵活的特性,能够支撑上层分析场景,丰富的数据可以用于支持后续的分析与架构。

 

(三)数据湖问题与挑战

根据公开媒体报道,数据湖建设失败的案例不在少数。

image.png

不经考虑、未加管理、毫无条理的数据存储不能给数据分析带来任何帮助,如果缺少必要的数据管理、元数据获取、质量管理、安全管理能力和过程,或是未能正确围绕一个业务中心正确开展,数据湖终将变成无用的数据沼泽。

image.png

基于上图的结构,分析数据湖在实践中会遇到哪些问题

Ø  数据摄入(入湖)

·数据源太多,入湖开发成本高;

·数据质量无法保障(脏数据、重复数据、Schema缺少……);

·要求实时入湖做分析时,中间数据可能分出现问题。

Ø  数据存储

·数据量增长,需要考虑成本、扩展性、性能的问题。

Ø  数据管理分析

·缺乏元数据管理、发现,分析困难;

·性能与安全上没有保障。

 

 

二、数据湖架构与技术探索

(一)数据库架构

image.png

如上图所示,数据库架构Pipeline分为很多层

原始是数据源,其次是摄入层,指数据入湖包括实时与成批的导入第三层是存储支撑后续不同场景的计算。接着是应用层横向向后是数据治理,包括运维的数据质量等。在这个架构下,能够更好的挖掘数据库的数据价值,并发挥出其价值

 

(二)数据摄/

image.png

数据摄(入湖)需要解决的问题,总结如下:

Ø  数据源很多,同步/ETL开发成本

Ø  如何避免数据沼泽,提高数据质量/可用性

Ø  提供数据更新订正能力,Schema演化;

Ø  如何保证链路上的Exactly Once

Ø  实时入湖读写如何隔离,防止脏读

 

如何去解决数据摄()的问题,下面以某个产品为例:

image.png

对于解决数据源很多,同步/ETL开发成本的问题,整体上通过拖拽或者配置的方式,拖拽数据源进行配置,构建Pipeline。或者通过常用数据源/ETL算子进行配置的方式构建Pipeline。定义ETL算子在相关场景下是可以复用的,通过数据源把它抽象到产品中。对于典型的实时数仓(数据库Binlog同步),链路上还是有很多工作

数据摄入/入湖还需要解决以下几个问题:

1)避免数据沼泽,提高数据质量/可用性

2)提供数据更新订正能力, Schema演化;

3)如何保证链路上的Exactly Once

4)实时湖读写如何隔离,防止脏读。

 

数据湖整体功能趋向统一,DELTA LAKE提供数据更新订正能,Scheme演化能力。但是它们各有所长Hudi比较擅长Upset场景ICEBERG偏向于索引与性能。

 

DELTA LAKE如何解决Update&Delete&Merge等相关问题?

如下图所示:

image.png

底层数据是Parquet格式,可以管理源数据,中间是MetadataManagement上面支持Transactions

基于这三层,数据可以通过Streaming实时写入Delta Lake,后续可以用Presto或者Spark实时查询。

这种方式有隔离的特性支撑,相当于Update&Delete&Merge、演化Schema和查询Time Travel历史上某个时间点数据的能力。

 

(三)数据存储

数据量很大需要考虑成本包括运维成本)、扩展性能,选择不同的存储方式有不同的特点。

HDFS

1)集群规模瓶颈;

2NameNode压力;

3)规划集群复杂;

4)运维难度大;

5)成本高;

6)性能高。

 

对象存储OSS/Amazon S3

1)按需计费,无限扩容;

2)存算分离,规划简单;

3)运维简单;

4)性能需优化(带宽/元数据操作)

 

(四)数据湖分析

数据湖如何支撑上层的多场景多引擎高性能挖掘数据价值。

总结如下:

Ø  统一元数据管理/发现;

Ø  引擎深度优化;

Ø  多种接口多语言访问支持(posix/filesystem/c++/java/…)

Ø  企业级安全(认证/权限/)

image.png


三、阿里云原生数据湖实践

image.png

如上图所示,阿里云云原生数据湖架构由多个部分组成。

首先数据源里有日志数据数据库数据数据源通过数据库构建产品,管理数据库的语言数据访问控制表或列权限,提供入湖解决方案,包括数据湖元数据、访问控制、入湖工具,构建入湖的Pipeline。

数据湖存储是围绕对象存储OSS,支持Delta LakeHudiIceberg数据库格式,能够解决数据标准、低频、归档等数据上面的问题。

在这个基础上,为了支撑上层的引擎分析、数据挖掘,提供了JindoFSJindoFS能够大数据体系结合起来的中间层。能够封装的标准的API,使上层的Spark、Presto能够对接上OSS数据。

再往上是云原生计算引擎EMS基本上都是开源的组件。最上层为数据开发治理,用户做数据开发治理的平台

 

(五)数据湖构建/DLF

数据库构建(DLF)主要功能是横向的基础设施,解决数据库的管理。

功能包括:

Ø  数据入湖

支持多种数据源一键入湖模板;

支持Delta/Hudi/Parqute等格式

支持实时入湖(CDC\KAFKA\SLS\…)

 

Ø  数据服务

兼容开源生态API

自动爬取Schema

多引擎对接(Spark/Hive/MC/Holo/…)。

 

Ø  权限管理

支持表/列权限控制

支持OSS权限托管。

 

下面是数据入湖内核上做的工作。

image.png

从架构来看,底层是Delta LakeOSSHudiHDFS,上面是SparkPresto引擎。Delta/Hudi做了性能优化和功能的增强,如自动的小文件合并SparkSQLSpark Streaming SQL深度集成,让用户能够用SQL的方式写Pipeline,降低开发门槛查询引擎优化OSS Rename原子性

image.png

如上图所示,Spark Streaming SQL是官方文档,可以像写离线SQL那样去写流失的作业的这种SQL,功能包括动态分区表

 

(六)数据湖存储/JindoFS

JindoFS在OSS和引擎之间把大数据串起来的一个组件,它同时做了性能优化。

阿里云OSS SDK 是对象存储接口,本身并不能直接用于 Hadoop/Spark

• 类似于 AWS 的 EMRFS,Hadoop 社区的 S3A FS

• 对 OSS 访问支持 RAM/AK 免密,支持 Credentials Provider

• 和 Hadoop 社区版本相比

o 核代码Native 优化,各种基本操作大幅性能提升(> 60%)

o 大目录Listing操作,快1X

o 大目录Rename操作,快3X

o 支持无需Rename的Job Committer

• 提供Cache模式/Block模式

• 提供 POSIX/FUSE 支持

• 提供 TensorFlow FileSystem Connector

• 提供 Python SDK

• 在大文件/小文件训练数据测试上,具有显著性能优势

支持多种选项:默认缓存、元数据缓存和数据缓存

• 针对训练材料Batch大文件大量小文件分别优化

支持命令式预加载、周期性自动加载到缓存,加速后续训练

支持转储加载结构化半结构化数据到缓存,加速后续训练

image.png

(七)数据湖分析

数据湖分析主要是DLF统一元数据/权限,做中间横向的基础设施,打通数据库的数据上层引擎。

image.png

相关实践学习
数据湖构建DLF快速入门
本教程通过使⽤数据湖构建DLF产品对于淘宝用户行为样例数据的分析,介绍数据湖构建DLF产品的数据发现和数据探索功能。
相关文章
|
4月前
|
Cloud Native 数据处理 云计算
探索云原生技术在大数据分析中的应用
随着云计算技术的不断发展,云原生架构作为一种全新的软件开发和部署模式,正逐渐引起企业的广泛关注。本文将探讨云原生技术在大数据分析领域的应用,介绍其优势与挑战,并探讨如何利用云原生技术提升大数据分析的效率和可靠性。
|
1月前
|
数据采集 存储 分布式计算
构建智能数据湖:DataWorks助力企业实现数据驱动转型
【8月更文第25天】本文将详细介绍如何利用阿里巴巴云的DataWorks平台构建一个智能、灵活、可扩展的数据湖存储体系,以帮助企业实现数据驱动的业务转型。我们将通过具体的案例和技术实践来展示DataWorks如何集成各种数据源,并通过数据湖进行高级分析和挖掘,最终基于数据洞察驱动业务增长和创新。
173 53
|
2月前
|
存储 搜索推荐 数据建模
阿里巴巴大数据实践之数据建模:构建企业级数据湖
阿里巴巴通过构建高效的数据湖和实施先进的数据建模策略,实现了数据驱动的业务增长。这些实践不仅提升了内部运营效率,也为客户提供了更好的服务体验。随着数据量的不断增长和技术的不断创新,阿里巴巴将持续优化其数据建模方法,以适应未来的变化和发展。
|
2月前
|
Cloud Native Devops 数据库
云原生架构:未来软件开发的引擎深入理解操作系统的虚拟内存管理
【7月更文挑战第30天】在这篇文章中,我们将深入探讨云原生架构的概念,以及它如何改变软件开发的世界。我们将从云原生的基本概念开始,然后深入到它的关键技术和实践,最后讨论它对软件开发的未来影响。无论你是软件开发者,还是IT专业人士,这篇文章都将为你提供深入理解和掌握云原生架构的重要信息。 【7月更文挑战第30天】在数字世界的构建中,虚拟内存是操作系统不可或缺的一环。本文将探索虚拟内存的核心概念、工作机制及其对现代计算环境的重要性,同时揭示其背后的技术细节和面临的挑战。
33 3
|
4月前
|
敏捷开发 Kubernetes Cloud Native
【阿里云云原生专栏】跨云部署与管理:阿里云云原生技术的多云策略
【5月更文挑战第25天】阿里云云原生技术提供多云策略,助力企业高效跨云部署与管理。通过容器化(如Kubernetes)、服务网格等,实现应用一致性与可移植性;统一资源管理,简化跨云操作。挑战包括数据同步、网络问题和平台差异,但阿里云的解决方案为企业在多云环境中实现资源优化、业务敏捷和系统可靠性提供了强有力支持。随着云计算发展,阿里云将持续演进其多云策略,为企业数字化转型提供保障。
174 1
|
4月前
|
监控 Cloud Native 安全
【阿里云云原生专栏】云原生下的API管理:阿里云API Gateway的应用场景与优势
【5月更文挑战第23天】阿里云API Gateway是高性能的API托管服务,适用于微服务API聚合、安全管理及流量控制。它提供统一入口、多种认证方式和流量控制策略,确保服务稳定性。具备高度可扩展性、丰富插件生态和简化API生命周期管理等特点。通过简单步骤,如创建API、配置后端服务、设置认证和发布,即可快速上手。作为云原生时代的API管理解决方案,阿里云API Gateway助力企业高效、安全地管理API,推动业务创新和数字化转型。
87 1
|
3月前
|
运维 Cloud Native 云计算
云原生技术在企业级应用中的应用与前景分析
随着云计算技术的快速发展,云原生技术作为一种优秀的应用架构模式,正在逐渐受到企业和开发者的关注。本文通过分析云原生技术在企业级应用中的应用情况和未来发展前景,探讨了其在加速企业数字化转型、提升应用性能和灵活性等方面的优势,以及面临的挑战和解决方案。
56 0
|
4月前
|
存储 运维 监控
探索云原生技术在大数据分析领域的应用
传统的大数据分析往往需要庞大的硬件设施和复杂的维护工作,给企业带来了昂贵的成本和管理难题。而随着云原生技术的发展,越来越多的企业开始将大数据分析迁移到云平台上,以享受弹性、灵活性和低成本的优势。本文将探讨云原生技术在大数据分析领域的应用,介绍其优势和挑战,并展望未来的发展方向。
69 0
|
4月前
|
存储 分布式计算 DataWorks
【阿里云云原生专栏】云原生下的数据湖建设:阿里云MaxCompute与DataWorks解决方案
【5月更文挑战第26天】在数字化时代,数据成为企业创新的关键。阿里云MaxCompute和DataWorks提供了一种构建高效、可扩展数据湖的解决方案。数据湖允许存储和分析大量多格式数据,具备高灵活性和扩展性。MaxCompute是PB级数据仓库服务,擅长结构化数据处理;DataWorks则是一站式大数据协同平台,支持数据集成、ETL和治理。通过DataWorks收集数据,MaxCompute存储和处理,企业可以实现高效的数据分析和挖掘,从而提升业务洞察和竞争力。
428 0
|
4月前
|
关系型数据库 分布式数据库 数据库
【阿里云云原生专栏】云原生时代的数据库选型:阿里云RDS与PolarDB对比分析
【5月更文挑战第24天】阿里云提供RDS和PolarDB两种数据库服务。RDS是高性能的在线关系型数据库,支持MySQL等引擎,适合中小规模需求;而PolarDB是分布式数据库,具备高扩展性和性能,适用于大规模数据和高并发场景。RDS与PolarDB在架构、性能、弹性伸缩、成本等方面存在差异,开发者应根据具体需求选择。示例代码展示了如何通过CLI创建RDS和PolarDB实例。
765 0