HDFS存储大量小文件居然有这样的问题!看我怎么搞定它!「建议收藏」

HDFS存储大量小文件居然有这样的问题!看我怎么搞定它!「建议收藏」写在前面本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构和文献引用请见1000个问题搞定大数据技术体系解答HDFS存储大量小文件有什么问题?小文件是指文件大小小于HDFS上Block大小的文件。这样的文件会给Hadoop的扩展性和性能带来严重问题。首先,在HDFS中,任何Block、文件或者目录在内存中均以对象的形式存储,每个对象约占150Byte。如果有100000个小文件,每

大家好,又见面了,我是你们的朋友全栈君。

写在前面

本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和文献引用请见1000个问题搞定大数据技术体系

解答

在这里插入图片描述

HDFS 存储大量小文件有什么问题?

小文件是指文件大小小于 HDFS 上 Block 大小的文件。 这样的文件会给 Hadoop 的扩展性和性能带来严重问题。

首先,在HDFS中,任何 Block、文件或者目录在内存中均以对象的形式存储,每个对象约占 150Byte。

如果有100000个小文件,每个小文件占用一个 Block,则 NameNode 大约需要2GB空间。

如果存储1亿个小文件,则 NameNode 需要约20GB空间。这样一来, NameNode 的内存容量严重制约了集群的扩展。

其次,访问大量小文件的速度远远小于访向几个大文件。

HDFS 最初是为流式访问大文件而开发的,如果访问大量小文件,则需要不断地从一个 DataNode跳到另个 DataNode,严重影响了性能,导致最后处理大量小文件的速度远远小于处理同等大小的大文件的速度。

每个小文件要占用一个 Slot,而 Task 启动将耗费大量时间,从而导致大部分时间都耗费在启动和释放 Task 上。

要想解决小文件的问题,就要想办法减少文件数量,降低 NameNode的压力。

通常有两种解决方法:一种是用户程序合并,另一种是从机制上支持小文件的合并。

用户程序合并

Hadoop自身提供了三种解决方案: HadoopArchive、 SequenceFile 和 CombineFileInputFormat

HadoopArchive

归档为*.har文件,该文件的内部结构如图所示。
在这里插入图片描述

创建存档文件的问题

  1. 存档文件的源文件目录及源文件都不会自动删除,需要手动删除。
  2. 存档的过程实际是一个 MapReduce 过程,所以需要 Hadoop 的 MapReduce 的支持
  3. 存档文件本身不支持压缩。
  4. 存档文件一旦创建便不可修改,要想从中删除或者増加文件,必须重新建立存档文件
  5. 创建存档文件会创建原始文件的副本,所以至少需要有与存档文件容量相同的磁盘空间

关于 Archive 的详情可以参考我的另一篇博客——一篇文章搞懂 HDFS 的 Archive 到底是什么

SequenceFile

详情请见我的另一篇博客——一篇文章搞懂 SequenceFile 到底是什么以及该怎么用

CombineFileInputFormat

CombineFileInputFormat是一种新的 InputFormat,用于将多个文件合并成一个单独的 Split。另外,它会考虑数据的存储位置。

通用合并方法

业界针对数据的不同特征,有一些合并优化的方法,可以降低文件数量、提高存储性能。

WebGIS 解决方案

在地理信息系统中,为了方便传输,通常将数据切分为KB大小的文件存储在分布式文件系统中。

论文结合 WebGIS 数据的相关特征,将相邻地理位置的小文件合并成个大的文件,并为这些文件构建索引。

论文中将小于 16MB 的文件当作小文件进行合并处理,将其合并成 64MB 的 Block 并构建索引。

BlueSky 解决方案

BlueSky 是中国电子教学共享系统,主要存放的是教学所用的 PPT 文件和视频文件,存放的载体为 HDFS 分布式存储系统。

在用户上传 PPT 文件的同时,系统还会存储些文件的快照。用户请求 PPT 时可以先看到这些快照,以决定是否继续浏览。

用户对文件的请求具有很强的关联性。当用户浏览 PPT 时,其他相关的 PPT 和文件也会在短时间内被访问,因而文件的访问具有相关性和本地性。

TFS解决方案

TFS(Taobao File System)是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据,它构筑在普通的 Linux机器集群上,可为外部提供高可靠和高并发的存储访问。

TFS为淘宝提供海量小文件存储,通常文件大小不超过1MB, 满足了淘宝对小文件存储的需求, 被广泛应用在淘宝的各项应用中。

它采用了HA架构和平滑扩容, 保证了整个文件系统的可用性和扩展性。

