JindoFS: 云上大数据的高性能数据湖存储方案

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: JindoFS 是EMR打造的高性能大数据存储服务,可以为不同的计算引擎提供不同的存储服务,可以根据应用的场景来选择不同的存储模式。在2019杭州云栖大会大数据生态专场,阿里巴巴计算平台事业部EMR团队技术专家殳鑫鑫和Intel大数据团队软件开发经理徐铖共同向大家分享了云上大数据的高性能数据湖存储方案JindoFS的产生背景、架构以及与Intel DCPM的性能评测。

本场视频链接:云上大数据的一种高性能数据湖存储方案

ppt观看:https://www.slidestalk.com/AliSpark/0761944


EMR JindoFS背景

计算存储分离已经成为云计算的一种发展趋势。在计算存储分离之前,普遍采用的是传统的计算存储相互融合的架构(下图左侧),但是这种架构存在一定的问题,比如在集群扩容的时候会面临计算能力和存储能力相互不匹配的问题。用户在某些情况下只需要扩容计算能力或者存储能力,而传统的融合架构不能满足用户的这种需求,进行单独的扩充计算或者存储能力;其次在缩容的时候可能会遇到人工干预,人工干预完后需要保证数据在多个节点中同步,而当有多个副本需要同步时候,可能会造成的数据丢失。而计算存储分离架构(下图右侧)则可以很好的解决这些问题,使得用户只需要关心整个集群的计算能力。
image.png

EMR现有的计算存储分离方案是基于OSS开发的提供兼容Hadoop文件系统的OssFS。其具备海量存储的能力,用户无需担心存储容量无法满足业务需求;另外由于OssFS可以访问OSS上的数据,因此也保留了OSS的一些优势,比如成本低、高可靠等。但是OssFS也存在一些缺点,比如任务结束后可能会将数据移动到最终的目录,该过程中文件移动以及重命名操作慢,这主要是由于在OSS系统上模拟了文件系统的语义,文件系统对象存储不支持重命名或移动的原子操作;OSS是一个公有云服务,其带宽会受到限制;高频访问的数据消耗过多的OSS带宽。相比之下,JindoFS在保留OssFS的优势的基础上,克服了前面提到的这些问题。

image.png

EMR JindoFS介绍

1) 架构简介

EMR JindoFS的整体架构如下图所示,主要包含部分:Namespace服务和Storage服务。Namespace服务主要负责JindoFS 元数据管理以及 Storage服务的管理,而Storage服务主要负责用户数据的管理(本地数据和远程OSS数据)。EMR JindoFS是一个云原生的文件系统,它可以提供本地存储的性能以及OSS的超大容量。

image.png

Namespace服务
Namespace服务是JindoFS的中心服务,主要负责管理用户的元数据,包括JindoFS 本身文件系统的元数据、切分的Block的元数据以及 Storage服务的元数据。JindoFS Namespace服务可以支持多个Namespace,用户可以根据不同的业务划分不同的Namespace,不同的Namespace存放不同业务数据,不相互干扰。Namespace不设置全局大锁,可以基于目录级别实现并发控制,进行并发创建和并发删除。此外Namespace可以设置不同后端存储,现阶段主要支持RocksDB和阿里云OTS,OTS支持预计在下个版本发布,其好处是如果在EMR中创建自己的集群,采用OTS作为数据后端,本地EMR集群可以随时销毁,集群在创建的时候,JindoFS的数据仍然可以访问,这增加了用户使用的灵活性。

Storage 服务
Storage 服务主要用来管理集群本地磁盘的数据,本地缓存的数据以及OSS数据。其目前可以支持不同的存储后端以及存储介质,存储后端现阶段主要支持本地文件系统以及OSS, 本地存储系统可以支持HDD/SSD/DCPM等存储介质,用以提供缓存加速,另外Storage 服务针对用户的小文件较多的场景进行优化,避免过多的小文件给本地文件系统带来过大的压力造成整体性能的下降。

image.png

在整个生态方面,JindoFS 目前支持所有大数据组件,包括Hadoop、Hive、Spark、Flink、Impala、Presto和HBase等, 用户访问EMR JindoFS时,只要替换文件访问路径的模式为jfs即可。另外在机器学习方面下个版本JindoFS将会推出Python SDK,方便机器学习用户可以高效率的访问JindoFS上的数据。EMR JindoFS还与EMR Spark实现了高度集成优化,比如集成Relational Cache、基于Spark的物化视图以及Cube的优化等。

image.png

EMR Jindo使用模式

EMR-Jindo使用模式主要有两种:Block模式和Cache模式。
Block模式
Block模式将JindoFS的文件切分的Block的形式存放本地磁盘以及OSS上,用户通过OSS 只能看到Block的数据,该模式非常依赖于本地的Namespace的文件系统,本地的Namespace服务负责管理元数据,通过本地元数据以及Block数据构建出文件数据。相对于后一种模式来讲,该模式下JindoFS的性能是最佳的,Block模式适用于用户对数据以及元数据有一定性能要求的场景,Block模式需要用户将数据迁移到JindoFS。

