元数据性能大比拼:HDFS vs OSS vs JuiceFS
背景
存储是大数据的基石,存储系统的元数据又是它的核心大脑,元数据的性能对整个大数据平台的性能和扩展能力非常关键。本文选取了大数据平台中 3 个典型的存储方案来压测元数据的性能,来个大比拼。
其中 HDFS 是被广为使用的大数据存储方案,已经经过十几年的沉淀和积累,是最合适的参考标杆。
以 Amazon S3 和 Aliyun OSS 为代表的对象存储也是云上大数据平台的候选方案,但它只有 HDFS 的部分功能和语义,性能也差不少,实际使用并不广泛。在这个测试中对象存储以 Aliyun OSS 为代表,其他对象存储类似。
JuiceFS 是大数据圈的新秀,专为云上大数据打造,是符合云原生特征的大数据存储方案。JuiceFS 使用云上对象存储保存客户数据内容,通过 JuiceFS 元数据服务和 Java SDK 来实现 HDFS 的完整兼容,不需要对数据分析组件做任何修改就可以得到跟 HDFS 一样的体验。
测试方法
Hadoop 中有一个专门压测文件系统元数据性能的组件叫 NNBench,本文就是使用它来做压测的。
原版的 NNBench 有一些局限性,我们做了调整:
- 原版 NNBench 的单个测试任务是单线程的,资源利用率低,我们将它改成多线程,便于增加并发压力。
- 原版 NNBench 使用 hostname 作为路径名的一部分,没有考虑同一个主机里多个并发任务的冲突问题,会导致多个测试任务重复创建和删除文件,不太符合大数据工作负载的实际情况,我们改成使用 Map 的顺序号来生成路径名,避免的一个主机上多个测试任务的产生冲突。
我们使用了 3 台阿里云 4核 16G 的虚拟机来做压力测试。CDH 5 是目前被广泛使用的发行版,我们选用 CDH 5 作为测试环境,其中的 HDFS 是 2.6 版本。 HDFS 是使用 3 个 JournalNode 的高可用配置,JuiceFS 是 3 个节点的 Raft 组。HDFS 使用内网 IP,JuiceFS 使用的是弹性 IP,HDFS 的网络性能会好一些。OSS 是使用内网接口访问。
数据分析
先来看看大家都熟悉的 HDFS 的性能表现:

此图描述的是 HDFS 每秒处理的请求数(TPS)随着并发数增长的曲线,有两个发现:
- 其中 Open/Read 和 Delete 操作的性能要远高于 Create 和 Rename。
- 在 20 个并发前,TPS 随着并发数线性增长,之后就增长缓慢了,到 60 个并发已经能压到 TPS 的极限(满负载)。
再来看看 OSS 的性能情况:

OSS 速度比 HDFS 慢了一个数量级,但它的各种操作的速度基本保持稳定,总的 TPS 随着并发数的增长而增长,在 80 个并发下还没遇到瓶颈。受测试资源所限,未能进一步加大压测知道它的上限。
最后看下 JuiceFS 的表现:

从图中可以看出,整体趋势和 HDFS 类似,Open/Read 和 Delete 操作明显比 Create/Rename 快很多。JuiceFS 的 TPS 也是在 20 个并发以内基本保持线程增长,之后增长放缓,在 60 个并发左右达到上线。但 JuiceFS 增幅更快,上限更高。
详细性能对比
为了更直观的看出这三者的性能差异,我们直接把 HDFS、Aliyun OSS 和 JuiceFS 放在一起比较:




可见无论是哪种元数据操作,JuiceFS 的 TPS 增长更快,上限也更高,明显优于 HDFS 和 OSS。
总结
一般我们在看一个系统的性能时,主要关注它的操作时延(单个操作所消耗的时间)和吞吐量(满负载下的处理能力),我们把这两个指标再汇总一下:

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

上图是 80 个并发时的吞吐量对比,可以发现:
- OSS 的吞吐量非常低,和其它两个产品有一到两个数量级的差距,意味着它需要使用更多的计算资源,产生更高的并发,才能获得同等的处理能力。
- JuiceFS 比 HDFS 的处理能力高 50-200%,同样的资源能够支撑更大规模的计算。
从以上两个核心性能指标来看,对象存储不适合要求性能的大数据分析场景。
如有帮助的话欢迎关注我们项目 Juicedata/JuiceFS 哟! (0ᴗ0✿)
元数据性能大比拼:HDFS vs OSS vs JuiceFS的更多相关文章
- 元数据性能大比拼:HDFS vs S3 vs JuiceFS
元数据是存储系统的核心大脑,元数据性能对整个大数据平台的性能和扩展能力至关重要.尤其在处理海量文件的时候.在平台任务创建.运行和结束提交阶段,会存在大量的元数据 create,open,rename ...
- 公共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框架无缝集成 ...
随机推荐
- 震撼,java面试题整合(良心制作)11万多字拿去。持续更新【可以收藏】
一.javaSE面试题整合 Java部分 JDK中哪些类是不能继承的?[信雅达面试题] [参考答案] 不能继承的是类是那些用final关键字修饰的类.一般比较基本的类型或防止扩展类无意间破坏原来方法的 ...
- 第九届河南理工大学算法程序设计大赛 正式赛L:最优规划(最小生成树)
单测试点时限: 1.0 秒 内存限制: 512 MB 有很多城市之间已经建立了路径,但是有些城市之间没有路径联通.为了联通所有的城市,现在需要添加一些路径,为了节约,需要满足添加总路径是最短的. 输入 ...
- 【模型推理】量化实现分享三:详解 ACIQ 对称量化算法实现
欢迎关注我的公众号 [极智视界],回复001获取Google编程规范 O_o >_< o_O O_o ~_~ o_O 大家好,我是极智视界,本文剖析一下AC ...
- [算法笔记-题解]问题 C: 例题4-3 比较交换3个实数值,并按序输出
问题 C: 例题4-3 比较交换3个实数值,并按序输出 [命题人 : 外部导入] 时间限制 : 1.000 sec 内存限制 : 12 MB 题目描述 从键盘输入3个实数a, b, c,通过比较交换, ...
- Java EE数据持久化框架 • 【第4章 MyBatis动态SQL】
全部章节 >>>> 本章目录 4.1 MyBatis动态标签 4.1.1 MyBatis动态标签介绍 4.1.2 < if >标签 4.1.3 update语 ...
- Java程序设计基础笔记 • 【第5章 循环结构】
全部章节 >>>> 本章目录 5.1 while循环结构 5.1.1 循环简介 5.1.2 while循环 5.1.3 while循环的使用 5.1.4 while循环的注 ...
- 论文翻译:2020_Generative Adversarial Network based Acoustic Echo Cancellation
论文地址:http://www.interspeech2020.org/uploadfile/pdf/Thu-1-10-5.pdf 基于GAN的回声消除 摘要 生成对抗网络(GANs)已成为语音增强( ...
- xxd命令转换二进制十六进制文件
Linux下的xxd命令,可以把文件在二进制和十六进制之间互相转换. 1.准备需要转换的二进制文件 这个二进制文件可以是任意格式的, 示例中我们创建一个txt格式的二进制文件, vi demo.txt ...
- Kafka集群安装Version2.10
Kafka集群安装,基于版本2.10, 使用kafka_2.10-0.10.1.0.tgz安装包. 1.安装规划 Storm集群模式,安装到下面三台机器 IP Hostname 10.43.159.2 ...
- 利用 Maven 创建 Docker 镜像并且推送到私有注册中心
利用 Maven 命令生成项目框架 mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -Darchetype ...