Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >小文件合并方案分享

小文件合并方案分享

作者头像
用户1260683
发布于 2020-07-14 08:36:41
发布于 2020-07-14 08:36:41
2.8K0
举报

小文件合并方案分享

现有问题

  1. 资源利用率&成本:受限于磁盘性能和硬件成本,需要在控制好硬件成本的情况下,解决海量小文件的存储,提高资源利用率。单个集群如果存储了大量小文件(240块SATA,总共6亿文件,文件大小约100KB),磁盘容量平均利用率只有22%。
  2. 读写性能:随着集群文件数量的增长,整体的读写性能会急剧下降。导致这类性能下降的原因主要有2个,一方面是filestore底层采用xfs文件系统,xfs不适合做这种大量小文件的存储,另外是我们采用了SMR的SATA磁盘,这类磁盘也不适合用在Ceph里,具体可以参考下面的文档。
  • https://blog.widodh.nl/2017/02/do-not-use-smr-disks-with-ceph/
  • https://copyfuture.com/blogs-details/201911061902186294pksqoqhzwcm79x Ceph 十年演进的经验教训 —— 磁盘文件系统并不适合作为分布式存储后端
Haystack

Facebook's Haystack design paper. https://www.usenix.org/legacy/event/osdi10/tech/full_papers/Beaver.pdf

SeaweedFS

SeaweedFS is optimized for small files. Small files are stored as one continuous block of content, with at most 8 unused bytes between files. Small file access is O(1) disk read.

https://github.com/chrislusf/seaweedfs#compared-to-glusterfs-ceph

ambry

https://github.com/linkedin/ambry/wiki/Store

The data node maintains a file per replicated store. We call this file the on-disk log. The on-disk log is a pre-allocated file in a standard linux file system (ext4/xfs). In Ambry, we pre-allocate a file for each on-disk log. The basic idea for the replicated store is the following : on put, append blobs to the end of the pre-allocated file so as to encourage a sequential write workload. Any gets that are serviced by the replicated store may incur a random disk IO, but we expect good locality in the page cache. Deletes, like puts, are appended as a record at the end of the file.

To be able to service random reads of either user metadata or blobs, the replicated store must maintain an index that maps blob IDs to specific offsets in the on-disk log. We store other attributes as well in this index such as delete flags and ttl values for each blob. The index is designed as a set of sorted files. The most recent index segment is in memory. The older segments are memory mapped and an entry is located by doing a binary search on them. The search moves from the most recent to the oldest. This makes it easy to identify the deleted entry before the put entry.

单pool结构方案

  1. 写入数据之前,需要预先分配一个大文件块,调度算法实现较复杂。(单个大文件读写竞争处理)
  2. 大文件发生GC时(空洞资源回收),会同时影响小文件读写。
  3. 成本低,受限于EC模式及底层硬件性能,读写性能会有所下降。
  4. 集群扩容会导致性能波动,同时影响读写性能。

多pool结构方案

  1. 按默认方式写入数据,写入过程不需要考虑后续大文件合并的问题,实现较简单。
  2. 大文件发生GC时(空洞资源回收),只会会影响部分小文件读。(读写分离)
  3. 成本适中,兼顾性能(SSD多副本)和EC(低成本模式)。
  4. 集群扩容相对来讲(只扩EC pool)只会影响部分数据的读取,对写入的影响基本可以忽略。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Ceph对象存储方案 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
