软件 2015 年第 36 卷 第 2 期 SOFTWARE 国际 IT 传媒品牌
作者简介: 左大鹏
(1990
),
男
,
研究生
,
主要研究方向
:
大数据存储
通讯联系人: 徐薇
,
副教授
,
主要研究方向
:
数据库
基于 Hadoop 处理小文件的优化策略
左大鹏,徐薇
(北京交通大学计算机与信息技术学院,北京市 100044)
摘 要: HDFS(Hadoop Distributed File System)作为开源系统广泛地适用于各类存储服务中,具有高容错,易扩展,
廉价存储等特点。然而,HDFS 基于单一的服务器 NameNode 来处理元数据信息管理,当处理海量小文件时会造成
NameNode 内存过分消耗以及存储和读取性能并不理想,使 NameNode 成为系统瓶颈。本文提出一种基于 HAR(Hadoop
Archive)的优化机制来提高 NameNode 存储元数据信息的内存利用效率和提高读取小文件的访问效率。另外,该策略也
扩展了 HAR 文件追加的优化和为提高访问效率采用索引预取机制。实验结果表明该优化策略能够提高现有 HAR 处理
小文件的能力和访问海量小文件的效率。
关键词: HDFS; 小文件; HAR; 索引策略; 索引预取
中图分类号: TP391.1 文献标识码: A DOI:10.3969/j.issn.1003-6970.2015.02.023
本文著录格式:左大鹏,徐薇. 基于 Hadoop 处理小文件的优化策略[J]. 软件,2015,36(2):107111
Optimization Strategy for Handling Small Files on Hadoop
ZUO Da-peng, XU Wei
(School of Computer and Information Technology, Beijing Jiaotong University, Beijing 100044, China)
【Abstract】: Hadoop Distributed File System(HDFS) is an open source system which has advantages of high
fault-tolerance, scalability and low-cost storage capability and has been widely suitable for storage applications. How-
ever, HDFS based on single master (NameNode) to handle metadata management, NameNode would have the memory
overhead problem and suffer the performance penalty in both storage and accessing while handling massive small files,
NameNode would become bottleneck. This paper proposes a mechanism based on Hadoop Archive (HAR) to improve
the memory utilization for metadata and enhance efficiency of accessing small files. In addition, this strategy also ex-
tends HAR capability to allow additional files to be inserted into the existing archive files and adopts the preload of
index files to improve the access efficiency. Experimental results show that this strategy can to improve the capability to
handle small files and the efficiency of accessing large number of small files.
【Key words】: HDFS; Small files; HAR; index strategy; index preload
0 引言
随着网络服务的高速发展,数据的数量呈现井喷之势,云计算技术已经成为提供主机数据和软件与服
务部署方面越来越受欢迎的下一代基础设施
[1]
。分布式文件系统是网络服务基层实施的重要组件。HDFS 作
为 Hadoop 的分布式文件系统,已经成为海量存储集群上部署的主流文件系统
[2]
。由于 HDFS 是一个开源软
件框架,获得了许多大公司的青睐,根据存储与处理海量数据时的优异表现得到广泛用与分析。然而 HDFS
在处理海量小文件时却忍受着性能降低,因为 NameNode 把文件系统的元数据信息放置于内存中,所以海
量小文件的存储会引发的 NameNode 内存消耗过度以及 NameNode 性能降低,使 NameNode 成为了系统瓶颈。
随着各类社交网络的兴起,产生了大量数据文件,如日志,用户文件,图片等等小文件,所以针对 Hadoop
小文件问题现在已经有一些解决方案,这些方案可以大体分为两种策略:第一种是通过部署多个 NameNode
来支持更多的负载以此来提高系统性能;另一种则是通过合并小文件来最大限度的减轻 NameNode 的内存
负载。其中 Apache Hadoop 基金会
[3,4]
已经再次开发了 HDFS,HDFS 能够在一个集群中支持多命名空间从而