元数据性能大比拼:HDFS vs S3 vs JuiceFS
元数据是存储系统的核心大脑,元数据性能对整个大数据平台的性能和扩展能力至关重要。尤其在处理海量文件的时候。在平台任务创建、运行和结束提交阶段,会存在大量的元数据 create,open,rename 和 delete 操作。因此,在进行文件系统选型时,元数据性能可谓是首当其冲需要考量的一个因素。
目前主流的大数据存储方案中, HDFS 是使用最为广泛的方案,已经过十几年的沉淀和积累;以 Amazon S3 为代表的对象存储是近年来云上大数据存储的热门方案;JuiceFS 是大数据圈的新秀,专为云上大数据打造,基于对象存储来进行大数据存储。因此,我们选取了这 3 个典型的存储方案 HDFS、Amazon S3 与 JuiceFS 社区版 进行元数据的性能测试。
测试方法
NNBench 是Hadoop 中有一个专门压测文件系统元数据性能的组件,本次测试就是使用它来进行的。
原版的 NNBench 有一些局限性,我们做了调整:
- 原版 NNBench 的单个测试任务是单线程的,资源利用率低,我们将它改成多线程,便于增加并发压力。
- 原版 NNBench 使用 hostname 作为路径名的一部分,没有考虑同一个主机里多个并发任务的冲突问题,会导致多个测试任务重复创建和删除文件,不太符合大数据工作负载的实际情况,我们改成使用 Map 的顺序号来生成路径名,避免的一个主机上多个测试任务的产生冲突。
测试环境
测试区域:us-east-1
测试软件:
- emr-6.4.0,hadoop3.2.1,HA部署
- master(3台):m5.xlarge, 4 vCore, 16 GiB
- core(3台): m5.xlarge, 4 vCore, 16 GiB
JuiceFS 社区版本:v1.0.0
JuiceFS 元数据引擎:ElastiCache,6.2.6,cache.r5.large
性能表现
先来看看大家都熟悉的 HDFS 的性能表现:

此图描述的是 HDFS 每秒处理的请求数(TPS)随着并发数增长的曲线,随着并发的增加,TPS基本呈现线性增长。

- S3 速度比 HDFS 慢了一个数量级,但它的各种操作的速度基本保持稳定,总的 TPS 随着并发数的增长而增长。
- 但 S3 性能不太稳定,可以看到 Delete 请求在 100 并发下反而出现了下降的情况,猜测可能和 S3 本身的负载有关。

- 整体趋势和 HDFS 类似,Open 会比其他操作快很多。
- JuiceFS 的 TPS 也是在 20 个并发以内基本保持线性增长,之后增长放缓,在 80 个并发左右达到上限
性能对比
为了更直观的看出这三者的性能差异,我们直接把 HDFS、AWS S3 和 JuiceFS 放在一起比较:




- JuiceFS 在所有元数据操作上均大幅领先于 S3。
- JuiceFS 在 Create 和 Open 操作上领先于 HDFS。
- 此次测试中使用的元数据引擎是ElastiCache , 各操作在 80 并发左右会达到性能瓶颈,表现比 HDFS 差。
总结
一般我们在看一个系统的性能时,主要关注它的操作时延(单个操作所消耗的时间)和吞吐量(满负载下的处理能力),我们把这两个指标再汇总一下:

上图是 20 个并发下的各操作的时延(未跑满负载),可以发现:
- S3 非常慢,尤其是 Rename 操作,因为它是通过 Copy + Delete 实现的。本文测试的还只是单个空文件的 Rename,而大数据场景常用的是对整个目录的 Rename,差距会更大。
- JuiceFS 的速度比 HDFS 更快。

