基于集中式管理的缓存优化方案

2016-06-20 07:54王丽娟蔡晓东赵勤鲁
电视技术 2016年5期

王丽娟,蔡晓东,王 迪,赵勤鲁

(桂林电子科技大学 信息与通信学院,广西 桂林 541004)



基于集中式管理的缓存优化方案

王丽娟,蔡晓东,王迪,赵勤鲁

(桂林电子科技大学 信息与通信学院,广西 桂林 541004)

摘要:针对分布式文件系统HDFS 以流式的方式访问大文件时效率很高,但是为解决海量小文件的操作特别是频繁访问重复的小文件时效率比较低的问题,提出了一种基于集中式管理的缓存优化方案。该方案通过对缓存的小文件进行集中式管理,采用一种新的数据一致性管理机制,提高海量小文件的读取性能。实验结果表明,该方案有效地提高了小文件的读取效率,减少了小文件的访问时延。

关键词:HDSF;集中式管理;缓存优化;一致性管理

在互联网、云计算、大数据等高速发展的背景下,数据呈现爆炸式地增长。而其中增长最快并且最容易给信息基础架构带来挑战的就是数目庞大的小文件。由于在元数据管理、访问性能、存储效率等方面面临巨大的挑战性,因此海量小文件(Lots of Small Files,LOSF)问题[1]成为了工业界和学术界公认的难题。

HDFS 分布式文件系统[2]是Apache Hadoop[3]项目开发的适合运行在通用硬件上的分布式文件系统,具有高可靠性、高容错性的特点,能提供高吞吐量的数据访问,适用于海量数据集的存储和分布式处理。然而HDFS 文件系统并非是完美的,HDFS的设计建立在“一次写入、多次读取”任务的基础上,对HDFS来说,请求读取整个数据集要比读取一条记录更加高效。如果要处理一些用户要求时间比较短的低延迟应用请求和频繁读取大量小文件,则HDFS不适合。

目前有许多关于对HDFS读写性能优化的研究,文献[4]中提出了一种在HDFS的数据节点增加本地缓存的方法,该方法虽然缩短了数据读取的时间,但是每次读取数据时都必须访问缓存列表,同时每个数据节点都要维护一个缓存列表,缓存的数据块是分散的,可能会出现多个副本都缓存的情况,造成节点内存空间的浪费。文献[5]中通过增加新的本地缓存系统架构,使用合适的缓存算法来调整和管理数据在本地文件系统和分布式文件系统中的存储位置以及数据队列,该方法降低了对HDFS文件系统的频繁访问,在一定程度上减轻了主节点(NameNode)的负载。文献[6]针对小文件的读取问题提出了一个基于关系数据库的小文件合并策略,通过获取存储在数据库的元数据信息,直接以流式的方式读取小文件,并采取节点负载均衡策略,降低NameNode节点的内存消耗。

本文针对HDFS频繁访问海量小文件时效率低的问题, 借鉴HDFS中的集中式缓存管理机制,提出了一种基于集中式管理的缓存优化方案。通过定义小文件,对缓存文件进行集中式管理;为保持缓存数据的一致性采用了一种新的一致性管理策略;并对其进行了缓存读取性能的测试,实验证明本文提出的方案很好地解决了HDFS频繁读取海量小文件的问题,提高了文件的读取效率。

1总体架构

本文所提出的一种基于集中式管理的缓存优化方案遵循以下原则:保持原始框架;本文提出的优化方案是在已有的分布式文件系统的基础上,通过集中式的管理对小文件的读取进行优化,而不是提供一个新的hdfs框架,因此不需要对hdfs的存储框架和源码做任何的改动。

本文提出的一种基于集中式管理的缓存优化读取方案主要由3个部分组成,即客户端(Client)、主节点(NameNode)、数据节点(DataNode),如图1所示。其中Hadoop集群的组成部分:主节点和数据节点对该缓存优化方案中的客户端用户来说是透明的,它在该架构中是为客户端用户提供一系列相关的服务。客户端通过RPC协议[7]分别与NameNode和DataNode节点进行通信,完成对数据的读写操作。本文在集群客户端内设计并实现了缓存控制模块,其中缓存控制模块由缓存读取、 缓存数据一致性控制部分组成。对NameNode和DataNode节点来说,因为客户端需要控制缓存文件和完成对缓存文件的各种相关操作,所以在提出的缓存优化读取方案是对客户端进行了扩展。

