基于EMR的新一代数据湖存储加速技术详解

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 本文整理自阿里云开源大数据平台数据湖存储团队孙大鹏在7月17日阿里云数据湖技术专场交流会的分享。


摘要:本文整理自阿里云开源大数据平台数据湖存储团队孙大鹏在7月17日阿里云数据湖技术专场交流会的分享。本篇内容主要分为两个部分:


  1. 背景介绍
  2. JindoData 数据湖存储解决方案


点击查看直播回放


背景介绍

image.png


大数据行业蓬勃发展,主要源自于通讯技术的发展,全球数据规模,预计2025年将增长到163ZB,相当于全球60亿人,平均每人27TB数据。数据量爆发式增长,使得企业拥有了更多数据资源。更多数据意味着需要更大的存储。此外,数据本身极具价值,因此要挖掘数据价值并进行充分利用,以此反向推动业务的发展和改造。


幻灯片5.PNG

大数据技术的发展趋势是云化、轻量化、服务化。数据湖、与云融合、实时计算已经成为大数据领域的关键词。存算分离概念在云计算早期已被提出。存储与计算耦合的自建平台会造成额外成本,且受限于本地网络带宽。有了云计算以后,网络带宽得到了很大缓解。可以按量收费,提供服务化、容器化的能力,更好地做运维开发。


业界存储架构演进


幻灯片6.PNG

早期的大数据基于 HDFS 构建数仓。 HDFS 是非常好的分布式存储选型,单集群可稳定支撑到 4-6 亿文件规模,数据量可达 100 PB 。但是 HDFS 运维成本比较高,存储作为基础组件,一旦存储出现问题,则意味着整个业务被中断。此外,达到4-6亿文件规模,100PB数据量后,再进行扩展则会出现问题。


因此,社区提出了 HDFS Federation 方案。将 HDFS 集群进行扩展,并将业务进行拆分,大业务可以独立使用一组 NameNode,可突破单组 NameNode JVM 的限制,实现了HDFS 元数据和容量的横向扩展。此外,社区开发了 NS Router 组件,帮助更好地使用 HDFS 元数据。


随着 HDFS 的扩展,其运维成本也成倍增加。业界开始选择利用对象存储的高可用、高吞吐,基于云上对象存储构建数据湖。每个云厂商都会从设计到运维上投入大量人力、物力保证对象存储可靠、稳定、高效。


从存算一体到云原生数据湖

幻灯片7.PNG

开源大数据平台经历了几次大的演进。


第一代开源大数据平台EMR,为更好地将 Hadoop 搬到云上提供了基础运维。在线下使用物理机,在云上使用 ECS 本地盘机型,即可实现与物理机近似的存储能力和成本。其特点为将线下 IDC 集群搬上云,可以通过云简化集群部署和扩容,但不解决 HDFS 的上线、运维等问题。


第二代开源大数据平台EMR 将 OSS 和 S3 对象存储作为 storage connector 引入集群。当存储集群达到一定规模后,温数据、冷数据可以转存到 OSS 或 S3 对象存储,进一步降低存储成本。


第三代开源大数据平台的特点为本地集群基本不保留任何元数据,而是保留在云上。DLF使用 Table 替代了 Hive Metastore 元数据方案,表的元数据通过云服务托管,利用 OSS 做存储,使集群基本实现无状态。因此,用户只需创建好集群即可使用资源,体验极佳。且可以对接更多存储引擎,互相之间能够实现隔离,比如离线、在线可以利用云上元数据和存储实现集群分离。


数据湖存储演进之路

幻灯片8.PNG

数据湖存储的演进主要也分为三个阶段:

  • 数据湖1.0:存算分离架构,冷热分层,以Hadoop生态为主。
  • 数据湖2.0:以对象存储为中心,统一存储承载生产业务、大规模、高性能。
  • 数据湖3.0:以对象存储为中心,构建企业数据湖全兼容、多协议、统一元数据。


JindoData 数据湖存储解决方案

幻灯片9.PNG

