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

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
16天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
62 2
|
17天前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
57 1
|
1月前
|
存储 消息中间件 大数据
大数据-69 Kafka 高级特性 物理存储 实机查看分析 日志存储一篇详解
大数据-69 Kafka 高级特性 物理存储 实机查看分析 日志存储一篇详解
35 4
|
1月前
|
消息中间件 存储 缓存
大数据-71 Kafka 高级特性 物理存储 磁盘存储特性 如零拷贝、页缓存、mmp、sendfile
大数据-71 Kafka 高级特性 物理存储 磁盘存储特性 如零拷贝、页缓存、mmp、sendfile
50 3
|
1月前
|
存储 消息中间件 大数据
大数据-70 Kafka 高级特性 物理存储 日志存储 日志清理: 日志删除与日志压缩
大数据-70 Kafka 高级特性 物理存储 日志存储 日志清理: 日志删除与日志压缩
39 1
|
1月前
|
存储 消息中间件 大数据
大数据-68 Kafka 高级特性 物理存储 日志存储概述
大数据-68 Kafka 高级特性 物理存储 日志存储概述
26 1
|
1月前
|
存储 算法 NoSQL
大数据-138 - ClickHouse 集群 表引擎详解3 - MergeTree 存储结构 数据标记 分区 索引 标记 压缩协同
大数据-138 - ClickHouse 集群 表引擎详解3 - MergeTree 存储结构 数据标记 分区 索引 标记 压缩协同
34 0
|
1月前
|
存储 消息中间件 分布式计算
大数据-137 - ClickHouse 集群 表引擎详解2 - MergeTree 存储结构 一级索引 跳数索引
大数据-137 - ClickHouse 集群 表引擎详解2 - MergeTree 存储结构 一级索引 跳数索引
31 0
|
1月前
|
存储 SQL 分布式计算
大数据-127 - Flink State 04篇 状态原理和原理剖析:状态存储 Part2
大数据-127 - Flink State 04篇 状态原理和原理剖析:状态存储 Part2
20 0
|
1月前
|
存储 消息中间件 大数据
大数据-126 - Flink State 03篇 状态原理和原理剖析:状态存储 Part1
大数据-126 - Flink State 03篇 状态原理和原理剖析:状态存储 Part1
58 0