基于阿里云数据湖分析服务和Apache Hudi构建云上实时数据湖

简介: 传统大数据架构难以对应企业日益增长的各式各样分析需求,而随着云技术的不断发展和普及,在云上构建实时数据湖成为构建企业级大数据平台的热门选项,本文将阐述如何基于阿里云数据湖分析服务和Apache Hudi构建云上实时数据湖。

1. 什么是实时数据湖

大数据时代数据格式的多样化,如结构化数据、半结构化数据、非结构化数据,传统数据仓库难以满足各类数据的存储,同时传统数仓已经难以满足上层应用如交互式分析、流式分析、ML等的多样化需求。而数仓T+1的数据延迟导致分析延迟较大,不利于企业及时洞察数据价值;同时随着云计算技术发展以及云上对象存储的廉价性,使得越来越多企业基于云来构建数据湖,而传统数据湖由于缺失ACID事务能力,导致其上构建的表不支持事务,同时也无法处理数据的更新删除,数据湖能力未得到进一步释放。为企业更快洞见数据价值和补齐ACID事务等能力,需要引入实时数据湖,以此作为大数据处理架构来对应上层应用各类分析需求。

2. 大数据平台方案

2.1 传统Hadoop方案

大数据时代以Hadoop体系为首的大数据分析平台逐渐表现出优异性,而围绕Hadoop体系的生态圈也不断完善,Hadoop体系从根本上解决了传统数据仓库的瓶颈问题。
undefined

传统批处理带来的延迟较大,并且随数据规模增长,通常会遇到如下问题。

  • HDFS限制:许多依赖 HDFS 扩展其大数据基础架构的公司都面临着这个问题。根据设计,HDFS 受 NameNode 内存容量的限制,因此存储大量小文件会显着影响性能。当数据大小超过10PB这个问题开始出现,如果数据量达到50-100 PB就会成为问题。 幸运的是,有一些相对简单的解决方案可以将 HDFS 从几十PB扩展到几百PB,例如利用 ViewFS 和 HDFS NameNode Federation;或通过控制小文件的数量并将不同的数据移到单独的集群,这样我们能够减轻 HDFS 的瓶颈。
  • 快速更新:对于很多用例而言,需要尽可能地访问新数据,而传统数仓T+1的更新延迟太大,无法满足对数据实时性要求很高的场景,同时由于数据延迟太大,无法利于企业做出及时决策。
  • 支持在 Hadoop上 更新和删除:大数据下的分布式存储强调数据的只读性质,所以类似于Hive,HDFS这些存储方式都不支持update,HDFS的write操作也不支持并行,这些特性导致其具有一定的局限性,无法支持对现有数据的更新和删除操作。为应对平台数据规模增长,必须找到一种方法来解决 HDFS 文件系统中的这种限制,以便支持更新/删除操作。

2.2 Lambda方案

对于批处理而言,虽然数据质量高,但其延迟太大。考虑到数据延迟问题,业界还有一种比较流行的架构,Lambda架构,兼具低延迟与稳定。

undefined

Lambda架构中,一份数据会分别进入速度层进行流式处理生成实时的增量视图和进入批处理层进行批量处理生成稳定可靠的历史视图,在上层查询时会合并增量视图和历史视图形成完整视图返回,这样便兼顾了数据的低延迟,但同时可以看到该架构需要维护两份数据、两份结果存储和多个处理框架,加重了系统维护负担。

能否兼顾系统的可运维性和数据低延迟以及规避上述在传统HDFS上方案的弊端来构建一个可伸缩的实时数据湖呢?答案是肯定的,可以基于阿里云DLA(Data Lake Analytics 数据湖分析) + Apache Hudi构建实时数据湖。

3. 阿里云实时数据湖方案

使用DLA + Hudi技术方案可轻松在阿里云OSS上构建实时可分析的数据湖。

企业典型的数据链路如下。

  • 各类App数据采集到Kafka或其他MQ;
  • 对Kafka中数据使用Spark/Flink等引擎进行处理;
  • 将处理结果写出(DB、HDFS、OSS等);
  • 通过分析引擎(Presto/Hive/Spark)对结果分析生成报表等;

现在DLA已经内置集成Hudi,与此同时利用DLA内置Spark开箱即用的能力,用户便可在DLA中快速构建Hudi数据湖,架构如下所示。

undefined

用户通过DLA SparkStreaming消费上游数据,然后以Hudi增量格式写入OSS并自动同步元数据至DLA Meta;当然对于用户自建Spark集群方式也可支持,也只需要将上游数据以Hudi格式写入OSS并自动关联至DLA Meta即可,接着便可以使用DLA-SQL进行在线交互式分析或使用DLA-Spark进行机器学习和离线分析。两种方案都极大降低了用户使用DLA的门槛,也体现了DLA极致的开放能力,基于DLA和Hudi构建实时数据湖总结有如下优势

  • 全链路数据延迟可达分钟级别,打造T + 0 数据湖;
  • 支持数据增量存储在OSS,支持Upsert/Delete,同时自动构建元数据管理;
  • 丰富的数据源,支持阿里云上超过95%数据源;
  • 支持全托管的SQL & Spark,免去集群运维;
  • 弹性Serverless SQL/Spark,满足交互式、批处理、机器学习多种工作负载;
  • 一份数据存储在OSS,通过DLA Meta增量管理,降低存储成本低;
  • 支持多租户及按照扫描量计费,能有效管理多分析师的查询需求和SQL使用量;