image.png

Block模式支持不同的存储策略,适配用户不同的应用场景。默认的是WARM的策略,
a) WARM:此为默认策略,数据在OSS和本地分别有一个备份,本地备份能够有效的提供后续的读取加速,OSS备份起到高可用的作用;
b) COLD:数据仅有一个备份存在 OSS 上,没有本地备份,适用于冷数据存储;
c) HOT:数据在 OSS 上一个备份,本地多个备份,针对一些最热的数据提供更进一步的加速效果;
d) TEMP:数据仅有一个本地备份,针对一些临时性数据,提供高性能的读写,但牺牲了数据的高可靠性,适用于一些临时数据的存取。

image.png

对比HDFS, JindoFS的Block 模式具有以下优势:
a) 利用OSS 的廉价和无限容量,具备成本以及容量的优势;
b) 冷热数据自动分离,计算透明,冷热数据自动迁移的时候逻辑位置不变,无须修改表元数据 location 信息;
c) 维护简单,无须decommission,节点坏掉就去掉,数据OSS上有,不会丢失;
d) 系统快速升级/重启/恢复,没有block report;
e) 原生支持小文件,避免小文件过程造成文件系统过大的压力。

image.png

Cache模式
与Block模式不同的是,Cache模式将JindoFS文件以对象的形式存储在OSS上。该模式兼容现有的OSS文件系统,用户可以通过OSS访问原有的目录结构以及文件,同时该模式提供数据以及元数据的缓存,加速用户的读写数据的性能。使用该模式的用户无需迁移数据到OSS,可以无缝对接现有OSS上的数据,但是性能相对Block模式有一定的性能损失。在元数据同步方面用户可以根据不同的需求选择不同的元数据同步策略。

image.png

对比OssFS, JindoFS的Cache模式提供以下优势:
a) 由于本地备份存在,读写吞吐与HDFS相当;
b) 能够支持全部 HDFS接口,支持更多的场景,如Delta Lake,支持 HBase on JindoFS;
c) JindoFS作为数据以及元数据的缓存,用户在读写数据以及List/Status操作相对OssFS有性能提升;
d) JindoFS作为数据缓存,可以加速用户的数据读写。

image.png

外部客户端提供用户在EMR 集群外访问 JindoFS的一种方式,现阶段该客户端只支持JindoFS的Block模式,客户端的权限与OSS 权限绑定,用户需要有相应OSS的权限才能够通过外部客户端访问JindoFS的数据。

image.png

EMR JindoFS + DCPM性能

下面分享一下如何用Intel新的硬件Optane DC persistent memory来加速EMR JindoFS。下图展示了英特尔傲腾数据中心级可持久化内存的典型使用场景,从最底层的存储层开始,在RDMA/Replication的场景下,使用新的存储介质可以达到更高的I/O性能;在基础设施层,密集型应用创建更多实例的需求下,高容量的可持久化内存是一个比较好的解决方案;数据库层特别是IMDB,可以使用SAP HANA和Redis通过高容量的可持久化内存支持更多实例的创建;类似地,在AI和数据分析领域,可以使用低延迟的设备加速实时数据分析,比如SAS,使用Databricks来加速机器学习场景分析;此外在HPC和COMMS领域都可以用到可持久化内存。

image.png

使用DCPM加速EMR JindoFS的性能测试环境配置如下图所示。其中,Spark使用的是EMR Spark,其基于开源Spark 2.4.3版本做了很多改造,增加了很多新的特性,包括Relational Cache和JindoFS;可持久化内存使用方式是SoAD,其对于用户来讲是一个快设备;基准测试选用了三个层面,即Micro-benchmark、TPC-DS queries和Star Schema Benchmark。

image.png

EMR JindoFS使用DCPM后的性能测试结果显示:DCPM为小文件读带来显著性能提升,特别是在更大文件以及更多读进程场景下,性能提升更为明显;使用决策支持相关查询作为基准测试,2TB数据下,DCPM为99个查询执行带来1.53倍性能提升;同样在2TB数据下,DCPM为 SSB with spark relational cache带来总体2.7倍的性能提升。

image.png

下图为Micro-benchmark的性能测试结果,主要测试了不同文件大小( 512K, 1M, 2M, 4M and 8M )和不同并行度(1-10)下的100个小文件读操作,从图中可以看出DCPM为小文件读带来了性能的显著提高,文件越大,并行度越高,性能提升的也更明显。

image.png

下图是TPC-DS的测试结果,TPC-DS数据量为2TB,测试整个TPC-DS的99个查询。基于归一化时间,DCPM总体上带来了1.53倍的性能提升。具体分析性能提升的根源,如下图右侧两张子图所示,读操作内存带宽峰值是6.23GB/s,而写操作的峰值是2.64GB/s,而Spark中读的场景比较多,这也是性能提升的原因。

image.png

