CN105631010A - 一种基于hdfs小文件存储的优化方法 - Google Patents
一种基于hdfs小文件存储的优化方法 Download PDFInfo
- Publication number
- CN105631010A CN105631010A CN201511004711.7A CN201511004711A CN105631010A CN 105631010 A CN105631010 A CN 105631010A CN 201511004711 A CN201511004711 A CN 201511004711A CN 105631010 A CN105631010 A CN 105631010A
- Authority
- CN
- China
- Prior art keywords
- small documents
- user
- hdfs
- file
- metadata
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于HDFS小文件存储的优化方法,包括以下步骤:S1、创建一个用于存放用户空间的元数据信息的用户空间元数据服务器;S2、为每一个用户创建一个用于存放该用户所有小文件的用户文件;S3、定义一种元数据结构,用于记录每个用户的所有小文件的详细元数据信息,该元数据结构记录了小文件在用户文件中的偏移值及该小文件的大小;S4、通过元数据结构与用户小文件之间的对应关系,对用户小文件进行管理。本发明引入了一个用于存放用户空间的元数据信息的用户空间元数据服务器,通过元数据结构与用户小文件之间的对应关系来对小文件进行操作,能够提高HDFS系统的存储和处理小文件的性能。
Description
技术领域
本发明属于分布式文件系统性能优化领域,特别涉及一种基于HDFS小文件存储的优化方法。
背景技术
随着信息量的大规模增长,企业用于存储数据的投入也越来越大,迫切需要新的存储解决方案来改变现状,节约存储成本,减少存储投入,云存储应运而生。云计算雏形就是Google为变废为宝而设计产生的,因此,云存储架构有其得天独厚的优势,是传统集中式存储所无法取代的。在当前数据大规模增长的形式下,云存储相对于传统的存储模式所具有的优势包括降低成本、按需分配、可扩展性强、灵活性强、容错性强、数据迁移方便等。
Hadoop是Apache的一个开源项目,目的是可以建立运行在廉价硬件设备的基础上的稳定的、可扩展的分布式计算架构。其中Hadoop文件系统HDFS(HadoopDistributedFileSystem)是Hadoop子项目之一,它作为Google公司的分布式文件系统GFS(GoogleFileSystem)的开源实现,为各大机构和公司建设云存储解决方案提供了参考,是当前研究云计算与云存储相关领域的热点。
现有的HDFS采用的是主从架构,一个HDFS集群由一个NameNode节点和大量DataNode节点组成。其所有的命名空间和元数据信息都是由NameNode节点来管理和维护的,客户端访问HDFS集群时,都是由NameNode节点来控制访问交互的。因此NameNode节点是整个集群的核心和关键。
NameNode节点中保存了整个系统的命名空间,其中有两大关键的元数据结构,包括文件名与块的映射,块与DataNode节点的映射,这些信息在集群启动后,都会加载到NameNode节点的内存空间中,每个文件都要对应一个元数据信息,在内存空间中占据一定的空间大小。如果整个HDFS应用于大量小文件存储的环境时,整个HDFS集群性能会大幅下降。
首先是因为大量小文件的存在,每个小文件都需要单独的元数据信息同其对应,每个元数据信息都在NameNode节点内存中占用了一定的存储空间,大约需要100字节左右,NameNode节点内存空间是有限的。因为小文件的数量在有的系统中是非常巨大的,随着小文件数量的增长,小文件元数据信息势必会造成NameNode节点的内存空间严重不足,从而造成极大的性能瓶颈。
另一方面,大量小文件的存在,也会对NameNode节点进行频繁的数据块读写请求,每写入一次小文件,就需要向NameNode节点请求一次数据块的分配,同NameNode节点频繁的交互会造成整个HDFS性能的下降。同时,小文件数据流由于其文件大小比较小,可能在传输实际文件数据的过程中花费的时间还要小于请求NameNode节点元数据信息、定位数据块所在的DataNode节点上花费的时间。因此HDFS并不适用于存储小文件。
发明内容
本发明的目的在于克服现有技术中在HDFS中存储大量的小文件存储会造成NameNode节点内存使用过多而造成性能降低的问题,提供一种通过元数据结构与用户小文件之间的对应关系来对小文件进行操作,能够提高HDFS系统的存储和处理小文件的性能的基于HDFS小文件存储的优化方法。
本发明的目的是通过以下技术方案来实现的:一种基于HDFS小文件存储的优化方法,包括以下步骤:
S1、在原有HDFS架构的基础上,创建一个用于存放用户的元数据信息的用户空间元数据服务器;原有的HDFS的架构是不变的,其块的管理也保持不变,HDFS中的NameNode节点和DataNode节点功能和结构不变,用户的文件以多个块存储在DataNode节点上,块的分配和维护由NameNode节点负责;
S2、在HDFS系统中为每一个用户创建一个用于存放该用户所有小文件的用户文件,该用户文件的文件名与用户ID是一一对应的;也就是说,用户上传的所有小文件合并成一个大文件存储在HDFS中;
S3、定义一种元数据结构,称为FBM(FileBlockMapping),该元数据结构存放在用户空间元数据服务器上,用于记录每个用户的所有小文件的详细元数据信息,该元数据结构记录了小文件在用户文件中的偏移值及该小文件的大小;
S4、通过元数据结构与用户小文件之间的对应关系,对用户小文件进行管理。
进一步地,所述的步骤S4中对新用户小文件进行管理具体包括写小文件、读小文件、删除小文件和修改小文件。
进一步地,所述的写小文件具体实现方法为:当用户需要在HDFS添加一个小文件时,应用服务器获取该用户的元数据信息,应用服务器获知需添加的小文件存储大小,并将小文件大小作为新添加小文件的偏移值;然后,将新的小文件的用户元数据信息、该小文件的偏移值和该小文件在数据块中的起始位置写入元数据结构中;最后,应用服务器获取HDFS系统上该用户文件的输出流,以追加的方式将新添加的小文件写入到该用户文件中。
进一步地,所述的读小文件具体实现方法为:当用户读小文件时,先向用户空间元数据服务器发请求,根据将要读的文件名获取该小文件相关的元数据结构信息,根据所读小文件的偏移值和文件大小,获取HDFS中用户文件的输入流,从而将文件读出。
进一步地,所述的删除小文件具体实现方法为:在FBM元数据结构中置该小文件的元数据信息为删除标记,不删除HDFS原有小文件的数据。
进一步地,所述的用户修改小文件具体实现方法为:删除原有小文件,然后在数据块的尾部增加新的小文件。
本发明的有益效果是:
1、本发明在原有的HDFS架构的基础上,引入了一个用于存放用户空间的元数据信息的用户空间元数据服务器,并在用户空间元数据服务器中建立用于记录每个用户的所有小文件的详细元数据信息的元数据结构,通过元数据结构与用户小文件之间的对应关系来对小文件进行写入、读取、删除和修改等操作,避免了对用户小文件进行存储管理的时候同NameNode节点的频繁交互,能够提高HDFS系统的存储和处理小文件的性能;
2、原有的HDFS的架构是不变的,其块的管理也保持不变,只需增加用户空间元数据服务器,HDFS中的NameNode节点和DataNode节点功能和结构不变,用户的文件以多个块存储在DataNode节点上,块的分配和维护由NameNode节点负责,系统结构简单,易于实现,便于推广使用。
附图说明
图1为本发明的小文件存储的优化方法的流程图;
图2为本发明的HDFS系统架构;
图3为本发明的元数据结构与用户小文件之间的对应关系。
具体实施方式
云存储是由云计算衍生出来的。通常,云存储一般包含了两方面的含义:一方面云存储是指云计算的存储部分,也就是说云计算的运算过程中所需要的资源和信息存储的部分;另一方面是指一种服务形式,云存储服务提供商提供设备或存储空间,用户通过使用浏览器或其他客户端使用该服务,免去本地存储开销。本申请所述的云存储属于后者,确切的说是云存储服务。
下面结合附图进一步说明本发明的技术方案。
如图1所示,本发明的一种基于HDFS小文件存储的优化方法,包括以下步骤:
S1、在原有HDFS架构的基础上,创建一个用于存放用户的元数据信息的用户空间元数据服务器;原有的HDFS的架构是不变的,其块的管理也保持不变,其架构如图2所示,HDFS中的NameNode节点和DataNode节点功能和结构不变,用户的文件以多个块存储在DataNode节点上,块的分配和维护由NameNode节点负责;
S2、在HDFS系统中为每一个用户创建一个用于存放该用户所有小文件的用户文件,该用户文件的文件名与用户ID是一一对应的;也就是说,用户上传的所有小文件合并成一个大文件存储在HDFS中;
S3、定义一种元数据结构,称为FBM(FileBlockMapping),该元数据结构存放在用户空间元数据服务器上,用于记录每个用户的所有小文件的详细元数据信息,该元数据结构记录了小文件在用户文件中的偏移值及该小文件的大小,偏移值就是文件在一个数据块中,相对于数据块起始位置的相对位置;其对应关系如图3所示;
S4、通过元数据结构与用户小文件之间的对应关系,对用户小文件进行管理。
进一步地,所述的步骤S4中对新用户小文件进行管理具体包括写小文件、读小文件、删除小文件和修改小文件。
进一步地,所述的写小文件具体实现方法为:当用户需要在HDFS添加一个小文件时,应用服务器获取该用户的元数据信息,应用服务器获知需添加的小文件存储大小,并将小文件大小作为新添加小文件的偏移值;然后,将新的小文件的用户元数据信息、该小文件的偏移值和该小文件在数据块中的起始位置写入元数据结构中;最后,应用服务器获取HDFS系统上该用户文件的输出流,以追加的方式将新添加的小文件写入到该用户文件中。
进一步地,所述的读小文件具体实现方法为:当用户读小文件时,先向用户空间元数据服务器发请求,根据将要读的文件名获取该小文件相关的元数据结构信息,根据所读小文件的偏移值和文件大小,获取HDFS中用户文件的输入流,从而将文件读出。
进一步地,所述的删除小文件具体实现方法为:在FBM元数据结构中置该小文件的元数据信息为删除标记,不删除HDFS原有小文件的数据。
进一步地,所述的用户修改小文件具体实现方法为:删除原有小文件,然后在数据块的尾部增加新的小文件。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
Claims (6)
1.一种基于HDFS小文件存储的优化方法,其特征在于,包括以下步骤:
S1、创建一个用于存放用户的元数据信息的用户空间元数据服务器;
S2、为每一个用户创建一个用于存放该用户所有小文件的用户文件,该用户文件的文件名与用户ID是一一对应的;
S3、定义一种元数据结构,该元数据结构存放在用户空间元数据服务器上,用于记录每个用户的所有小文件的详细元数据信息,该元数据结构记录了小文件在用户文件中的偏移值及该小文件的大小;
S4、通过元数据结构与用户小文件之间的对应关系,对用户小文件进行管理。
2.根据权利要求1所述的基于HDFS小文件存储的优化方法,其特征在于,所述的步骤S4中对新用户小文件进行管理具体包括写小文件、读小文件、删除小文件和修改小文件。
3.根据权利要求2所述的基于HDFS小文件存储的优化方法,其特征在于,所述的写小文件具体实现方法为:当用户需要在HDFS添加一个小文件时,应用服务器获取该用户的元数据信息,应用服务器获知需添加的小文件存储大小,并将小文件大小作为新添加小文件的偏移值;然后,将新的小文件的用户元数据信息、该小文件的偏移值和该小文件在数据块中的起始位置写入元数据结构中;最后,应用服务器获取HDFS系统上该用户文件的输出流,以追加的方式将新添加的小文件写入到该用户文件中。
4.根据权利要求2所述的基于HDFS小文件存储的优化方法,其特征在于,所述的读小文件具体实现方法为:当用户读小文件时,先向用户空间元数据服务器发请求,根据将要读的文件名获取该小文件相关的元数据结构信息,根据所读小文件的偏移值和文件大小,获取HDFS中用户文件的输入流,从而将文件读出。
5.根据权利要求2所述的基于HDFS小文件存储的优化方法,其特征在于,所述的删除小文件具体实现方法为:在元数据结构中置该小文件的元数据信息为删除标记,不删除HDFS原有小文件的数据。
6.根据权利要求2所述的基于HDFS小文件存储的优化方法,其特征在于,所述的用户修改小文件具体实现方法为:删除原有小文件,然后在数据块的尾部增加新的小文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511004711.7A CN105631010A (zh) | 2015-12-29 | 2015-12-29 | 一种基于hdfs小文件存储的优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511004711.7A CN105631010A (zh) | 2015-12-29 | 2015-12-29 | 一种基于hdfs小文件存储的优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105631010A true CN105631010A (zh) | 2016-06-01 |
Family
ID=56045943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511004711.7A Pending CN105631010A (zh) | 2015-12-29 | 2015-12-29 | 一种基于hdfs小文件存储的优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105631010A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106909651A (zh) * | 2017-02-23 | 2017-06-30 | 郑州云海信息技术有限公司 | 一种基于hdfs小文件写入和读取的方法 |
CN107766374A (zh) * | 2016-08-19 | 2018-03-06 | 上海凯翔信息科技有限公司 | 一种海量小文件存储读取的优化方法和系统 |
CN108932287A (zh) * | 2018-05-22 | 2018-12-04 | 广东技术师范学院 | 一种基于Hadoop的海量小文件写入方法 |
CN109634914A (zh) * | 2018-11-21 | 2019-04-16 | 华侨大学 | 一种对讲语音小文件整存散分和分叉检索的优化方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577123A (zh) * | 2013-11-12 | 2014-02-12 | 河海大学 | 一种基于hdfs的小文件优化存储方法 |
CN103856567A (zh) * | 2014-03-26 | 2014-06-11 | 西安电子科技大学 | 基于Hadoop分布式文件系统的小文件存储方法 |
CN104133882A (zh) * | 2014-07-28 | 2014-11-05 | 四川大学 | 一种基于hdfs的小文件处理方法 |
CN104536959A (zh) * | 2014-10-16 | 2015-04-22 | 南京邮电大学 | 一种Hadoop存取海量小文件的优化方法 |
-
2015
- 2015-12-29 CN CN201511004711.7A patent/CN105631010A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577123A (zh) * | 2013-11-12 | 2014-02-12 | 河海大学 | 一种基于hdfs的小文件优化存储方法 |
CN103856567A (zh) * | 2014-03-26 | 2014-06-11 | 西安电子科技大学 | 基于Hadoop分布式文件系统的小文件存储方法 |
CN104133882A (zh) * | 2014-07-28 | 2014-11-05 | 四川大学 | 一种基于hdfs的小文件处理方法 |
CN104536959A (zh) * | 2014-10-16 | 2015-04-22 | 南京邮电大学 | 一种Hadoop存取海量小文件的优化方法 |
Non-Patent Citations (1)
Title |
---|
张海等: "基于HDFS的小文件存储与读取优化策略", 《计算机应用》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766374A (zh) * | 2016-08-19 | 2018-03-06 | 上海凯翔信息科技有限公司 | 一种海量小文件存储读取的优化方法和系统 |
CN106909651A (zh) * | 2017-02-23 | 2017-06-30 | 郑州云海信息技术有限公司 | 一种基于hdfs小文件写入和读取的方法 |
CN108932287A (zh) * | 2018-05-22 | 2018-12-04 | 广东技术师范学院 | 一种基于Hadoop的海量小文件写入方法 |
CN109634914A (zh) * | 2018-11-21 | 2019-04-16 | 华侨大学 | 一种对讲语音小文件整存散分和分叉检索的优化方法 |
CN109634914B (zh) * | 2018-11-21 | 2021-11-30 | 华侨大学 | 一种对讲语音小文件整存散分和分叉检索的优化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103020315B (zh) | 一种基于主从分布式文件系统的海量小文件存储方法 | |
US10459898B2 (en) | Configurable-capacity time-series tables | |
CN104731921B (zh) | Hadoop分布式文件系统针对日志型小文件的存储和处理方法 | |
US8200633B2 (en) | Database backup and restore with integrated index reorganization | |
US8983967B2 (en) | Data storage system having mutable objects incorporating time | |
CN103577123B (zh) | 一种基于hdfs的小文件优化存储方法 | |
KR102564170B1 (ko) | 데이터 객체 저장 방법, 장치, 및 이를 이용한 컴퓨터 프로그램이 저장되는 컴퓨터 판독가능한 저장 매체 | |
CN104866497A (zh) | 分布式文件系统列式存储的元数据更新方法、装置、主机 | |
Khan et al. | SQL support over MongoDB using metadata | |
CN105868286A (zh) | 基于分布式文件系统小文件合并的并行追加方法及系统 | |
CN111427847B (zh) | 面向用户自定义元数据的索引与查询方法和系统 | |
CN104331453A (zh) | 一种分布式文件系统及分布式文件系统的构建方法 | |
CN103473239A (zh) | 一种非关系型数据库数据更新方法和装置 | |
CN103559229A (zh) | 基于MapFile的小文件管理服务SFMS系统及其使用方法 | |
PH12014501762B1 (en) | Method and apparatus for file storage | |
CN105631010A (zh) | 一种基于hdfs小文件存储的优化方法 | |
CN107832423A (zh) | 一种用于分布式文件系统的文件读写方法 | |
CN105608126A (zh) | 一种建立海量数据库二级索引的方法和装置 | |
CN102281312A (zh) | 一种数据加载方法、系统和数据处理方法、系统 | |
CN103853612A (zh) | 一种基于分布式存储下的数字家庭内容读数据的方法 | |
CN114466083A (zh) | 支持协议互通的数据存储系统 | |
CN104750815B (zh) | 一种基于HBase的Lob数据的存储方法及装置 | |
CN104516945A (zh) | 一种基于关系数据库的hdfs元数据存储方法 | |
US11321374B2 (en) | External storage of unstructured database objects | |
Gupta et al. | Efficient query analysis and performance evaluation of the NoSQL data store for bigdata |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160601 |
|
RJ01 | Rejection of invention patent application after publication |