下面简单介绍下什么是DLA和Apache Hudi。

3.1. 什么是DLA

阿里云数据湖分析Data Lake Analytics是阿里云数据库自研的核心产品,是新一代CloudNative分析平台;开放计算,支持MySQL协议,支持Presto、Spark引擎;主打低成本、Serverless无托管成本;统一元数据、可以让用户拥有统一的数据视图。目前在阿里云服务数千客户。
更多详情可参考:https://www.aliyun.com/product/datalakeanalytics

2.png

DLA的Serverless能力免去了企业高昂的运维成本及应对数据波峰波谷扩缩容等繁琐步骤,按量计费,无持有成本。同时DLA没有单独存储用户数据,用户数据以开放的格式存储在OSS中,然后只需将元数据关联到DLA Meta后便可使用DLA SQL进行分析,或者通过DLA Spark进行复杂的ETL操作。

3.2 什么是Apache Hudi

Apache Hudi是一个支持插入、更新、删除的增量数据湖处理框架,可以用来管理分布式文件系统(如HDFS)/云上(OSS、S3)超大规模数据集。Hudi提供了如下关键特性

  • 可插拔索引机制支持快速Upsert/Delete
  • 支持增量拉取表变更以进行处理
  • 支持时间旅行,查看旧版本数据
  • 支持ACID,事务提交及回滚
  • 自动管理小文件以优化查询性能
  • 基于行存的快速写入,并支持异步压缩为列存便于分析
  • 用于进行审计跟踪的元数据时间轴

更多详情可参考https://hudi.apache.org/

4. Demo示例

可参考实时数据湖快速入门 了解如何使用DLA和Hudi构建实时数据湖示例。

5. 总结

本篇文章首先介绍了什么是数据湖,以及常见的大数据解决方案,然后介绍了阿里云实时数据湖方案,使用DLA + Hudi方案快速构建近实时可分析数据湖,并列举方案优势,最后提供了简单Demo示例展示如何集成DLA和Hudi。

感兴趣的小伙伴欢迎入钉钉群交流

undefined

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
1月前
|
缓存 安全 Java
阿里云数据库 SelectDB 内核 Apache Doris 2.0.6 版本正式发布
阿里云数据库 SelectDB 内核 Apache Doris 2.0.6 版本正式发布
|
1月前
|
存储 Apache
Apache Hudi Savepoint实现分析
Apache Hudi Savepoint实现分析
34 0
|
1月前
|
Apache
Apache Hudi Rollback实现分析
Apache Hudi Rollback实现分析
25 0
|
1月前
|
存储 SQL 数据管理
阿里云数据库 SelectDB 内核 Apache Doris 如何基于自增列满足高效字典编码等典型场景需求|Deep Dive 系列
自增列的实现,使得 Apache Doris 可以在处理大规模时展示出更高的稳定性和可靠性。通过自增列,用户能够高效进行字典编码,显著提升了字符串精确去重以及查询的性能。使用自增列作为主键来存储明细数据,可以完美的解决明细数据更新的问题。同时,基于自增列,用户可以实现高效的分页机制,轻松应对深分页场景,有效过滤掉大量非必需数据,从而减轻数据库的负载压力,为用户带来了更加流畅和高效的数据处理体验。
|
1月前
|
SQL 数据可视化 Apache
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
阿里云数据库 SelectDB 内核 Doris 的 SQL 方言转换工具, Doris SQL Convertor 致力于提供高效、稳定的 SQL 迁移解决方案,满足用户多样化的业务需求。兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移。
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
|
1月前
|
存储 SQL 分布式计算
使用Amazon EMR和Apache Hudi在S3上插入,更新,删除数据
使用Amazon EMR和Apache Hudi在S3上插入,更新,删除数据
116 0
|
1月前
|
存储 分布式计算 Hadoop
一文了解Apache Hudi架构、工具和最佳实践
一文了解Apache Hudi架构、工具和最佳实践
103 0
|
1月前
|
SQL 分布式计算 NoSQL
使用Apache Hudi和Debezium构建健壮的CDC管道
使用Apache Hudi和Debezium构建健壮的CDC管道
17 0
|
1月前
|
存储 SQL 消息中间件
Apache Hudi:统一批和近实时分析的存储和服务
Apache Hudi:统一批和近实时分析的存储和服务
32 0
|
1月前
|
SQL 分布式计算 数据处理
Uber基于Apache Hudi增量 ETL 构建大规模数据湖
Uber基于Apache Hudi增量 ETL 构建大规模数据湖
52 2

热门文章

最新文章

推荐镜像

更多