经过不断演化,最终实现了 JindoData 数据湖存储解决方案。JindoData 是存储加速项目。JindoFS 存储系统构建在 OSS 之上,提供了文件元数据功能和目录功能,可以和 NameNode 进行比对,解决了对象存储在模拟文件系统时的操作比如 rename 等问题。Jindo FSx 是存储加速系统,负责解决带宽问题。客户端或计算集群侧有存储资源,如果都通过网络,则延时、效率与 HDFS 存在差距,经过不断地放大后,用户会逐渐感受到性能差距。因此需要 Jindo FSx 存储加速系统来解决带宽和延时问题。


基于以上两大核心系统,我们对上层提供了 HDFS API 和 POSIX API ,两个 API 基本可以满足大数据平台上对存储的使用需求,Flink 、Hadoop 、Spark 等大数据相关组件可以直接通过相关 API 方便地接入。比如当前新兴的 AI 训练可以将中间结果、TFRecord等通过 POSIX API 存到对象存储系统里。


JindoSDK 生态工具解决了和生态对接问题,比如与计算对接、本地 POSIX 挂载。JindoDistCP 解决从 OSS 和 HDFS 之间的数据迁移,JindoTable 能够以表粒度做迁移,JindoShell 能够帮助我们更好地使用对象存储。


底层数据源可以对接 HDFS、对象存储、NAS以及阿里云OSS。

幻灯片10.PNG


JindoSDK:超级数据湖SDK

幻灯片12.PNG

JindoSDK 是对接生态的重要 SDK,上层可以对接各种引擎,下层对接各种存储。通常,很多组件和存储都是基于烟囱式开发,导致 SDK 能力规格存在很大偏差。因此我们重点打造了 Native Core 层,使用 C++ 语言开发,对上层抽象出了 ObjectStore API 、DataStream API 和 FileSystem API。 通过 Cython 对接 Python SDK, 通过 JNI 对接 Hadoop SDK,通过 C SDK 对接 Jindo Fuse,使上层所有计算引擎都可以使用相同的一套原生 SDK。因此,SDK 层面改进后,上层全链路都可以享受 SDK 改进带来的收益,比如文件系统元数据操作优化、IO 路径的读写优化、安全、灵活的 STS 配置策略等。


ObjectStore是对象存储的接口,OSS、S3 都可以归结到 ObjectStore 内部API。上图左下角为 Jindo Native SDK 和 OSS Java SDK 的性能对比,可以看到 Jindo SDK 性能平均提升 2.2 倍。

幻灯片13.PNG

Hadoop SDK 访问 OSS ,性能也可以得到全面提升。几个 SDK 广泛应用在 EMR 生产集群,其稳定性等性能都已经过阿里云上的产品验证。


JindoFS:构建在OSS上的高性能存储系统

幻灯片15.PNG

JindoFS 重点解决了超大规模 HDFS 存储集群的挑战,比如单组 NameNode 架构存在容量限制,如果想突破容量限制,必须投入极高的运维成本,需要运维十多个服务包括NameNode、ZKFC 、ZK、JN;同时,元数据运维重启时间可高达几个小时,参数调优、JVM GC、全局锁等问题也存在挑战。除此之外,DataNode 做节点上下线、集群节点替换、HDFS 内部 balancer 等都需要解决。

幻灯片16.PNG

早期,受限于当时的技术,使用 QJM 架构来解决上述痛点。而随着 Raft 在业界广泛推广和使用,JindoFS 选择基于 Raft 架构建元数据,内部只需三个 NamespaceService 节点,避免了 HDFS 大量服务部署。


运维成本上,实现了分钟级重启。通过C++语言开发,性能非常好。基于 OSS 存储,可以大大简化顶层设计,服务也更高效,且本地 block 可以用作缓存。


幻灯片17.PNG

半托管的 JindoFS 通过这套元数据可以解决 HDFS 的运维复杂度以及 OSS 接口的损耗,满足用户“对系统稳定可靠、运维简单、节省成本;对象存储数据湖和 HDFS 相比性能只好不差”的需求。


幻灯片18.PNG

随着 JindoFS 半托管的深入使用,我们发现即使运维简单,但因为需要为用户在半托管上部署一套服务,也会给用户带来一定的运维成本。因此我们实现了基于云原生容器化和存储服务化的JindoFS数据湖3.0架构,