图1 基于集中式管理的缓存优化框架设计

2缓存优化方案的实现

2.1缓存读取模块

如图2所示,本文通过设计一种基于集中式管理的缓存读取模块来处理频繁访问小文件的操作,当客户端Client向集群中的NameNode节点申请读取数据文件时,总体可以概括为以下4个步骤:

1)Client获得待读取的数据文件信息,判断该文件是否位于缓存中。

2)若该文件已缓存,那么直接与DataNode通信,读取数据文件。

3)若该文件不在缓存列表中,则判断是否可以缓存该文件,其中缓存的条件为小于1M的小文件;当满足缓存条件时,进行缓存操作,然后读取缓存数据文件,否则直接读取数据文件。

4)本文中使用的缓存替换算法为LRU[8](Least Recently Used)缓存替换算法。具体流程如图2所示。

图2 缓存流程图

已缓存的数据文件元信息通过集中式管理的方式存储到客户端用户的缓存模块中,即缓存列表中,以此实现对已缓存数据的集中式管理。通常认为大小在1 Mbyte以内的文件称为小文件,因此本文将缓存文件的阈值设置为1 Mbyte。

2.2缓存替换与数据一致性模块

在hadoop的集中式缓存管理中,没有集成和使用任何的缓存替换算法,如果缓存空间已满或者删除缓存操作时,需要手动进行。

缓存读取缓存模块维护了一个缓存列表,其中缓存列表中缓存的是缓存数据文件在hdfs中的存储路径和NameNode中所对应的缓存管理(cachemanager)信息。缓存模块记录了所有被更改过的缓存项,这些缓存项按照LRU缓存替换算法进行排列,当客户端读取的数据文件被缓存时,缓存列表就被命中,每次对缓存列表中的缓存内容引用,缓存列表都会进行一次更新,即将引用的缓存项移至缓存列表的表头。当缓存空间已满时,采用LRU缓存替换算法进行缓存替换。

数据一致性[9]的实现,缓存中的数据可能会因为用户的操作而出现与低速实体数据不一致的情况,为了使缓存数据与低速实体数据保持一致性,一般情况下需要定期地将缓存中的数据与低速实体中的数据进行同步。在本文中,由于hadoop系统中的DataNode会向NameNode定期发送heartbeat RPC用于表明节点的状态,同时DataNode还会向NameNode定期发送block report和cache block用于同步block和cache的状态;因此hadoop系统本身具有数据一致性和数据持久化的特性,所以在本文所提出的方案中,数据一致性只需要考虑客户端用户维护的缓存列表与NameNode节点中的cachemanager的数据一致性即可。本文提出的策略是:

客户端定期获取cachemanager中的缓存项,与客户端维护的缓存列表进行比较,cachemanager与缓存列表中的缓存项不一致,大概可以分为以下两种情况:

1)缓存列表中存在,但是cachemanager中没有缓存该数据文件,那么删除缓存列表中的缓存项;

2)cachemanager中已缓存该数据项,但是缓存列表中没有该缓存项,那么移除cachemanager中的已缓存项。

3实验与分析

本实验在操作系统为Centos6.6的64位华硕服务器下实现,硬件环境如下:CPU为2个6核Inter Xeon CPU E5-2620处理器,内存大小为64 Gbyte,通过虚拟化技术搭建hadoop集群,集群中设置1个NameNode节点和3个DataNode节点,网络环境为10.0.0.1网段的局域网,软件环境为hadoop-2.5.0。测试文件为小于1 Mbyte的小文件。

为了验证该缓存方案的高效性,测试在改进前后的hdfs框架下小文件的读取能力和响应时间,即NameNode响应数据块请求到客户端读取数据完毕的时间。其中比较结果如图3所示。

图3 文件读取响应时间

由图3可知,该缓存优化读取方案与原始的小文件读取响应时间相比,具有明显的优势,文件响应时间大大缩短。当读取的小文件被缓存命中时,客户端可以直接从数据节点内存中读取数据块,而且对于memory-locality的DFSClient ,checksum检验其完整性已经完成,那么通过zero-copy直接读内存中的block。

