[发明专利]基于ARC替换算法的HDFS小文件缓存管理方法在审
申请号: | 201710664858.1 | 申请日: | 2017-08-07 |
公开(公告)号: | CN107368608A | 公开(公告)日: | 2017-11-21 |
发明(设计)人: | 姚英彪;陈功;许晓荣;刘兆霆;冯维 | 申请(专利权)人: | 杭州电子科技大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30;G06F12/0813 |
代理公司: | 杭州千克知识产权代理有限公司33246 | 代理人: | 周希良 |
地址: | 310018 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 arc 替换 算法 hdfs 文件 缓存 管理 方法 | ||
技术领域
本发明涉及计算机HDFS分布式文件系统技术领域,特别涉及HDFS中一种小文件的缓存管理方法。
背景技术
伴随着移动互联网技术的高速发展以及电子商务的蓬勃发展,以微博、微信为代表的自媒体应用、以及淘宝为代表的电商网站等,迅速成为Web应用的排头兵。这些自媒体应用、社交分享平台的用户从原来的信息接收者转变成为了信息的提供者,他们随时随地都在向平台上传图片等各种文件信息。由此造成的一个情况便是:网络上产生了大量的小文件,并且这些小文件迅速充斥了整个互联网。在海量小文件产生的科学计算和互联网应用场景中,如何高效访问小文件成为HDFS面临的一个巨大挑战。
HDFS是Hadoop的主要存储框架,它采用主从结构,由名字节点(Namenode)和数据节点(Datanode)组成。名字节点管理文件系统的命名空间,数据节点负责实际数据块的存储。HDFS的数据节点在配置存储目录时通常将数据配置在硬盘中,客户端通过访问硬盘获取数据。然而,在海量的小文件中存在着大量的“热点数据”,这些数据会被各应用频繁地访问,因此,如果能够对这类“热点数据”进行缓存处理,将大大减少HDFS反复读取硬盘所带来的巨大时间消耗。针对缓存替换算法主要有两种:基于时间局部性的缓存管理算法和基于访问频率的缓存管理算法。基于时间局部性的LRU类算法重点关注访问数据的近期特性,每次置换的都是最久未访问的数据块。而基于访问频率的LFU类算法则重点关注访问数据的频率特性,每次置换的都是频率最小的数据块,保存了很多高频数据项。但是,对于LRU类算法,当顺序读取大量的数据时,这些数据会充满整个缓存空间,当缓存被存满后,若想放入新的缓存数据,则需要淘汰最近最少使用的数据,在这种情况下,缓存中存放的永远是新读入的数据,而不是真正需要缓存的数据。同时,在LFU类算法中,新的数据只要不被频繁读取就会被淘汰,在实际应用中也存在很大的不足。为了吸收两种算法中的有益想法,很多算法在时间局部性和访问频率两个特性之间寻求平衡点,ARC(Adjustable Replacement Cache)替换算法是其中的佼佼者,它也可以用于HDFS的小文件管理。因此,本发明公布了一种基于ARC替换算法的HDFS小文件管理方法,ARC能够利用LRU和LFU的优点,避免它们的缺点,具体的ARC实现过程可以参见文献《ARC:a self-tuning,low overhead replacement cache》。
发明内容
本发明解决HDFS分布式文件系统以流式的方式访问大文件时效率很高,但是当海量小文件的访问特别是频繁访问重复的小文件时效率比较低的问题。
为了解决上述技术问题,本发明采用如下技术方案:
基于ARC替换算法的HDFS小文件缓存管理方法,首先在数据节点上使用tmpfs构建数据缓存区,其中,tmpfs是Linux/Unix系统上的一种基于内存的文件系统。在Namenode端集成两个模块:判断模块和决策模块,在Datanode集成一个执行模块。其次,将判断模块、决策模块和执行模块作为三个阶段对小文件进行缓存替换操作。最后,当需要缓存小文件数据块时,Namenode将与数据块存储的Datanode进行通信,并发出指令将数据块缓存在数据节点的高速缓存中。
所述判断模块首先判断请求信息类型,如果是访问请求,再判断访问文件大小是否小于阈值Tf,如果是,则将该文件视为小文件,并使用决策模块的ARC缓存替换算法进行处理,否则不做缓存处理;如果是创建、删除信息,将直接交给执行模块处理。
在文件的访问过程中,所请求小文件如果存储在缓存中,即为缓存命中,否则未能命中,然后根据访问情况及缓存空间使用情况按照ARC算法进行文件的缓存替换操作。
所述决策模块使用一个缓存列表来管理缓存区的文件,并根据缓存列表来选择要替换的缓存文件对象,再由执行模块按照决策模块的指令进行文件缓存替换操作。
缓存管理方法可分为客户端、名字节点和数据节点三个部分,客户端通过RPC协议分别与名字节点和数据节点进行通信,完成对数据的访问操作。
当客户端向集群提交I/O请求后,Namenode可将请求分为三种类型:访问请求、创建请求和删除请求。
当客户端向集群中的名字节点申请访问数据时,包括以下3个步骤:
1)名字节点获得待访问的数据文件信息,判断该文件是否位于缓存中;
2)若该文件已缓存,那么直接读取数据节点上缓存的文件数据,并使用ARC算法更新缓存管理,此时为一次缓存命中,缓存中的数据将提供访问请求服务;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州电子科技大学,未经杭州电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710664858.1/2.html,转载请声明来源钻瓜专利网。