上图是 100 个并发时的吞吐量对比,可以发现:
- S3 的吞吐量非常低,和其它两个产品有一到两个数量级的差距,意味着它需要使用更多的计算资源,产生更高的并发,才能获得同等的处理能力。
- JuiceFS 比 HDFS 的处理能力基本和 HDFS 持平,部分操作性能高于 HDFS。
- 随着并发的持续升高,HDFS 的性能仍然可以继续提升,但 JuiceFS 受制于元数据引擎本身的性能,到达瓶颈。如果需要高吞吐,可以使用 TiKV 作为元数据引擎。
JuiceFS 社区版可以适配各种成熟的元数据引擎,各种元数据引擎性能都有其相应的特点。比如 Redis 的低时延迟,MySQL 的可靠性,TiKV 的高吞吐。更多测试详见:元数据引擎性能对比测试 | JuiceFS Document Center
如有帮助的话欢迎关注我们项目 Juicedata/JuiceFS 哟! (0ᴗ0✿)
元数据性能大比拼:HDFS vs S3 vs JuiceFS的更多相关文章
- 元数据性能大比拼:HDFS vs OSS vs JuiceFS
背景 存储是大数据的基石,存储系统的元数据又是它的核心大脑,元数据的性能对整个大数据平台的性能和扩展能力非常关键.本文选取了大数据平台中 3 个典型的存储方案来压测元数据的性能,来个大比拼. 其中 H ...
- 公共DNS性能大比拼
今天中午,访问Gitee突然访问不进去,然后收到红薯通知:阿里云停止了 Gitee.com 的域名解析. 码云官方也随后给出解决办法 没有任何提示,没有任何提前通知,阿里云停止了 Gite ...
- EntityFramework、Dapper vs 草根框架性能大比拼,数据库访问哪家强?
扯淡 当前市面上 ORM 很多,有跑车型的,如 Dapper,有中规中矩型的,如 Mybatis.Net,也有重量型的,如 EntityFramework 和 NHibernate,还有一些出自草根之 ...
- [转]ORACLE中Like与Instr模糊查询性能大比拼
instr(title,'手册')>0 相当于 title like '%手册%' instr(title,'手册')=1 相当于 title like '手册%' instr(titl ...
- 10个国内外jQuery的CDN性能大比拼
jQuery是前端开发最常见也是最流行的javascript库,如何去加载它才能使我们的项目性能更好以及问什么要用CDN?当用户访问自己的站点时从服务器加载文件,每个服务器同时只能下载2-4个文件,这 ...
- Linux文件系统Ext2,Ext3,Ext4性能大比拼
Linux kernel 自 2.6.28 开始正式支持新的文件系统 Ext4. Ext4 是 Ext3 的改进版,修改了 Ext3 中部分重要的数据结构,而不仅仅像 Ext3 对 Ext2 那样,只 ...
- 分布式RPC框架性能大比拼 dubbo、motan、rpcx、gRPC、thrift的性能比较
Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成.不过,略有遗憾的是,据说在淘宝内部,dub ...
- 【转载】分布式RPC框架性能大比拼
dubbo.motan.rpcx.gRPC.thrift的性能比较 Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 ...
- Java RPC 分布式框架性能大比拼,Dubbo排老几?
来源:http://985.so/aXe2 Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成 ...
随机推荐
- LOJ2312 LUOGU-P3733「HAOI2017」八纵八横 (异或线性基、生成树、线段树分治)
八纵八横 题目描述 Anihc国有n个城市,这n个城市从1~n编号,1号城市为首都.城市间初始时有m条高速公路,每条高速公路都有一个非负整数的经济影响因子,每条高速公路的两端都是城市(可能两端是同一个 ...
- n【c#】委托:delegate 学习笔记
类似于c/c++的指针,只不过c#的委托存储的是某个方法的调用,派生子System.Delegate
- 【MySQL】从入门到精通9-数据库的备份(完结)
上期:[MySQL]从入门到精通8-SQL数据库编程 第一章:数据的导出 回到我们的Workbench. 选择Data Export. 选择需要导出的数据库. 注意,如果选择"Export ...
- k8s数据持久化,pv和pvc
k8s中为什么使用存储: k8s中的副本控制器保证了pod的始终存储,却保证不了pod中的数据.只有启动一个新pod的,之前pod中的数据会随着容器的删掉而丢失! pv和pvc的概念: Persist ...
- 流媒体协议扫盲(rtp/rtcp/rtsp/rtmp/mms/hls)
RTP 参考文档 RFC3550/RFC3551 Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议.RTP协议详细 ...
- PostgreSQL 涉及复杂视图查询的优化案例
一.前言 对于含有union , group by 等的视图,我们称之为复杂视图. 这类的视图会影响优化器对于视图的提升,也就是视图无法与父查询进行合并,从而影响访问路径.连接方法.连接顺序等.本文通 ...
- KingbaseES 与Oracle 函数稳定性对于性能影响差异比较
一.函数的属性 KingbaseES 函数在定义时有三种稳定性级别:volatile.stable 和 immutable.默认情况下,创建函数的稳定性为volatile.以下是这三种函数的区别: V ...
- KingbaseES 创建只读(read_only)用户
数据库版本: prod=> select version(); version --------------------------------------------------------- ...
- Unity-编辑器拓展之GUILayout,EditorGUILayout布局 { }
Unity 脚本 API 中文版 链接: https://docs.unity3d.com/cn/2019.4/ScriptReference/ 创建自定义窗口 public class MyWind ...
- 这份数据安全自查checklist请拿好,帮你补齐安全短板的妙招全在里面!
企业数据安全自查Checklist! 快来对照表单,看看你的数据安全及格了吗? 一.京东云安全Checklist建议 京东云安全拥有业界领先的安全研究团队,经过多年实践与经验积累,京东云已面向不同业务 ...