组件分享之后端组件——一个简单且高度可扩展的分布式文件系统seaweedfs
近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。
cn華少
2022/04/24
1.5K0
代达罗斯之殇-大数据领域小文件问题解决攻略
海量小文件问题是工业界和学术界公认的难题,大数据领域中的小文件问题,也是一个非常棘手的问题,仅次于数据倾斜问题,对于时间和性能能都是毁灭性打击。本文参考网上对于小文件问题的定义和常见系统的解决方案,给大家还原一个大数据系统中小文件问题的系统性解决方案。
大数据真好玩
2021/01/26
1.5K0
关于较大规模hadoop集群的小文件问题
上一遍记录了当时集群资源死锁的问题,后来想了想其实小文件较多也会让集群变慢,小文件较多在执行作业时rpc时间就会增加,从而拖垮了job的执行速度。
Bob hadoop
2021/01/06
1.7K0
Ceph在手,天下我有
有人问我,你是如何做到统一存储的?我微微一笑,大声告诉他:Ceph在手,天下我有。
叁金
2018/09/04
6600
Ceph在手,天下我有
分布式小文件系统fastdfs与weedfs的对比
小编小文件存储用的一直是Mongodb,Tair和FastDFS风评一直很不错,最近1年Net界用的比较多的基本上都是FastDFS或者Mongodb(分布式图片服务器集群)。我也是今天才看到seaweedfs,小编挺看好的,Net和Go的项目混搭在中大型Net技术主线公司是越来越常见了~~~~ 最近拿一台双核1G的kvm vps搭建了一个图片的服务器,前面用百度云加速扛着,有了个专业图片存储及CDN的样子。每天还是有50W左右的PV,流量在30G左右。总结一下最近接触过的两个分布式小文件系统weedfs和
逸鹏
2018/04/11
6.3K0
非结构化数据怎么存?——开源对象存储方案介绍
过去的相当长的一段时间里,商用对象存储占据了市场上的大量的份额。国外的Amazon S3,国内的阿里云OSS都成为了大多数公司的选择。但是构建一个企业级的数据湖(包括结构化和非结构化数据)已经成为了越来越多公司的目标。那么Hadoop还能满足我们的要求吗?还是我们需要更多的选择?
大数据流动
2021/09/22
2.5K0
非结构化数据怎么存?——开源对象存储方案介绍
HDFS的小文件合并(12)
由于Hadoop擅长存储大文件,因为大文件的元数据信息比较少,如果Hadoop集群当中有大量的小文件,那么每个小文件都需要维护一份元数据信息,会大大的增加集群管理元数据的内存压力,所以在实际工作当中,如果有必要一定要将小文件合并成大文件进行一起处理。
大数据梦想家
2021/01/22
2.5K0
HDFS的小文件合并(12)
盘点分布式文件存储系统____分布式文件存储系统简介
**分布式存储:**通过网络使用企业中的每台机器上的磁盘空间,并将这些分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落。
全栈程序员站长
2022/06/28
6.4K0
盘点分布式文件存储系统____分布式文件存储系统简介
DeepSeek开源周 Day05:从3FS盘点分布式文件存储系统
今天是DeepSeek开源周的第五天,官方开源了一种高性能分布式文件系统Fire-Flyer File System,简称3FS,目的是解决人工智能训练和推理工作负载的挑战。
致Great
2025/03/01
8520
DeepSeek开源周 Day05:从3FS盘点分布式文件存储系统
GlusterFS分布式存储学习总结
分布式文件系统 分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源并不直接与本地节点相连,而是分布于计算网络中的一个或者多个节点的计算机上。目前意义上的分布式文件系统大多都是由多个节点计算机构成,结构上是典型的客户机/服务器模式。流行的模式是当客户机需要存储数据时,服务器指引其将数据分散的存储到多个存储节点上,以提供更快的速度,更大的容量及更好的冗余特性。 目前流行的分布式文件系统有许多,如MooseFS、FastDFS、GlusterFS、Ceph、Mogile
洗尽了浮华
2018/04/17
2.9K0
GlusterFS分布式存储学习总结
解密FastDFS:揭秘小文件存储的秘密
(1)Facebook存储了600亿张以上的图片,推出了专门针对海量小图片定制优化的Haystack进行存储。
Lion 莱恩呀
2024/12/26
1800
解密FastDFS:揭秘小文件存储的秘密
SeaweedFS
seaweedfs是一个非常优秀的由 golang 开发的分布式存储开源项目。它是用来存储文件的系统,并且与使用的语言无关,使得文件储存在云端变得非常方便。
一滴水的眼泪
2020/09/21
6.7K0
SeaweedFS
Ceph介绍及原理架构分享
Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。
Lucien168
2020/07/20
2.2K0
Ceph介绍及原理架构分享
海量小文件场景下训练加速优化之路
作者:星辰算力平台 1. 背景 随着大数据、人工智能技术的蓬勃发展,人类对于算力资源的需求也迎来大幅度的增长。在腾讯内部,星辰算力平台以降本增效为目标,整合了公司的GPU训练卡资源,为算法工程师们提供统一的底层GPU算力服务。借助于虚拟化、算力挖掘等技术,平台服务公司内各BG的AI训练场景,GPU利用率业界领先。同时,通过云原生任务化的方式,对接了内部各大业务,促进了AI技术研究效率的提升和创新研究。 当下,由于AI训练时的高性能计算设备(如NVIDIA GPU)成本高昂,如果任务在训练过程中不能保证
腾讯技术工程官方号
2021/02/23
2.3K0
打工人必备:Hive小文件合并与数据压缩
Hive仓库表数据最终是存储在HDFS上,由于Hadoop的特性,对大文件的处理非常高效。而且大文件可以减少文件元数据信息,减轻NameNode的存储压力。但是在数据仓库中,越是上层的表汇总程度就越高,数据量也就越小,而且这些表通常会有日期分区,随着时间的推移,HDFS的文件数目就会逐步增加。
王知无-import_bigdata
2020/12/18
2.5K0
打工人必备:Hive小文件合并与数据压缩
(很干)Gitee 图床又崩了?手把手教你搭建一个自己的文件系统
  前段时间Gitee图床突然"暴雷",导致许多写作者笔记、博客、网站等图片全部无法访问,一时间哀怨四起,大家也纷纷意识到图片备份的重要性,博主也在上面许多作者的行列中,花费了一天时间恢复博客、以及个人网站的图片,同时迁移到腾讯OSS上,也开始着手搭建个人的文件系统平台。
