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

1. 什么是实时数据湖

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

2. 大数据平台方案

2.1 传统Hadoop方案

大数据时代以Hadoop体系为首的大数据分析平台逐渐表现出优异性,而围绕Hadoop体系的生态圈也不断完善,Hadoop体系从根本上解决了传统数据仓库的瓶颈问题。
基于阿里云数据湖分析服务和Apache Hudi构建云上实时数据湖

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

  • 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架构,兼具低延迟与稳定。

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

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数据湖,架构如下所示。

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

用户通过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

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

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。

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

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

上一篇:DLA-Presto二月更新


下一篇:阿里云数据湖分析-控制台支持SQL的停止操作