海量小文件处理方式——Improve HAR

举报
敏敏君主 发表于 2021/01/20 17:43:18 2021/01/20
【摘要】      改进的HDFS结构包含两部分:用于聚合小文件为大文件的客户端组件,client;用于缓存资源管理的数据结点组件,data node;    具体架构图如下:       改进的HDFS模型是基于索引的。存在依赖关系的、同一目录下的小文件可以聚合为一个大文件,依次来减少每一个小文件元数据都单独存储在NameNode中对于NameNode结点内存的消耗。       缓存策略可以增加小...

     改进的HDFS结构包含两部分:

  • 用于聚合小文件为大文件的客户端组件,client;
  • 用于缓存资源管理的数据结点组件,data node;

    具体架构图如下:

       改进的HDFS模型是基于索引的。存在依赖关系的、同一目录下的小文件可以聚合为一个大文件,依次来减少每一个小文件元数据都单独存储在NameNode中对于NameNode结点内存的消耗。

       缓存策略可以增加小文件读速率。缓存管理器部署在DataNode结点,这样当每一次读取小文件时,可以首先从缓存中获取,而非磁盘。想想看,如果读文件不在缓存中,那么不得不到DataNode结点的磁盘获取。磁盘和内存的速率非一个数量级!。

       文件整合的设计:每一个合并后的大文件包含被合并小文件的文件大小、在大文件中的偏移量,这些信息被整合在大文件索引文件中。

      文件整合程序的功能如下:

  • 就特定目录下的小文件排序,之后将小文件一个个合并为大文件;
  • 确定待合并小文件总体的数量;
  • 确定合并后大文件大小,并且与HDFS默认块大小比较。

      索引文件是依据每一个小文件的大小、偏移量的创建的。为了在HDFS块中存储大文件,需要确保大文件大小不能大于块大小(默认HDFS块大小为64M)。

      如果合并后的文件大小大于HDFS块大小,则合并后的文件需要先分片,再存储到不同的HDFS块中。

      基于上述描述,识别大文件中每个文件的偏移量和顺序,并据此构建索引文件,从而结束文件整合过程。

----------------------------------------------------------------------------------------------------------------------------------------------------------------

其实看上面的流程,我们发现Improve HAR也存在一些问题,比如合并后的大文件查找,如果是随机查,也会性能很差。如果索引采用hash方式可以适度缓解该问题。

【版权声明】本文为华为云社区用户翻译文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容, 举报邮箱:cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。