IT学习日记
2022/09/13
7720
(很干)Gitee 图床又崩了?手把手教你搭建一个自己的文件系统
干货 | 如何评估Kubernetes持久化存储方案
从用户角度看,存储就是一块盘或者一个目录,用户不关心盘或者目录如何实现,用户要求非常“简单”,就是稳定,性能好。为了能够提供稳定可靠的存储产品,各个厂家推出了各种各样的存储技术和概念。为了能够让大家有一个整体认识,本文先介绍存储中的这些概念。
焱融科技
2020/02/26
3.3K0
干货 | 如何评估Kubernetes持久化存储方案
SDS那么火,你家有没有?
近两年,SDS挺火。做SDS的厂商也很多,如VMware的vSAN,Nutanix,传统存储厂商EMC也有自己的SDS产品。有调查机构显示,SDS在未来将超过传统存储,看起来SDS的前景还是光明的。
魏新宇
2018/03/22
1.7K0
SDS那么火,你家有没有?
分布式存储glusterfs原理,部署及k8s, Heketi集成
分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源并不直接与本地节点相连,而是分布于计算网络中的一个或者多个节点的计算机上。目前意义上的分布式文件系统大多都是由多个节点计算机构成,结构上是典型的客户机/服务器模式。流行的模式是当客户机需要存储数据时,服务器指引其将数据分散的存储到多个存储节点上,以提供更快的速度,更大的容量及更好的冗余特性;
iginkgo18
2021/10/22
4.5K3
浅析 SeaweedFS 与 JuiceFS 架构异同
SeaweedFS 是一款高效的分布式文件存储系统,最早的设计原型参考了 Facebook 的 Haystack,具有快速读写小数据块的能力。本文将通过对比 SeaweedFS 与 JuiceFS 在设计与功能上的差异,以帮助读者进行更适合自己的选择。
Juicedata
2023/03/08
1.6K0
浅析 SeaweedFS 与 JuiceFS 架构异同
推荐阅读
相关推荐
组件分享之后端组件——一个简单且高度可扩展的分布式文件系统seaweedfs
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档