

英语原文共 12 页,剩余内容已隐藏,支付完成后下载完整资料
处理Hadoop分布式文件系统中的小文件问题
摘要
Hadoop的使用近年来一直在增加。Hadoop是广泛采用。一些值得注意的大用户,如雅虎、Facebook、Netflix和Amazon,使用Hadoop主要用于非结构化数据分析,因为Hadoop框架与结构化和非结构化数据非常有效。Hadoop分布式文件系统(HDFS)用于存储大文件,但是当需要存储大量小文件时,HDFS必须面对一些问题,因为HDFS中的所有文件都由一个服务器管理。提出了各种方法来处理HDFS中的小文件问题。本文对在HDFS中处理小文件问题的方法进行了比较分析。
关键词:HDFS;小文件问题;MapReduce;Hadoop
1 简介
HDFS给了程序员无限的存储空间,这是转向Hadoop的唯一原因。但是,当涉及到存储小文件时,有一个大问题。HDFS能够处理大小为GB或TB的大文件。Hadoop可以更好地处理少量大文件,而不是大量小文件。大量的小文件占用了Namenode上的大量内存。每个小文件都会生成一个映射任务。这样的映射任务太多,输入不足。在HDFS中存储和转换小文件大小的文件会创建一个映射缩减程序的开销,这会极大地影响Namenode的性能。
大量高速数据显示了传统数据库系统所面临的新挑战。每个组织都有管理结构化数据的专业知识,但世界已经对非结构化数据进行了更改。现在,所有这些都需要引入一个平台,构建统一的系统和大数据满足这种需求。
大数据并不意味着大量的数据。它实际上是一个概念,提供了一个机会来为现有的数据和指导方针寻找新的见解,以捕获和分析未来的数据。
Apache Hadoop是免费的基于java的软件框架。它提供了一个强大的分布式平台来存储和管理大数据。它在大量的商品硬件上运行应用程序。它处理数千兆兆字节的数据在数千个节点上。Hadoop框架的主要优点是它提供了可靠性和高可用性。
图1 Apache Hadoop框架
图1所示的Apache Hadoop框架由以下模块组成:
Hadoop通用模块
Hadoop分布式文件系统(HDFS)
Hadoop MapReduce
Hadoop
除了HDFS、纱线和MapReduce,还有一些相关的项目,它们同样有助于Apache Hadoop“平台”,包括HBase、Zookeeper、Hive、Apache pig、Chukwa和Avro3。
管理内存使用时,如果在HDFS中保留大量的小文件,就会产生开销。在Namenode内存中,HDFS中的每个文件、目录和块都充当一个实体。HDFS块的默认大小是64 mb。在HDFS中,大小小于默认块大小的文件称为小文件。
由于以下原因,HDFS不能很好地处理大量的小文件:
每个块都能处理一个文件,结果会产生比配置块大小更小的块。一个接一个地阅读这个模块是非常耗时的。
Namenode保存每个文件和块的记录,并将这些数据保存到内存中。大量的文件需要更多的内存空间。
论文的其余部分分为以下部分。第二节介绍文献综述。第三节介绍了在HDFS中处理小文件问题的现有技术。第四节给出了在第三节中所描述的不同技术的详细比较和分析。第五节最后引用参考文献。
2文献综述
这项文献调查的目的是为了确定在Hadoop分布式文件系统中处理小文件所做的研究。
2.1 HDFS和MapReduce
Apache Hadoop的核心有两个主要组件:HDFS和MapReduce并行处理框架
图2 Hadoop的高级架构
HDFS是Hadoop的“文件系统”或“存储层”,它的设计目的是存储大量的流数据访问模式,在集群上运行。
MapReduce是一个编程模型和一个用于处理和生成大型数据sets6的相关实现
图3 HDFS架构
2.2 相关工作
Vaibhav Gopal Korat,Kumar Swamy提出了Hadoop存档技术,该技术将减少Namenode上数据的存储开销,并通过减少MapReduce程序中的映射操作来帮助提高性能。
陈吉安、王丹、李华福、赵文兵提出了将同一目录中的小文件合并成大文件的想法,并为每个小文件建立索引,以提高小文件的存储效率,减少元数据引起的Namenode的负担。此外,还介绍了提高HDFS上小文件的阅读效率的缓存策略。
Kashmira p . Jayakar Y.B.Gurav10提出了一个解决方案调用扩展Hadoop分布式文件系统(EHDFS)。在这种方法中,将一组相关文件合并到一个大型文件中,以减少文件计数。构建了一个索引机制来访问相应的组合文件中的各个文件。此外,还提供了索引预取,以提高I / O性能,并最小化Namenode上的负载。
Chatuporn Vorapongkitipun,Natawut Nupairoj提出了一种基于Hadoop档案的新Hadoop Archive(NHAR)的方法。这种方法最大化了元数据的内存使用,并提高了在HDFS中访问小文件的能力。由于哈尔不允许将文件添加到现有的存档文件中。NHAR通过让更多的文件插入来增强HAR的潜力。
Priyanka Phakade博士,Suhas Raut博士为处理小文件设计了改进的模型。通过修改InputFormat类来提高系统性能。InputFormat将被修改,以使多个文件合并成一个单独的分割。因此,与现有系统不同,map任务将获得更多的进程输入。因此,处理大量小文件所需的时间将被最小化。此外,多个还原机将被用于利用并行性。
3 处理小文件问题的不同技术
3.1 Hadoop架构
第一个技术是Hadoop Archive(HAR)。Hadoop存档的名称是基于存档技术,它可以更有效地将多个小文件打包到HDFS块中。一个HAR的文件可以直接访问而不扩展它,因为这个访问是在主内存中完成的。
图4 用于存档小文件的数据模型
创建HAR将减少Namenode上数据的存储开销,减少mapreduce程序中的map操作会提高性能。
创建HAR文件:使用Hadoop存档命令创建一个HAR文件:
文件布局开销:文件访问需要两个索引文件读取操作以及一个数据文件读取操作,在引用文件中有轻微的开销。要访问所需要的文件,请求将访问存档包含的元数据索引。
与在HDFS中读取文件相比,在HAR中读取文件的效率要低得多。Map进程无法运行在HDFS块上的HAR的所有文件中。
升级HAR需要改变HDFS架构,这可能会变得困难。
3.2 改善的HDFS
改进的HDFS结构由两部分组成:
客户端组件将小文件集成到大文件和数据节点组件中,满足缓存资源管理。
图5 改善的HDFS架构
改进的HDFS模型是基于索引的。基于文件依赖,属于同一目录的文件被集成到一个大文件中,从而为每个小文件构建索引,减少由它们造成的浪费,从而减少Namenode的负担。
缓存策略可以提高小文件的阅读效率。缓存管理器定位于Datanode,每次读取小文件数据时,缓存中的数据首先被搜索。如果此资源不在缓存中,则资源可以从Datanode的磁盘中找到。
文件集成的设计:每个大文件都有一个索引文件,其中包含每个原始小文件的偏移量和长度。
文件集成的过程:
- 根据目录对目录下的小文件进行排序,并逐个将小文件写入大文件中。
- 确定小文件的总数。
- 确定大文件的大小,并与HDFS块默认大小的结果进行比较。
索引文件被创建,考虑到每个小文件的偏移量和长度。要将大文件存储在一个块中,大文件的整个大小应该小于块的大小。
如果文件的整个大小超过块大小的多个块,则用于存储大文件的分离。
根据上面的范例,确定一个大文件中的每个文件的偏移量和序列,然后建立索引文件,这样文件集成过程就结束了。
3.3扩展HDFS
这种方法扩展了HDFS,并被命名为扩展HDFS(EHDFS)。EHDFS是基于索引的,当小文件的数量在索引文件中非常大时,更新索引可能会变得更加困难。为了丰富HDFS的读取性能,使用了预抓取方法。
EHDFS提供了改进的索引机制和索引信息的预取。EHDFS有四种技术在提高HDFS处理小文件的效率方面起着重要的作用。它们是文件合并、文件映射、预抓取和文件提取。
图6显示了描述处理这些操作的模块的位置的整个系统体系结构
图6 扩展的HDFS架构
文件合并:在文件合并命名时,Namenode只维护合并文件的元数据,而不维护当前文件中的所有小文件。除了文件数据外,还将索引表放在每个块的开头。这个表包含每个小文件的条目,它是这个块的一部分。每一个表项都是一个(偏移量,长度)对。图7显示了合并后的块结构。
扩展块表示合并文件的一部分。与其他普通文件块一样,扩展块存储为HDFS Datanode中的任何其他块。
图8描述了Datanode中块的存储
图7 文件合并后的块结构
图8 扩展块的结构
文件映射:由Namenode执行。文件映射是将小文件名映射到包含该文件的组合文件块的过程。一个包含小文件和合并文件名的请求被发送到Namenode,以获取所需的小文件的位置。
Namenode为每个组合的file10维护一个名为“宪法”的数据结构。小的文件名和保存这个小文件的组合文件的逻辑块数被映射。Namenode还提供了一个“索引条目数”,它指定存储在该块开始处的索引表中的条目。
图9显示了一个名为temp的组合文件的构成数据结构。
图9文件映射结构
预抓取:文件合并不会提高读取操作的性能。它只会减少Namenode中的元数据占用。读取小文件,在Namenode上放置相当大的负载,这使它成为系统的瓶颈。通过为预取文件元数据提供框架,EHDFS克服了这个瓶颈。
在预取过程中,当客户机试图读取一个小文件时,作为组合文件的一部分呈现。与被请求的文件相同的块中的其他小文件的元数据是由Namenode预取的。
文件提取:由Datanode执行。文件提取涉及从块中提取所需文件内容的过程。
在读取文件时,客户端指定小文件的名称和组合文件的名称。这个信息是用来获取的,
- 保存文件的块。
- 用Datanode控制块。
- 从Namenode中输入“索引条目数”。
3.4 新HAR
NHAR的基本思想包括两个方面:
- 将小文件合并成较大的文件,以减少文件数量并优化访问性能。
- 在HAR中扩展文件管理的功能类似于典型的文件系统。
NHAR重新构造了索引结构,以改进HDFS的元数据大型机并在不改变HDFS架构的情况下访问性能。新设计使NHAR允许将附加的文件添加到现有的存档中,这是一个众所周知的限制。
当阅读来自HAR的文件时,索引需要访问两次,这将创建不必要的开销。为了提高访问性能,NHAR模型使用单级索引。NHAR使用索引信息创建哈希表而不是主索引方法。这些信息被分割成多个索引文件,如图10所示
图10 NHAR文件结构
定位包含元数据的索引文件取决于当前的索引文件的数量。要获取散列代码,使用的文件名是带有索引文件的mods。
实际文件将存储在部分文件中,类似于HAR。图11给出了NHAR的哈希机制
图11 新的归档技术
要向HAR文件添加额外的文件,必须创建一个新的HAR文件,这是非常低效的。就NHAR而言,没有必要重构NHAR的新文件。它允许向现有的NHAR文件添加其他文件。插入过程包括三个步骤:存档新文件、合并索引文件和移动新部件文件。例如,将文件- 7和文件- 8插入到bar.har。
例子:
图12 将文件插入NHAR
插入过程执行如下:
- 将文件存档到tmp。使用存档程序har。
- 为了防止文件重复检查的部分文件(Part-0,第1部分,hellip;)在酒吧。已经存在或不存在的har。
- 在tmp中合并索引文件。在bar.har的现有索引文件。
- 在tmp中移动部分文件。哈尔bar.har。
- 删除tmp.har
3.5组合文件输入格式
现有的HDFS系统使用多个mappers和单个减速器。InputFormat负责分割输入文件。MapReduce框架为作业的InputFormat生成的每个InputSplit生成一个映射任务。这种方法通过修改InputFormat类来提高系统性能。InputFormat将被修改,以使多个文件合并成一个单独的分割。与现有系统不同,每个映射任务将获得更多的输入。处理大量小文件所需的时间将被最小化。多个还原剂用于实现并行性。
图13 CombinedFileInputFormat的工作流
Namenode允许HDFS客户机在HDFS中存储小文件。当提交小文件时,Namenode将文件合并为单个分割。这是用于映射任务的输入。中间o / p是由map任务生成的。这个o / p被赋予多个还原剂作为输入。还原为排序的合并输出。随着映射任
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[26262],资料为PDF文档或Word文档,PDF文档可免费转换为Word
您可能感兴趣的文章
- 饮用水微生物群:一个全面的时空研究,以监测巴黎供水系统的水质外文翻译资料
- 步进电机控制和摩擦模型对复杂机械系统精确定位的影响外文翻译资料
- 具有温湿度控制的开式阴极PEM燃料电池性能的提升外文翻译资料
- 警报定时系统对驾驶员行为的影响:调查驾驶员信任的差异以及根据警报定时对警报的响应外文翻译资料
- 门禁系统的零知识认证解决方案外文翻译资料
- 车辆废气及室外环境中悬浮微粒中有机磷的含量—-个案研究外文翻译资料
- ZigBee协议对城市风力涡轮机的无线监控: 支持应用软件和传感器模块外文翻译资料
- ZigBee系统在医疗保健中提供位置信息和传感器数据传输的方案外文翻译资料
- 基于PLC的模糊控制器在污水处理系统中的应用外文翻译资料
- 光伏并联最大功率点跟踪系统独立应用程序外文翻译资料