数据层面, OSS 服务可以提供两层 API ,分别是对象 API 和目录 API,通过两套 API 组合使用,可以基本满足所有高性能元数据和存储需求。客户实际部署时,可以将 SDK 以及 JindoFSx加速等组件部署在线下、容器或 ECS 里,使容器上的组件也可以更好地使用云上服务。


幻灯片19.PNG

JindoFS 使用了对象存储作为底层存储,因此可以实现冷热分层,可以根据对象文件生命周期的不同,选择标准型、低频型、归档型和冷归档型四种模式,最大程度地节省成本。归档类型适合长期存储但可能很长时间不读的数据,低频适合读得比较少的数据。


JindoFSx:高性能/性价比的存储加速系统

幻灯片21.PNG

JindoFSx 缓存加速系统部署在 worker 上。很多对象存储远端有一定的网络开销,而如果全走网络请求,会导致延时增加。IO 越短,GPU 机器成本也可以发挥到最大。JindoFSx 可以在内部进行分层,能够对本地存储资源进行管理。通过 JindoSDK 对上层对接了各种 ETL、交互式分析、实时计算、机器学习等组件,底层可以对接不同数据源。比如阿里云上可能要访问其他云的对象存储,带宽性能上可能无法满足高性能查询的需求。但部署 JindoFSx 以后,对数据进行缓存、预热即可基本满足存储需求。


幻灯片22.PNG

JindoFSx 实现了分布式缓存架构,包括 Namespace、Storage,上层有一套 NameSpaceService 服务做文件元数据层面的加速,通过文件系统接口暴露给 JindoSDK,供上层应用使用,以此解决 IO 密集、带宽受限、远端数据访问的问题。


生态工具和场景

幻灯片24.PNG

上图为数据湖存储对接计算引擎的大图,通过 OSS 可以方便地对接各种服务和存储。


幻灯片25.PNG

我们在数据流层面做了异步数据预读、复用,使得读取 Parquet/ORC 格式时可以实现高效寻址,利用缓存使数据读取更高效。


幻灯片26.PNG

对象存储上的 rename 操作比较重,因此我们设计了JindoCommitter,基于对象存储系统的 Multiple Upload,结合 OSS 文件系统层面的定制支持,可以实现在保证数据一致性前提下无需 rename 操作的 Job Committer。在 OSS 上运行作业时,只要加上Jindocommitter ,即可同时保证 Hadoop V1 版本的事务性和 Hadoop V2 版本的高性能。


幻灯片27.PNG

 目录 rename 的优化提供了针对 EMR 优化前缀重命名接口,目录 rename 降低到毫秒级并保证原子性。另外,我们支持了 fast copy,对比大部分对象存储对于 object 的copy 操作需要将数据进行真实拷贝, fast copy只需在内部做一次索引转换,避免了数据真实拷贝。

 

幻灯片28.PNG

很多数据湖引擎是基于文件系统原子 rename 特性设计的,即对象如果已经存在,则不能被二次覆盖。对于这个重要特性,我们在 OSS 上做了重点支持。首先,OSS 是一个强一致性存储,比如向 bucket 里写入 object,如果没有强一致的保证,在 list 时可能无法获取到最新的对象。其次,对象存储的 rename是 Key 覆盖, Key 级别对象不会检查文件是否存在。而数据湖场景下,原子 rename 特性,我们实现了两种方案:在 SDK 层面基于 OTS 构建原子 Rename 的能力。同时进行深度优化后,已经可以实现 OSS 原生原子性 rename 支持,不依赖任何外部服务,可以在文件做 copy 时进行强一致的检测。


幻灯片29.PNG

对象存储是不支持 Flush 的,而像 Flink、Flume 这类引擎对 Flush 的依赖是比较重的,我们在对象存储上也做了深度优化,虽然不能保证完整的 Flush 语义,即数据 Flush 以后立刻可见,但是可以保证 Flush 以后数据不丢,对于 Flume 层面来说已经完全满足实际使用需求。 Flink 里使用了 MPU 接口,实现了 recoverable writer 的可恢复写入。