从图4中可以得出,随着缓存数据文件的增大,文件读取响应时间也在增加;当缓存副本数由replication=1增加到replication=2时,读取响应时间大大缩短;且随着缓存数据文件的不断增大,文件读取响应时间同样发生变化,即replication=1和replication=2的文件读取响应时间的差值越来越大,replication=2到replication=3的文件读取响应时间差值变化不明显。

图4 缓存副本数与数据响应时间的关系

4结论

本文针对HDFS频繁访问海量小文件的读取时延和频繁磁盘IO的操作问题提出了一种基于集中式管理的缓存读取优化方案,在集中式管理缓存的基础上,增加LRU缓存替换算法,通过定时刷新缓存管理列表达到保持数据一致性的目的。在缓存读取模块增加缓存预判条件,通过该方法可以避免大文件数据被缓存,不仅使该缓存方案更好地服务于海量小文件,还可以充分利用集中式缓存管理的特性。通过实验表明,该缓存优化方案可以减少小文件的访问时间,提高了海量小文件的读取效率。

本文的进一步的工作,集中式缓存管理目前还没有与YARN结构整合,下一步的研究工作希望可以解决集中式缓存与yarn的整合,减少对NameNode的频繁访问。

参考文献:

[1]朱珠.基于Hadoop的海量数据处理模型研究和应用[D].北京:北京邮电大学,2008.

[2]SHVACHKO K,KUANG H,RADIA S, et al.The hadoop distributed file system[C]//Proc. IEEE 26th Symposium on Mass Storage Systems and Technologies (MSST).[S.l.]:IEEE,2010.

[3]陆嘉恒.Hadoop实战[M].北京:机械工业出版社,2011.

[4]赵婧,王洪波,程时端. HDFS数据节点本地缓存的设计与实现[EB/OL].[2015-07-05].http://www.paper.edu.cn/releasepaper/content/201112-98.

[5]YOON S D, JUNG I Y, KIM K H, et al. Improving HDFS performance using local caching system[C]//Proc.IEEE 2013 Second International Conference on Future Generation Communication Technology (FGCT). [S.l.]:IEEE,2013:153-156.

[6]张海,马建红. 基于HDFS的小文件存储与读取优化策略[J].计算机系统应用,2014,23(5):167-171.

[7]WANG B, CHEN L. Analysis and application of mechanism of Hadoop RPC communiucation[J]. Journal of Xi′an university of posts & telecommunications, 2012(6):80-83.

[8]周程. 视频点播系统缓存算法研究[D]. 杭州:浙江大学,2011.

[9]陈莉君,康华. Liunx操作系统原理与应用[M]. 北京:清华大学出版社,2012.

王丽娟(1991— ),女,硕士生,主研云计算与数据挖掘;

蔡晓东(1971— ),硕士生导师,主要研究方向为图像、视频处理;

王迪(1988— ),硕士生,主研人脸识别与检测;

赵勤鲁(1989— ),硕士生,主研数据挖掘。

责任编辑:闫雯雯

Optimizational scheme of cache based on centralized management

WANG Lijuan, CAI Xiaodong, WANG Di, ZHAO Qinlu

(SchoolofInformationandCommunication,GuilinUniversityofElectronicTechnology,GuangxiGuilin541004,China)

Abstract:In the form of streaming to read and write large files is very efficient in HDFS distributed file system, but the efficiency on reading and writing especially frequent operating of the mass of small files is relatively low. To solve such problems, a cache optimizational scheme based on centralized management is proposed, in order to improve the mass small file read performance. The scheme by centralized management cached small files, using a new data consistency management mechanism. And the experimental results show that the proposed scheme effectively improves the efficiency of small file read, reduces the small file access delay.

Key words:HDFS;centralized management;cache optimization;consistency management

中图分类号:TP391

文献标志码:A

DOI:10.16280/j.videoe.2016.05.022

基金项目:国家科技支撑计划项目(2014BAK11B02);广西科学研究与技术开发计划项目(桂科攻14122007-5);桂林电子科技大学研究生教育创新计划资助项目(YJCXS201521)

作者简介:

收稿日期:2015-07-30

文献引用格式:王丽娟,蔡晓东,王迪,等. 基于集中式管理的缓存优化方案[J].电视技术,2016,40(5):101-104.

WANG L J,CAI X D,WANG D,et al. Optimizational scheme of cache based on centralized management [J].Video engineering,2016,40(5):101-104.