下图SSB在Spark Relational Cache + JindoFS 性能测试结果,其中SSB(星型基准测试)是基于TPC-H的针对星型数据库系统性能的测试基准。Relational Cache是EMR Spark支持的一个重要特性,主要通过对数据进行预组织和预计算加速数据分析,提供了类似传统数据仓库物化视图的功能。 在SSB测试中,使用1TB数据来单独执行每个查询,并在每个查询之间清除系统cache。基于归一化时间,总体上DCPM 能带来2.7倍的性能提升。对于单个query,性能提升在1.9倍至3.4倍。总结一下就是通过DCPM新硬件,不仅可以解决I/O问题,还为JindoFS带来端到端的性能提升。

image.png


相关文章推荐:
JindoFS概述:云原生的大数据计算存储分离方案

JindoFS解析 - 云上大数据高性能数据湖存储方案


后续我们也会在云栖社区和钉钉群分享更多的 Jindo 技术干货,欢迎有兴趣的同学加入 【Apache Spark技术交流社区】进行交流和技术分享。

image.png

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
17天前
|
存储 分布式计算 大数据
数据仓库与数据湖在大数据架构中的角色与应用
在大数据时代,数据仓库和数据湖分别以结构化数据管理和原始数据存储见长,共同助力企业数据分析。数据仓库通过ETL处理支持OLAP查询,适用于历史分析、BI报表和预测分析;而数据湖则存储多样化的原始数据,便于数据探索和实验。随着技术发展,湖仓一体成为趋势,融合两者的优点,如Delta Lake和Hudi,实现数据全生命周期管理。企业应根据自身需求选择合适的数据架构,以释放数据潜力。【6月更文挑战第12天】
43 5
|
13天前
|
存储 分布式计算 OLAP
Apache Paimon统一大数据湖存储底座
Apache Paimon,始于Flink Table Store,发展为独立的Apache顶级项目,专注流式数据湖存储。它提供统一存储底座,支持流、批、OLAP,优化了CDC入湖、流式链路构建和极速OLAP查询。Paimon社区快速增长,集成Flink、Spark等计算引擎,阿里巴巴在内部广泛应用,旨在打造统一湖存储,打通Serverless Flink、MaxCompute等,欢迎大家扫码参与体验阿里云上的 Flink+Paimon 的流批一体服务。
13348 0
Apache Paimon统一大数据湖存储底座
|
7天前
|
存储 SQL 分布式计算
MaxCompute产品使用问题之如何查看项目空间耗用的存储大小
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
22天前
|
存储 分布式计算 DataWorks
MaxCompute产品使用合集之要存储用户的下单所有产品,然后查询时要进行产品分组的,一般这种字段要使用ARRAY还是MAP
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
21天前
|
存储 分布式计算 大数据
MaxCompute产品使用合集之是否支持创建OSS外部表为分区表,并访问OSS上以分区方式存储的数据
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
24天前
|
存储 大数据 分布式数据库
使用Apache HBase进行大数据存储:技术解析与实践
【6月更文挑战第7天】Apache HBase,一个基于HDFS的列式存储NoSQL数据库,提供高可靠、高性能的大数据存储。其特点是列式存储、可扩展至PB级数据、低延迟读写及多版本控制。适用场景包括大规模数据存储、实时分析、日志存储和推荐系统。实践包括集群环境搭建、数据模型设计、导入、查询及性能优化。HBase在大数据存储领域扮演关键角色,未来有望在更多领域发挥作用。
|
2月前
|
存储 关系型数据库 MySQL
Mysql 存储大数据量问题
Mysql 存储大数据量问题
125 1
|
7天前
|
存储 机器学习/深度学习 分布式计算
MaxCompute产品使用问题之如何使用分层存储
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
2月前
|
关系型数据库 分布式数据库 数据处理
【PolarDB 开源】PolarDB 在大数据分析中的应用:海量数据处理方案
【5月更文挑战第25天】PolarDB是解决大数据挑战的关键技术,以其高性能和可扩展性处理大规模数据。通过与数据采集和分析工具集成,构建高效数据生态系统。示例代码显示了PolarDB如何用于查询海量数据。优化策略包括数据分区、索引、压缩和分布式部署,广泛应用于电商、金融等领域,助力企业进行精准分析和决策。随着大数据技术进步,PolarDB将继续发挥关键作用,创造更多价值。
176 0
|
2月前
|
存储 弹性计算 大数据
【阿里云弹性计算】阿里云ECS在大数据处理中的应用:高效存储与计算实践
【5月更文挑战第23天】阿里云ECS在大数据处理中发挥关键作用,提供多样化实例规格适应不同需求,尤其大数据型实例适合离线计算。通过集成分布式文件系统如OSS,实现大规模存储,而本地存储优化提升I/O性能。弹性扩容和计算优化实例确保高效运行,案例显示使用ECS能提升处理速度并降低成本。结合阿里云服务,ECS构建起强大的数据处理生态,推动企业创新和数字化转型。
54 0