幻灯片30.PNG

数据湖生态的 JindoTable 是专门为结构化数据设计一套工具集,可以帮助降低存储成本和维护成本。


幻灯片31.PNG

JindoTable 可以以表维度做数据冷热转换。比如表存在 OSS 或 HDFS 上,可以通过JindoTable 操作 Hive  MetaStore 等的数据,可以按照 DB 级别、表级别、前缀级别做生命周期转换,可以很方便地进行冷热数据统计,并按特点进行数据分层操作。


幻灯片32.PNG

Hadoop 原生 DistCP 在对象存储和 HDFS 同步数据会存在一些问题,比如拷贝策略、存储类型、数据校验等支持。JindoDistCP 重点解决这类问题:JindoDistCP 上实现了异构 checksum 比对,HDFS 和对象存储的 checksum 算法是不同的,传统的做法无法将HDFS 和对象直接做 checksum 比对,在 JindoDistCP 里进行了透明的 checksum 转换,保证了写入和传输过程中的数据准确性。


此外,我们对 JindoDistCP 的内核也进行了重新优化,实现了动态拷贝,类似抢占式拷贝的方式,大文件和小文件可以快速同时并行,带宽利用率大幅提高。




问答

Q:JindoFS 和 HDFS 性能数据对比如何?

A:后续会逐步发布测试数据,JindoFS 本身设计上有一定优势。在 HDFS 里做 rename、delete 等操作,特别是对大目录进行操作时,会存在大量的加锁和检查操作。随着文件数量变大,时间也会递增;这些操作在 JindoFS 上的时间是稳定的。


Q:JindoFS 只有三个节点,最大能够支持多大文件数量?

A:早期版本是一般是三节点组 raft,这种模式可以稳定支持十亿级别,相比于 HDFS 有两倍的提升。现在的 3.0 云原生架构下,用户通过 endpoint 访问,元数据服务可以在内部进行横向扩展。


Q:JindoFS 和 Alluxio 的对比?

A:JindoFS 是元数据的管理和优化,Alluxio 是一套开源分布式缓存加速服务,其功能定位与 JindoFSx 比较接近。Alluxio 主打开源,Jindo 在对象存储上做了较多优化,加上 Native 底层,理论上性能会有一定优势。


Q:HDFS 上 k8s 场景是否有具体的实践?

A:HDFS 是一个存储引擎,每个存储节点是有状态的。HDFS 部署在 k8s 节点也需要重度的运维,比如释放需要首先进行 HDFS Decommission 操作,要日常对节点进行 balance 等,k8s 部署 HDFS 无明显优势。



更多信息:

产品官网

[1] 数据湖构建Data Lake Formation:https://www.aliyun.com/product/bigdata/dlf

[2] 开源大数据平台EMR:https://www.aliyun.com/product/emapreduce

[3] 大数据知识图谱:https://developer.aliyun.com/learning/topic/bigdata


数据湖系列

[1] 数据湖揭秘—Delta Lakehttps://developer.aliyun.com/article/909818

[2] 数据湖构建—如何构建湖上统一的数据权限:  https://developer.aliyun.com/article/918403

[3] 关于 Data Lake 的概念、架构与应用场景介绍:https://developer.aliyun.com/article/944650

[4] 数据湖架构及概念简介:

https://developer.aliyun.com/article/1004847

[5] 数据湖统一元数据和权限

https://developer.aliyun.com/article/1008235

[6] 数据湖管理及优化

https://developer.aliyun.com/article/1023298





更多 数据湖 相关技术问题,可扫码加入钉钉交流群~

image.psd (25).png

 

