元数据性能大比拼:HDFS vs S3 vs JuiceFS

news2024/11/20 1:22:29

元数据是存储系统的核心大脑,元数据性能对整个大数据平台的性能和扩展能力至关重要。尤其在处理海量文件的时候。在平台任务创建、运行和结束提交阶段,会存在大量的元数据 create,open,rename 和 delete 操作。因此,在进行文件系统选型时,元数据性能可谓是首当其冲需要考量的一个因素。

目前主流的大数据存储方案中, HDFS 是使用最为广泛的方案,已经过十几年的沉淀和积累;以 Amazon S3 为代表的对象存储是近年来云上大数据存储的热门方案;JuiceFS 是大数据圈的新秀,专为云上大数据打造,基于对象存储来进行大数据存储。因此,我们选取了这 3 个典型的存储方案 HDFS、Amazon S3 与 JuiceFS 社区版 进行元数据的性能测试。

测试方法

NNBench 是Hadoop 中有一个专门压测文件系统元数据性能的组件,本次测试就是使用它来进行的。

原版的 NNBench 有一些局限性,我们做了调整:

  1. 原版 NNBench 的单个测试任务是单线程的,资源利用率低,我们将它改成多线程,便于增加并发压力。
  2. 原版 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 个并发下的各操作的时延(未跑满负载),可以发现:

  1. S3 非常慢,尤其是 Rename 操作,因为它是通过 Copy + Delete 实现的。本文测试的还只是单个空文件的 Rename,而大数据场景常用的是对整个目录的 Rename,差距会更大。
  2. JuiceFS 的速度比 HDFS 更快。

上图是 100 个并发时的吞吐量对比,可以发现:

  1. S3 的吞吐量非常低,和其它两个产品有一到两个数量级的差距,意味着它需要使用更多的计算资源,产生更高的并发,才能获得同等的处理能力。
  2. JuiceFS 比 HDFS 的处理能力基本和 HDFS 持平,部分操作性能高于 HDFS。
  3. 随着并发的持续升高,HDFS 的性能仍然可以继续提升,但 JuiceFS 受制于元数据引擎本身的性能,到达瓶颈。如果需要高吞吐,可以使用 TiKV 作为元数据引擎。

JuiceFS 社区版可以适配各种成熟的元数据引擎,各种元数据引擎性能都有其相应的特点。比如 Redis 的低时延迟,MySQL 的可靠性,TiKV 的高吞吐。更多测试详见:元数据引擎性能对比测试 | JuiceFS Document Center

如有帮助的话欢迎关注我们项目 Juicedata/JuiceFS 哟! (0ᴗ0✿)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/10936.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Sass 使用说明

CSS 样式表越来越大、 越来越复杂、越来越难以维护。这就是预处理可以提供帮助的地方。 Sass 为你提供了 CSS 中还不存在的特性,例如变量、 嵌套、混合、继承和其它实用的功能,让编写 CSS 代码变得有意思。 最直接的方式就是在命令行中调用 sass 命令。安…

java和vue的狱警管理系统监狱系统狱务管理系统

简介 狱警管理系统监狱系统狱务管理系统,主要是管理罪犯教育改造、劳动改造、案件管理,罪犯信息管理等 演示视频 https://www.bilibili.com/video/BV1VG411P7YL/?zw&vd_sourcefa4ffd66538a5ca679a754398a6fdb5f 技术:springbootvueel…

git的下载与安装

1. 下载地址 根据自己的电脑配置信息,选用合适的版本进行下载即可,我的电脑上64位win11,所以我选择了64位的widnows版本,下面其他内容也以此版本展开。 windows:Git - Downloading Package macOS:Git - …

Linux-进程管理

基本介绍 在Linux中,每个执行的程序都称为一个进程,每一个进程都分配一个ID号(pid) 程序运行起来就产生了进程 ps ps命令用来查看在目前系统中,有哪些正在执行的进程,以及他们执行的状况,可以不加任何参…

K_A05_004 基于 STM32等单片机驱动2X2块(8X8)点阵模块(MAX7219)显示0-9与中文

目录 一、资源说明 二、基本参数 1、参数 2、引脚说明 三、通信协议说明 工作时序 对应程序: 四、部分代码说明 1、接线说明 1.1、STC89C52RC2X2块(8X8)点阵模块(MAX7219) 1.2、STM32F103C8T62X2块(8X8)点阵模块(MAX7219) 2、亮…

年产10000吨餐厨垃圾制备氨基酸有机肥工厂设计

目录 摘 要 I Abstract II 第1章 餐厨垃圾概况 1 1.1餐厨垃圾性质 1 1.2餐厨垃圾无害化处理的必要性 1 1.3餐厨垃圾资源化处理工艺 1 1.3.1加工有机肥 2 1.3.2好氧堆肥 3 1.3.3厌氧消化 3 第2章 项目概述 4 2.1氨基酸有机肥的介绍 4 2…2 氨基酸有机肥的性质 4 2.3 氨基酸有机肥…

