[发明专利]分布式存储方法和设备有效
申请号: | 201610083819.8 | 申请日: | 2016-02-06 |
公开(公告)号: | CN107045422B | 公开(公告)日: | 2020-12-01 |
发明(设计)人: | 张勇;蔡艺聪;武鸣 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F3/06 | 分类号: | G06F3/06 |
代理公司: | 北京龙双利达知识产权代理有限公司 11329 | 代理人: | 王君;刘爱平 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 分布式 存储 方法 设备 | ||
本发明实施例提供了一种分布式存储方法,该方法应用于分布式存储系统,系统包括文件系统、第一线程服务和第二线程服务,第一线程服务按照第一规则将文件系统中的M个小文件离线合并成一个第一文件,小文件小于预定字节,M为大于1的整数。本发明实施例的分布式存储方法和设备,通过第一线程服务和第二线程服务,在文件系统上的存储小文件时,能够大幅降低名字节点的内存开销和数据节点的句柄开销,并且能够提高映射归约的计算效率,从而能够提高存储小文件的效率。
技术领域
本发明涉及计算机领域,尤其涉及计算机技术中的分布式存储方法和设备。
背景技术
分布式计算(Hadoop)分布式文件系统(Hadoop Distributed File System,简称“HDFS”)是一个以块的形式存储文件的分布式文件系统,其中,名字节点(NameNode)用于存储文件的元数据,包括目录树的结构和文件存储的快信息,数据节点(DataNode)用于存储数据块。
小文件是指文件的大小小于一个块的大小的文件。HDFS是基于Google的谷歌文件系统(Google File System,简称“GFS”)论文设计的,目的是存储大文件。目前,在HDFS中,块大小的默认值128MB,过去旧版本的块大小的默认值是64MB,块大小的趋势是越来越大。然而,HDFS在大量小文件的场景下,并不能很好地工作。
在HDFS中,小文件存储的问题主要是NameNode的内存管理问题和映射归约(MapReduce,简称“MR”)的性能问题。
一方面,NameNode的内存管理问题具体在于:从经验上来看,HDFS NameNode中的每一个文件,目录和块对象占用的内存大小是150个字节。如果有一千万个文件,每个文件使用的一个块,即每个文件的大小小于一个块,则NameNode将使用大约3GB的内存。如果扩大系统规模,就会远远超出这一水平,因而需要硬件支撑和软件优化,带来新的问题。
另外,HDFS不是针对小文件设计的,因而,不能有效地支持访问小文件。HDFS主要是用来输入输出流式的大型文件的访问,读取小文件通常会导致从一个DataNode到另一个DataNode的大量地查找和检索,是一个低效率的数据访问模式。
另一方面,MR的性能问题具体在于:
MR任务是先执行映射再执行归约,映射的任务数是根据文件数和块数目综合得来的,如果我们每个文件的大小都小于块大小,那对每个文件都有一个映射任务(task),这样每个task读取的文件大小都很小,造成task的启停时间远远大于task计算执行的时间,造成性能上的退化。
如果将小文件合成大文件,每个映射任务处理一个或多个大文件,则每个task就能处理很多小文件。
因此,综合以上两个方面,在HDFS中,大量存储小文件时,存在名字节点的内存开销过大以及映射归约的计算性能较低的问题。
发明内容
本发明实施例提供了一种分布式存储方法,以解决在文件系统中存储小文件时,名字节点的内存开销大以及映射归约的计算性能较低的问题。
第一方面,本发明实施例提供了一种分布式存储方法,该方法应用于分布式存储系统,系统包括文件系统、第一线程服务和第二线程服务,
第一线程服务按照第一规则将文件系统中的M个小文件离线合并成一个第一文件,小文件小于预定字节,M为大于1的整数;
第一线程服务在离线合并的过程中生成M个元数据,M个元数据用于分别指示M个小文件在第一文件中的位置;
第二线程服务将M个元数据加载到元数据集合中,元数据集合包括任意离线合并过程中产生的元数据;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610083819.8/2.html,转载请声明来源钻瓜专利网。