相关实践学习
基于EMR Serverless StarRocks一键玩转世界杯
基于StarRocks构建极速统一OLAP平台
快速掌握阿里云 E-MapReduce
E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。
目录
相关文章
|
8天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
41 2
|
9天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
39 1
|
3月前
|
存储 分布式计算 监控
揭秘阿里云EMR:如何巧妙降低你的数据湖成本,让大数据不再昂贵?
【8月更文挑战第26天】阿里云EMR是一种高效的大数据处理服务,助力企业优化数据湖的成本效益。它提供弹性计算资源,支持根据需求调整规模;兼容并优化了Hadoop、Spark等开源工具,提升性能同时降低资源消耗。借助DataWorks及Data Lake Formation等工具,EMR简化了数据湖构建与管理流程,实现了数据的统一化治理。此外,EMR还支持OSS、Table Store等多种存储选项,并配备监控优化工具,确保数据处理流程高效稳定。通过这些措施,EMR帮助企业显著降低了数据处理和存储成本。
125 3
|
3月前
|
安全 数据管理 大数据
数据湖的未来已来:EMR DeltaLake携手阿里云DLF,重塑企业级数据处理格局
【8月更文挑战第26天】在大数据处理领域,阿里云EMR与DeltaLake的集成增强了数据处理能力。进一步结合阿里云DLF服务,实现了数据湖的一站式管理,自动化处理元数据及权限控制,简化管理流程。集成后的方案提升了数据安全性、可靠性和性能优化水平,让用户更专注业务价值。这一集成标志着数据湖技术向着自动化、安全和高效的未来迈出重要一步。
70 2
|
3月前
|
存储 大数据 数据处理
Delta Lake革新浪潮:EMR中的数据湖守护者,如何重塑大数据生态?
【8月更文挑战第26天】Delta Lake是一款开源大数据处理框架,以数据版本控制和ACID事务特性著称,在大数据领域崭露头角。在阿里云EMR平台上,它为用户提供高效可靠的数据处理方式,通过结构化的存储、事务日志实现数据版本控制和回滚。Delta Lake在EMR中实现了ACID事务,简化数据湖操作流程,支持时间旅行查询历史数据版本,优化存储格式提高读取速度,这些优势使其在开源社区和企业界获得广泛认可。
47 2
|
3月前
|
分布式计算 大数据 数据处理
【大数据管理新纪元】EMR Delta Lake 与 DLF 深度集成:解锁企业级数据湖的无限潜能!
【8月更文挑战第26天】随着大数据技术的发展,Apache Spark已成为处理大规模数据集的首选工具。亚马逊的EMR服务简化了Spark集群的搭建和运行流程。结合使用Delta Lake(提供ACID事务保证和数据版本控制)与DLF(加强数据访问控制及管理),可以显著提升数据湖的可靠性和性能。本文通过一个电商公司的具体案例展示了如何在EMR上部署集成Delta Lake和DLF的环境,以及这一集成方案带来的几大优势:增强的可靠性、细粒度访问控制、性能优化以及易于管理的特性。这为数据工程师提供了一个高效且灵活的数据湖平台,简化了数据湖的建设和维护工作。
58 1
|
3月前
|
存储 机器学习/深度学习 弹性计算
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决
阿里云EMR数据湖文件系统问题之OSS-HDFS全托管服务的问题如何解决
|
3月前
|
Java Spring 开发者
掌握Spring事务管理,打造无缝数据交互——实用技巧大公开!
【8月更文挑战第31天】在企业应用开发中,确保数据一致性和完整性至关重要。Spring框架提供了强大的事务管理机制,包括`@Transactional`注解和编程式事务管理,简化了事务处理。本文深入探讨Spring事务管理的基础知识与高级技巧,涵盖隔离级别、传播行为、超时时间等设置,并介绍如何使用`TransactionTemplate`和`PlatformTransactionManager`进行编程式事务管理。通过合理设计事务范围和选择合适的隔离级别,可以显著提高应用的稳定性和性能。掌握这些技巧,有助于开发者更好地应对复杂业务需求,提升应用质量和可靠性。
43 0
|
3月前
|
存储 缓存 数据管理
阿里云EMR数据湖文件系统问题之JindoFS数据孤岛的问题如何解决
阿里云EMR数据湖文件系统问题之JindoFS数据孤岛的问题如何解决
|
3月前
|
存储 对象存储 云计算
阿里云EMR数据湖文件系统问题之JindoFS处理大量小文件的问题如何解决
阿里云EMR数据湖文件系统问题之JindoFS处理大量小文件的问题如何解决