重温Python基础,都是最基础的知识点

前言 最近有很多朋友刚接触python学的还是有点模糊 还有的朋友就是想重温一下基础内容,毕竟基础不牢地动山摇 行吧,就总结了以下的一些知识点,可以都看看哈 一、开发环境搭建 更多学习资料.点击领取即可 1.1 Python解释器的安装 Python解…

三个最常见OSPF故障的实操检测步骤

大家好,我是小咖老师。 OSPF排错咱们已经讲过几期了,有同学反馈说看不懂,内容太多也不好记,今天咱就挑最常见的三个,给大家分析讲解一下。 1、OSPF邻居建立不成功 2、OSPF不能发现其他区域的路由 3、CPU过高问题 O…

-1- threejs 场景常见的方法和属性

场景常见的方法和属性场景的作用场景的坐标系常用的属性常用的方法场景的作用 场景(THREE.Scene)用于存储物体、光源、摄像机及其渲染所需要的其他的对象集合。THREE.Scene 对象又是被称为场景图,它不仅仅是一个对象数组,还包含了整个场景图树形结构中的…

Android API—序列化与反序列化学习+案例

概述 序列化是指将对象的状态信息转换为可以存储或传输形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后可以通过从存储区中读取或者反序列化对象的状态,重新创建该对象. 序列化:利用ObjectOutputStream,把对象的信息,按照固定的格式转成一串字节值输…

论文笔记: 数据驱动的地震波形反演--健壮性与泛化性研究

摘要: 分享对论文的理解, 原文见 Zhongping Zhang and Youzuo Lin, Data-driven seismic waveform inversion: A study on the robustness and generalization. 1. 论文贡献 提供实时预测的 VelocityGAN与其他基于编码器-解码器的数据驱动地震波形反演方法不同, VelocityGAN …

c++ - 第11节 - stack和queue类

1.标准库中的stack类 1.1.stack类 stack类的文档介绍:https://cplusplus.com/reference/stack/stack/?kwstack 注: 1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提…

深度学习项目:男女性别识别【附完整源码】

性别分类对于人机交互应用和计算机辅助生理或心理分析等商业领域的许多应用至关重要,因为它包含有关男女特征差异的广泛信息。 本次案例收集了接近二十万的男女数据集图片。 文章目录性别分类简介使用 Python 进行性别分类的机器学习项目导入相关库和数据模型搭建…

Chapter3 Pytorch与机器学习有关函数(一)

3.1 Tensor中统计学有关的函数 3.1.1 平均值、总和 、累积 1.测试结果1 import torcha torch.rand(2, 2)print(a) print(torch.mean(a,)) print(torch.sum(a)) print(torch.prod(a)) 2.测试结果2:数组对第1维操作 import torcha torch.tensor([[1.0,2.0,3.0],[4.…

【毕业设计】酒店评价情感倾向分析系统 - python 深度学习

文章目录0 前言1 概述2 项目所需模块3 数据3.1 数据说明3.1.1 字段说明3.2 数据处理3.2.1 分词处理3.2.3 停用词处理3.2.4 样本均衡3.2.5 建立多层感知机分类模型3.2.6 训练模型3.2.7 网络检测率以及检测结果4 最后0 前言 🔥 Hi,大家好,这里…

回归模型介绍

Datawhale开源学习,机器学习课程,项目地址:https://github.com/datawhalechina/leeml-notes 首先讲机器学习中的:回归,回归Regression可以做哪些东西呢? 股票预测 输入为以往股票走势,预测未来…

HTML标签(下)

一、表格标签 1. 表格的主要作用 表格主要用于显示、展示数据。可以让数据规整、有可读性、有条理。 2. 表格的基本语法 <table><tr><td>单元格内的文字</td>...</tr>... </table><table> </table>是用于定义表格的标签 …

nodejs+vue+elementui零食食品o2o商城系统

目 录 摘 要 1 Abstract 1 1 系统概述 4 1.1 概述 4 1.2课题意义 4 1.3 主要内容 4 2 系统开发环境 5 3 需求分析 7 3.1技术可行性&#xff1a;技术背景 7 3.2经济可行性 7 3.3操作可行性&#xff1a; 8 3.4系统设计规则 8 3.5…

对pure pursuit算法的理解和改进

算法实现 purepursuit的核心其实是一个曲率半径的几何计算。 (x, y)是转换到机器人坐标系上的路径点。L是lookahead distance。r是形成的圆弧半径。D是r和x之间的差值。 根据上面的图形&#xff0c;可以发现有下面的几何关系&#xff1a; 同时通过 y2D2r2y^2 D^2 r^2 y2D2r…

java项目-第134期ssm社团管理系统-java毕业设计

java项目-第134期ssm社团管理系统-毕业设计 【源码请到资源专栏下载】 今天分享的项目是《社团管理系统》 该项目分为前台和后台。主要分成两个角色&#xff1a;普通用户、管理员角色。 普通用户登录前台&#xff0c;看到社团官网发布的一些信息。 比如&#xff1a;首页、新闻…