同时扁平化的数据组织结构可将文件名映射到文件的物理地址,简化了文件的访问流程,一定程度上为TFS提供了良好的读/写性能。

小文件社区改进HDFS-8998

社区在HDFS上进行了改进,HDFS-8998提供了在线合并的方案。

HDFS自动启动一个服务,将小文件合并成大文件。

其主要架构如图所示。

在这里插入图片描述

相比原生HDFS,新增一个 FGCServer 的后台服务,服务本身支持HA。元数据存储在 levelDB 中,文件和日志都存储在 HDFS 本身。

后台服务自动搜索小文件,合并符合规则的小文件到大文件。

小文件合并成大文件需要记录小文件在大文件里面的大小、偏移位置、对应关系等信息,这些元数据存储在 levelDB 中因为合并后原始文件的存储位置发生了变更,所以原HDFS的读写等接口的流程也发生了变更。

比如,要读取一个文件,需要先到 FGCServer 中获取小文件元数据、然后再到 HDFS 中获取对应的文件。

通过合并,减轻了 NameNode 的压力,增大了 HDFS 单个 NameNode 支持的文件个数。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144141.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 奉劝那些刚参加工作的学弟学妹们:这些计算机与操作系统基础知识越早知道越好!万字长文太顶了!!(建议收藏)

    奉劝那些刚参加工作的学弟学妹们:这些计算机与操作系统基础知识越早知道越好!万字长文太顶了!!(建议收藏)2.5万字54张图带你彻底学透计算机与操作系统基础,文章有点长,建议收藏后阅读!!

    2022年6月22日
    42
  • ORB-SLAM 2+3 rgbd稠密地图 (地图可回环)「建议收藏」

    ORB-SLAM 2+3 rgbd稠密地图 (地图可回环)「建议收藏」高博曾经在他的github上提供过,但因为大佬时间少,并没有将回环加入到稠密地图,现提供一个可回环的稠密地图版本https://github.com/tiantiandabaojian/ORB-SLAM2_RGBD_DENSE_MAP.git第一张图片是TUM数据集未回环的地图第二张图片是经过回环的地图第三张是博主自己用KinectV2跑出的地图望能帮到各位…

    2022年9月18日
    2
  • @ResponseBody注解使用简介

    @ResponseBody注解使用简介1、@ResponseBody注解简介:@ResponseBody注解:主要做两件事:1、将返回值转换成JSON,如果返回值是String或者其他基本数据类型则不满足key-value形式,不能转换成json类型,则返回字符串2、设置响应头为application/json;charset=utf-8;返回值为字符串,则不能转换成json格式的则响应头设置为text/html,为防止中文乱码,因此需要使用@RequestMapping(,produces=“text/html;ch

    2022年5月18日
    62
  • axure 发布后隐藏顶部菜单 或展开顶部菜单[通俗易懂]

    axure 发布后隐藏顶部菜单 或展开顶部菜单[通俗易懂]这样可以实现菜单栏最小化,而且在你鼠标不移动到左上角时,小箭头会隐藏,效果就可以了。axure9.0版本在发布后HTML页面打开时总是在顶部弹出菜单既不美观也影响效果。本人axure小白,摸索半天后发现也不能完全关闭或者不显示(除非代码修改);解决方案就是在请求地址后面拼接。…

    2022年8月19日
    17
  • 少儿编程网站源码和scratch课程

    随着智能时代的到来,随着国家双减政策的实施,少儿编程是很多教育从业者的首选。因为不仅国家重视,而且对于承认来说容易上手。但目前市面上的少儿编程,投入都极高,且都是租用有限的账号和功能,并不是拥有真正属于自己的系统。学生端所以一定要有源码,这样才能拥有真正属于自己的少儿编程教学平台和管理平台系统。(源码即和新文件,拥有源码就可以不受任何限制。)另外,系统要大量的投入教学使用,这样才能保证其成熟使用,最后还要有专业的技术团队去维护。学生端+课程视频教师端:可以一键推送学生作业给家长..

    2022年4月6日
    61
  • LDC1314 学习资料

    LDC1314 学习资料一、模块概述1.电赛出现LDC1314芯片是2016年TI杯全国电子设计竞赛指定使用芯片,为了调试方便制作了模块如下图,它配合4个线圈可以检测磁性材料,比如硬币和铁丝等,2016比赛的题目就是小车检测铁丝。2.PCB图3.说明LDC1312-Q1和LDC1314-Q12和4通道,12位电感数字转换器(LDC)感应传感解决方案。多通道遥感支持的LDC1312-Q1和LDC131…

    2022年6月7日
    94

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号