CN103500089A - 一种适应于Mapreduce计算模型的小文件存储*** - Google Patents
一种适应于Mapreduce计算模型的小文件存储*** Download PDFInfo
- Publication number
- CN103500089A CN103500089A CN201310430402.0A CN201310430402A CN103500089A CN 103500089 A CN103500089 A CN 103500089A CN 201310430402 A CN201310430402 A CN 201310430402A CN 103500089 A CN103500089 A CN 103500089A
- Authority
- CN
- China
- Prior art keywords
- small documents
- file
- mapreduce
- hadoop
- small
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明设计了Hadoop上HDFS的在线将小文件合并到大文件的方式,如图1,减少了MaprReduce中启动的map的数量。本发明主要提供了一种新的上传小文件的接口,同时提供了对应的输入格式类,通过使用本发明提供的上传接口和输入类,能够完成这种在线的小文件存储和处理。
Description
技术领域
本发明涉及MapReduce和小文件存储领域,具体涉及一种适应于MapReduce计算模型的小文件存储***。
背景技术
Hadoop是一个分布式的基础架构,由Doug Cutting及其所在的Yahoo的开发小组开发。该开发小组在Google发表的关于GFS和MapReduce的论文的思路下,用Java语言实现了一个类似于Google的MapReduce的实现,即Hadoop,以及一个分布式文件***HDFS。
小文件问题逐渐在学术界和工业界引起了一些关注。著名社交网站Facebook存储了2600亿张图片,容量超过20PB,这些文件绝大部分都小于64MB。互联网上访问的数据多为高访问频率的小文件。
GFS技术领导人Sean Quinlan在GFS访谈中提到BigTable的其中一个应用场景即面向小文件。著名Hadoop应用公司Cloudera发布的关于Small File Problem的报告也指出Hadoop在处理海量小文件方面存在问题。
处理这样的小文件给HDFS的性能和扩展性带来了严重的问题。第一,海量小文件带来了大量的元数据,因为HDFS中的每个目录和文件的元数据信息都存放在名称节点的内存中,如果***中存在大量的小文件,则无疑会降低整个存储***的存储效率和存储能力。例如,假如***中有1千万个小文件,每个小文件需占用一个block,则Namenode大约需要3G空间,因此Namenode的内存容量严重制约了集群的扩展。第二,访问大量小文件的速度远远小于访问几个大文件的速度,因为如果访问大量的小文件,需要不断地从一个DataNode跳到另一个DataNote,这是一种低效的数据访问模式。第三,访问大文件与访问小文件使用的map任务数相差很大,例如,一个1G的文件分成16个64MB的块,和10000个100KB(共1GB)的文件,则这10000个文件每一个都需要一个map,最终Mapreduce作业时间可能会比一个1G的作业时间长数百倍。尽管Hadoop使用JVM重用等,但仍不能很好解决这些问题。
Hadoop本身提供了Hadoop archive(HAR)用来将小文件合并成大文件。HAR文件是通过HDFS上构建一个层次化的文件***来工作的,一个HAR文件是通过Hadoop的archive命令进行创建,这个命令实际运行了一个Mapreudce任务来将小文件打包成HAR文件。
发明内容
本发明设计了一种在线的将小文件合并存储的方法,并提供了适用于MapReduce计算过程的。
首先,在Hadoop中,存放小文件的目录下上传第一个文件到Hadoop时,***会创建一个大小为64MB的大文件(称之为块),其中从文件偏移量为0处开始写入该小文件的内容,并在块的末尾写入块当前存放的小文件数目计数1,并写入该小文件的文件名,该小文件在块内的偏移量和该小文件的大小。随后在该目录下上传文件时,将该小文件的内容写入块内当前空白的开头,并将该小文件的文件名,该小文件在块内的偏移量和该小文件的大小写入空白的结尾,并更新块末尾的小文件数目计数。换言之,小文件的内容从块的开头开始依次存放,小文件在块内的检索信息从块的结尾依次存放,更新小文件数目计数。
存放方式如图1.
MapReduce读取该小文件时,首先分析文件头部的这些小文件的信息,然后组织成key-value对,在map中处理。所以需要实现针对该合并方案的中的小文件读取输入类。
Hadoop中的MapReduce框架依赖InputFormat提供数据,依赖OutputFormat输出数据;每一个MapReduce程序都需要通过这些类进行输入输出。Hadoop提供了一系列InputFormat和OutputFormat方便开发。如TextInputFormat用于读取纯文本文件,文件被分为一系列以LF或者CR结束的行,key是每一行的位置(偏移量,LongWritable类型),value是每一行的内容,Text类型。KeyValueTextInputFormat同样用于读取文件,如果行被分隔符(缺省是tab)分割为两部分,第一部分为key,剩下的部分为value;如果没有分隔符,整行作为key,value为空。SequenceFileInputFormat用于读取sequence file。sequence file是Hadoop用于存储数据自定义格式的binary文件。它有两个子类:SequenceFileAsBinaryInputFormat,将key和value以BytesWritable的类型读出;SequenceFileAsTextInputFormat,将key和value以Text的类型读出。
本发明中需要自定义输入类SmallBulkInputFormat用于从大块的文件中读取小文件并将每一个小文件作为一个key-value进行map操作(这种应用在大量图片处理等领域十分常见)。
附图说明
图1是块内小文件存放方式示意图。
具体实施方式
步骤1:改进HDFS读写小文件的流程。
Hadoop写小文件时,首先预先生成若干个64M的大块文件,然后在NameServer收到客户端写文件请求后,根据负载均衡策略,选择一个DataServer,接收此次写请求,并将这个DataServer的信息发给客户端,客户端调用改进的写入函数接口(跟原有的写入函 数接口实现相同,只是函数名不一致);DataServer收到这个写请求后,首先选择一个预分配的64M的文件,将写请求中小文件的内容写入该大文件,并在文件中记录该小文件的检索信息。
步骤2:提供新的输入类。
首先定义SmallBulkInputFormat继承自FileInputFormat,核心代码下:
步骤3:开发者使用新的输入类。
开发者使用新的写入接口函数来进行写入文件,并设置Job的输入格式为SmallBulkInputFormat类。
Claims (2)
1.在线的HDFS小文件存储,其特征在于在线存储小文件,而不是HAR方式的离线的压缩文件方式。本发明提供了新的上传小文件的接口函数,用于进行在线的小文件存储使用。
2.提供新的输入格式SmallBulkInputFormat,其特征在于:通过使用这种输入格式类,就可以对通过使用新的上传小文件接口创建的这些小文件作为一个一个的key-value进行map操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310430402.0A CN103500089A (zh) | 2013-09-18 | 2013-09-18 | 一种适应于Mapreduce计算模型的小文件存储*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310430402.0A CN103500089A (zh) | 2013-09-18 | 2013-09-18 | 一种适应于Mapreduce计算模型的小文件存储*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103500089A true CN103500089A (zh) | 2014-01-08 |
Family
ID=49865304
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310430402.0A Pending CN103500089A (zh) | 2013-09-18 | 2013-09-18 | 一种适应于Mapreduce计算模型的小文件存储*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103500089A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970874A (zh) * | 2014-05-14 | 2014-08-06 | 浪潮(北京)电子信息产业有限公司 | 一种实现Hadoop文件处理的方法及装置 |
CN104331428A (zh) * | 2014-10-20 | 2015-02-04 | 暨南大学 | 一种小文件和大文件的存储及访问方法 |
CN105139281A (zh) * | 2015-08-20 | 2015-12-09 | 北京中电普华信息技术有限公司 | 一种电力营销大数据的处理方法及*** |
CN106708606A (zh) * | 2015-11-17 | 2017-05-24 | 阿里巴巴集团控股有限公司 | 基于MapReduce的数据处理方法及装置 |
CN106855861A (zh) * | 2015-12-09 | 2017-06-16 | 北京金山安全软件有限公司 | 一种文件合并方法、装置及电子设备 |
CN106855872A (zh) * | 2015-12-08 | 2017-06-16 | 山东商务职业学院 | 基于Hadoop平台的海量图片的快速检索方法 |
WO2017133216A1 (zh) * | 2016-02-06 | 2017-08-10 | 华为技术有限公司 | 分布式存储方法和设备 |
CN107948334A (zh) * | 2018-01-09 | 2018-04-20 | 无锡华云数据技术服务有限公司 | 基于分布式存储***的数据处理方法 |
CN110018997A (zh) * | 2019-03-08 | 2019-07-16 | 中国农业科学院农业信息研究所 | 一种基于hdfs的海量小文件存储优化方法 |
CN110321329A (zh) * | 2019-06-18 | 2019-10-11 | 中盈优创资讯科技有限公司 | 基于大数据的数据处理方法及装置 |
CN110457265A (zh) * | 2019-08-20 | 2019-11-15 | 上海商汤智能科技有限公司 | 数据处理方法、装置及存储介质 |
CN111221472A (zh) * | 2019-12-26 | 2020-06-02 | 天津中科曙光存储科技有限公司 | 一种磁盘空间分配的多块分配策略优化方法及*** |
CN113568877A (zh) * | 2020-04-28 | 2021-10-29 | 杭州海康威视数字技术股份有限公司 | 一种文件合并方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222092A (zh) * | 2011-06-03 | 2011-10-19 | 复旦大学 | 一种MapReduce平台上的海量高维数据聚类方法 |
CN102902716A (zh) * | 2012-08-27 | 2013-01-30 | 苏州两江科技有限公司 | 基于Hadoop分布式计算平台的存储*** |
-
2013
- 2013-09-18 CN CN201310430402.0A patent/CN103500089A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102222092A (zh) * | 2011-06-03 | 2011-10-19 | 复旦大学 | 一种MapReduce平台上的海量高维数据聚类方法 |
CN102902716A (zh) * | 2012-08-27 | 2013-01-30 | 苏州两江科技有限公司 | 基于Hadoop分布式计算平台的存储*** |
Non-Patent Citations (3)
Title |
---|
张春明 等: "一种Hadoop小文件存储和读取的方法", 《计算机应用与软件》, vol. 29, no. 11, 15 November 2012 (2012-11-15) * |
江柳: "HDFS下小文件存储优化相关技术研究", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 9, 15 September 2011 (2011-09-15) * |
洪旭升 等: "基于MapFile的HDFS小文件存储效率问题", 《计算机***应用》, vol. 21, no. 11, 15 November 2012 (2012-11-15) * |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103970874A (zh) * | 2014-05-14 | 2014-08-06 | 浪潮(北京)电子信息产业有限公司 | 一种实现Hadoop文件处理的方法及装置 |
CN104331428A (zh) * | 2014-10-20 | 2015-02-04 | 暨南大学 | 一种小文件和大文件的存储及访问方法 |
CN104331428B (zh) * | 2014-10-20 | 2017-07-04 | 暨南大学 | 一种小文件和大文件的存储及访问方法 |
CN105139281A (zh) * | 2015-08-20 | 2015-12-09 | 北京中电普华信息技术有限公司 | 一种电力营销大数据的处理方法及*** |
CN106708606B (zh) * | 2015-11-17 | 2020-07-07 | 阿里巴巴集团控股有限公司 | 基于MapReduce的数据处理方法及装置 |
CN106708606A (zh) * | 2015-11-17 | 2017-05-24 | 阿里巴巴集团控股有限公司 | 基于MapReduce的数据处理方法及装置 |
WO2017084509A1 (zh) * | 2015-11-17 | 2017-05-26 | 阿里巴巴集团控股有限公司 | 基于MapReduce的数据处理方法及装置 |
CN106855872A (zh) * | 2015-12-08 | 2017-06-16 | 山东商务职业学院 | 基于Hadoop平台的海量图片的快速检索方法 |
CN106855861A (zh) * | 2015-12-09 | 2017-06-16 | 北京金山安全软件有限公司 | 一种文件合并方法、装置及电子设备 |
CN107045422A (zh) * | 2016-02-06 | 2017-08-15 | 华为技术有限公司 | 分布式存储方法和设备 |
WO2017133216A1 (zh) * | 2016-02-06 | 2017-08-10 | 华为技术有限公司 | 分布式存储方法和设备 |
US11301154B2 (en) | 2016-02-06 | 2022-04-12 | Huawei Technologies Co., Ltd. | Distributed storage method and device |
US11809726B2 (en) | 2016-02-06 | 2023-11-07 | Huawei Technologies Co., Ltd. | Distributed storage method and device |
CN107948334A (zh) * | 2018-01-09 | 2018-04-20 | 无锡华云数据技术服务有限公司 | 基于分布式存储***的数据处理方法 |
CN110018997A (zh) * | 2019-03-08 | 2019-07-16 | 中国农业科学院农业信息研究所 | 一种基于hdfs的海量小文件存储优化方法 |
CN110018997B (zh) * | 2019-03-08 | 2021-07-23 | 中国农业科学院农业信息研究所 | 一种基于hdfs的海量小文件存储优化方法 |
CN110321329A (zh) * | 2019-06-18 | 2019-10-11 | 中盈优创资讯科技有限公司 | 基于大数据的数据处理方法及装置 |
CN110457265A (zh) * | 2019-08-20 | 2019-11-15 | 上海商汤智能科技有限公司 | 数据处理方法、装置及存储介质 |
CN111221472A (zh) * | 2019-12-26 | 2020-06-02 | 天津中科曙光存储科技有限公司 | 一种磁盘空间分配的多块分配策略优化方法及*** |
CN111221472B (zh) * | 2019-12-26 | 2023-08-25 | 天津中科曙光存储科技有限公司 | 一种磁盘空间分配的多块分配策略优化方法及*** |
CN113568877A (zh) * | 2020-04-28 | 2021-10-29 | 杭州海康威视数字技术股份有限公司 | 一种文件合并方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103500089A (zh) | 一种适应于Mapreduce计算模型的小文件存储*** | |
CN103020315B (zh) | 一种基于主从分布式文件***的海量小文件存储方法 | |
US9996557B2 (en) | Database storage system based on optical disk and method using the system | |
CN103595797B (zh) | 一种分布式存储***中的缓存方法 | |
CN108319654A (zh) | 计算***、冷热数据分离方法及装置、计算机可读存储介质 | |
CN107391544B (zh) | 列式存储数据的处理方法、装置、设备及计算机储存介质 | |
CN105095247B (zh) | 符号数据分析方法和*** | |
CN102541691B (zh) | 面向内存数据库oltp应用的日志检查点恢复方法 | |
CN109240607B (zh) | 一种文件读取方法和装置 | |
CN109598156A (zh) | 一种写时重定向引擎快照流方法 | |
CN102169460A (zh) | 变长数据管理方法及装置 | |
CN104657366A (zh) | 海量日志写入数据库的方法、装置和日志容灾*** | |
US9798761B2 (en) | Apparatus and method for fsync system call processing using ordered mode journaling with file unit | |
CN102306168A (zh) | 日志操作方法、装置及文件*** | |
CN103501319A (zh) | 一种低延迟的面向小文件的分布式存储*** | |
CN103473258A (zh) | 云存储文件*** | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
CN103365926A (zh) | 在文件***中用于保存快照的方法和装置 | |
CN109213898A (zh) | 视频监控***的录像检索方法及装置 | |
JPWO2020012380A5 (zh) | ||
CN111125058A (zh) | 一种数据迁移方法、装置和*** | |
CN115470235A (zh) | 一种数据处理方法、装置以及设备 | |
CN102955808A (zh) | 一种数据获取方法和分布式文件*** | |
CN105631010A (zh) | 一种基于hdfs小文件存储的优化方法 | |
CN112035428A (zh) | 分布式存储***、方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140108 |
|
WD01 | Invention patent application deemed withdrawn after publication |