CN110377601B - 一种基于B树数据结构的MapReduce计算过程优化方法 - Google Patents
一种基于B树数据结构的MapReduce计算过程优化方法 Download PDFInfo
- Publication number
- CN110377601B CN110377601B CN201910565930.4A CN201910565930A CN110377601B CN 110377601 B CN110377601 B CN 110377601B CN 201910565930 A CN201910565930 A CN 201910565930A CN 110377601 B CN110377601 B CN 110377601B
- Authority
- CN
- China
- Prior art keywords
- data
- files
- index
- file
- memory buffer
- 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.)
- Active
Links
Images
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种基于B树数据结构的MapReduce计算过程优化方法,包括如下步骤:1)对输入到片区内的数据执行Map任务;2)执行Map任务后输出的结果包含索引文件*.index和数据文件*.out;3)将索引文件*.index和数据文件*.out存放在一个环形内存缓冲区中;4)当该环形内存缓冲区快要溢出时,判断是否是最后一个Map任务;5)如果否,则数据文件*.out排序合并后写入磁盘,索引文件*.index留在环形内存缓冲区中;如果是,则数据文件*.out直接输入到reduce函数。本发明所述的方法减少了磁盘读写次数,缩短了计算时间,显著缩短计算时间,提高了计算效率,可以有效提高工作效率。
Description
技术领域
本发明属于MapReduce计算技术领域,尤其涉及一种基于B树数据结构的MapReduce计算过程优化方法。
背景技术
MapReduce是一种分布式计算模型,是Hadoop生态圈的主要组成之一,承担大批量数据的分布式计算功能。MapReduce包括两个重要的阶段:Map阶段是映射,负责数据的过滤分发;Reduce阶段是规约,负责数据的计算归并。Map的输出即是Reduce的输入,Reduce需要通过Shuffle来获取数据。
在Map过程中,每个输入分片(split)会分配给一个Map任务来处理,默认情况下,以HDFS的一个块的大小(默认为64M)为一个分片。Map过程的计算结果会暂时放在一个环形内存缓冲区中,当该缓冲区快要溢出时,会进行spill溢写操作,即在本地磁盘中创建两个文件:*.out和*.index保存内存数据。其中out文件保存了缓冲区中的数据,index文件是索引文件,使用起始位置、原始长度和压缩后长度三个字段来记录out文件中数据的详细位置信息。如果Map任务输出数据量很大,可能会有很多的spill溢出文件,在生成out文件和合并操作的过程中都存在读写磁盘(IO操作),耗时较长,工作效率低。
发明内容
本发明旨在提供一种耗时短,可以有效提高工作效率的基于B树数据结构的MapReduce计算过程优化方法。
为解决上述技术问题,本发明提供了如下的技术方案:一种基于B树数据结构的MapReduce计算过程优化方法,包括如下步骤:
1)对输入到片区内的数据执行Map任务;
2)执行Map任务后输出的结果包含索引文件*.index和数据文件*.out;
3)将索引文件*.index和数据文件*.out存放在一个环形内存缓冲区中;
4)当该环形内存缓冲区快要溢出时,判断是否是最后一个Map任务;
5)如果否,则数据文件*.out排序合并后写入磁盘,索引文件*.index留在环形内存缓冲区中;如果是,则数据文件*.out直接输入到reduce函数,索引文件*.index留在环形内存缓冲区中。
索引文件*.index在环形内存缓冲区中以类B树的形式保存。
数据文件*.out存入磁盘之前合并的过程不断地进行排序和压缩操作。
判断该环形内存缓冲区是否快要溢出的标准为:当环形内存缓冲区存储量达到百分之八十时判断为快要溢出。
在步骤5)数据文件*.out排序合并后写入磁盘之前需要根据reduce任务的数目将数据划分为相同数目的分区,一个reduce任务对应一个分区的数据。
通过以上技术方案,本发明的有益效果为:
1)将MapReduce计算过程中多个溢写到磁盘上的索引文件直接保存在环形内存缓冲区中,减少磁盘写操作;
2)优化计算过程中数据文件*.out合并步骤,将原本需要从磁盘上读取索引文件再合并数据文件的操作优化为:直接从环形内存缓冲区中读取索引文件信息合并数据文件,从而减少磁盘读操作;
3)内存中的索引文件以类B树的形式保存,使用子树来区分不同Reduce过程所需数据,同时通过已排序的叶子节点来存储Map过程产生的索引文件,Reduce过程拷贝数据时可根据索引文件顺序拷贝,减少磁头反复寻址过程。
附图说明
图1为本发明所述的MapReduce计算过程;
图2为类B树的索引文件示意图。
具体实施方式
一种基于B树数据结构的MapReduce计算过程优化方法,如图1所示,包括如下步骤:
1)对输入到片区内的数据执行Map任务;
2)执行Map任务后输出的结果包含索引文件*.index和数据文件*.out;
3)将索引文件*.index和数据文件*.out存放在一个环形内存缓冲区中;
4)当该环形内存缓冲区快要溢出时,判断是否是最后一个Map任务,其中判断该环形内存缓冲区是否快要溢出的标准为:当环形内存缓冲区存储量达到百分之八十时判断为快要溢出。
5)如果否,则数据文件*.out排序合并后写入磁盘,同时,数据文件*.out存入磁盘之前合并的过程会不断地进行排序和压缩操作,索引文件*.index留在环形内存缓冲区中,在合并的过程中不断地进行排序和压缩操作,以减少每次写入磁盘的数据量。
如果是最后一个Map任务,则数据文件*.out直接输入到reduce函数,索引文件*.index留在环形内存缓冲区中。
其中,索引文件*.index在环形内存缓冲区中以类B树的形式保存,因为B树的叶子节点是按升序排序,同时Map计算结果也是分区有序的,所以使用类B树结构方便存储Map阶段的计算结果文件spill*.index文件,存储方便,存储起来比较有序,提高查找速度。
由图2可知,索引文件以类B树形式保存,其中索引文件的类B树包含三层结构,第一层是根节点,第二层是根据Map操作中的分区情况增加的子树节点,如分区1、分区2、分区N等,Map计算过程中有多少个分区,这里就生成相等数量的子树节点。
每一个Map计算完成后将结果中的索引文件信息按照分区情况保存到响应的分区子节点中,并且每个分区的子节点都是升序排列,在进行合并操作时可以顺序读取磁盘文件,读头不需要频繁变更位置,提高数据读取效率。
例如:Map1线程产生多个*.index索引文件,其中属于分区1的索引文件有三个,三个索引文件的起始位置分别是1,2,3,则索引文件在B树种的位置如图2矩形框所示。
本步骤中,数据文件*.out排序合并后写入磁盘之前需要根据reduce任务的数目将数据划分为相同数目的分区,一个reduce任务对应一个分区的数据。
为了减少MapReduce计算时间消耗,提高框架计算效率,本发明改变Map计算过程中spill*.index索引文件的存储方式,由磁盘存储优化为采用类B树结构的内存存储,减少Map过程中spill溢写操作的磁盘写入次数和merge合并时索引文件的读取次数,从而加快Map过程计算速度,进而提高程序的执行效率。
测试分析:
以写文件速度进行比较,分别比较传统IO流和缓冲流写64M的数据进行测试。本次测试环境是jdk8,8G内存。分别测试5次后的耗时如表1所示:
表 1磁盘读写IO操作耗时
测试次数 | 传统IO流耗时(ms) | 缓冲流耗时(ms) |
1 | 37292 | 345 |
2 | 37588 | 342 |
3 | 36913 | 490 |
4 | 37772 | 344 |
5 | 37772 | 341 |
平均耗时 | 37467.4 | 372.4 |
根据表1所示磁盘读写IO耗时情况,计算使用本发明所述MapReduce计算1G数据节约的时间,每个split分片按照HDFS默认大小(64M),并且每个Map计算只spill溢写一次。计算结果如表2所示:
表 2 本发明所述MapReduce减少计算耗时
读写1G数据 | 减少IO次数 | 传统IO流缩减耗时(ms) | 缓冲流缩减耗时(ms) |
测试结果 | 1024/64=16 | 16*37467.4=599478.4 | 16*372.4=5958.4 |
由表2可以看出,理论上使用本发明所述MapReduce计算1G数据量时,如果采用传统IO流方式可以缩减约600秒计算时长,采用缓冲流方式可以缩减约6秒计算时长。针对目前动辄TB甚至PB数量级的数据,使用本发明所述的MapReduce计算框架,可以显著缩短计算时间,提高计算效率。
本发明所述的方法减少了磁盘读写次数,缩短了计算时间,显著缩短计算时间,提高了计算效率,可以有效提高工作效率。
Claims (4)
1.一种基于B树数据结构的MapReduce计算过程优化方法,其特征在于:包括如下步骤:
1)对输入到片区内的数据执行Map任务;
2)执行Map任务后输出的结果包含索引文件*.index和数据文件*.out;
3)将索引文件*.index和数据文件*.out存放在一个环形内存缓冲区中;索引文件*.index在环形内存缓冲区中以类B树的形式保存;
4)当该环形内存缓冲区快要溢出时,判断是否是最后一个Map任务;
5)如果否,则数据文件*.out排序合并后写入磁盘,索引文件*.index留在环形内存缓冲区中;如果是,则数据文件*.out直接输入到reduce函数,索引文件*.index留在环形内存缓冲区中;
其中索引文件的类B树包含三层结构,第一层是根节点,第二层是根据Map操作中的分区情况增加的子树节点;
每一个Map计算完成后将结果中的索引文件信息按照分区情况保存到响应的分区子节点中,并且每个分区的子节点都是升序排列,在进行合并操作时顺序读取磁盘文件,读头不需要频繁变更位置。
2.如权利要求1所述的基于B树数据结构的MapReduce计算过程优化方法,其特征在于:数据文件*.out存入磁盘之前合并的过程不断地进行排序和压缩操作。
3.如权利要求1所述的基于B树数据结构的MapReduce计算过程优化方法,其特征在于:判断该环形内存缓冲区是否快要溢出的标准为:当环形内存缓冲区存储量达到百分之八十时判断为快要溢出。
4.如权利要求1所述的基于B树数据结构的MapReduce计算过程优化方法,其特征在于:在步骤5)数据文件*.out排序合并后写入磁盘之前需要根据reduce任务的数目将数据划分为相同数目的分区,一个reduce任务对应一个分区的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910565930.4A CN110377601B (zh) | 2019-06-27 | 2019-06-27 | 一种基于B树数据结构的MapReduce计算过程优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910565930.4A CN110377601B (zh) | 2019-06-27 | 2019-06-27 | 一种基于B树数据结构的MapReduce计算过程优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110377601A CN110377601A (zh) | 2019-10-25 |
CN110377601B true CN110377601B (zh) | 2022-04-12 |
Family
ID=68250962
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910565930.4A Active CN110377601B (zh) | 2019-06-27 | 2019-06-27 | 一种基于B树数据结构的MapReduce计算过程优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110377601B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112037874B (zh) * | 2020-09-03 | 2022-09-13 | 合肥工业大学 | 一种基于映射归约的分布式数据处理方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049556A (zh) * | 2012-12-28 | 2013-04-17 | 中国科学院深圳先进技术研究院 | 一种海量医疗数据的快速统计查询方法 |
CN104778235A (zh) * | 2015-04-02 | 2015-07-15 | 浪潮集团有限公司 | 一种基于MapReduce云计算模型的树遍历搜索方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102028708B1 (ko) * | 2013-01-18 | 2019-10-07 | 한국전자통신연구원 | 대용량 이벤트 파일에서 시간 관계를 병렬 탐사하기 위한 방법 |
-
2019
- 2019-06-27 CN CN201910565930.4A patent/CN110377601B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049556A (zh) * | 2012-12-28 | 2013-04-17 | 中国科学院深圳先进技术研究院 | 一种海量医疗数据的快速统计查询方法 |
CN104778235A (zh) * | 2015-04-02 | 2015-07-15 | 浪潮集团有限公司 | 一种基于MapReduce云计算模型的树遍历搜索方法 |
Non-Patent Citations (3)
Title |
---|
A mapreduce-based scalable discovery and indexing of structured big data;Hari Singh;《Future Generation Computer Systems》;20170401;第73卷;第2-20页 * |
hadoop学习笔记(十):MapReduce工作原理(重点);星火燎原;《博客园》;20180427;第1页-第12页 * |
支持高并发数据流处理的MapReduce中间结果缓存;亓开元;《Journal of Computer Research and Development》;20130402;第50卷(第1期);第112页-第114页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110377601A (zh) | 2019-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110019218B (zh) | 数据存储与查询方法及设备 | |
US9619430B2 (en) | Active non-volatile memory post-processing | |
CN107038206B (zh) | Lsm树的建立方法、lsm树的数据读取方法和服务器 | |
CN102129458B (zh) | 关系型数据库的存储方法及装置 | |
CN109522428B (zh) | 一种基于索引定位的图计算系统的外存访问方法 | |
CN107301214B (zh) | 在hive中数据迁移方法、装置及终端设备 | |
US20140351239A1 (en) | Hardware acceleration for query operators | |
CN104778077B (zh) | 基于随机和连续磁盘访问的高速核外图处理方法及系统 | |
US11288287B2 (en) | Methods and apparatus to partition a database | |
US11048678B2 (en) | Bulk-load for B-trees | |
CN107665219B (zh) | 一种日志管理方法及装置 | |
JPH02178730A (ja) | 分割法を用いた内部ソート方式 | |
JP2018538600A (ja) | データ準備のためのシグニチャベースのキャッシュ最適化 | |
US20180300330A1 (en) | Proactive spilling of probe records in hybrid hash join | |
CN103440246A (zh) | 用于MapReduce的中间结果数据排序方法及系统 | |
CN103765381A (zh) | 对b+树的并行操作 | |
CN101840430A (zh) | 智能卡数据库多表操作方法及装置 | |
CN106802787B (zh) | 基于GPU排序的MapReduce优化方法 | |
CN110377601B (zh) | 一种基于B树数据结构的MapReduce计算过程优化方法 | |
US20210349918A1 (en) | Methods and apparatus to partition a database | |
CN112069088B (zh) | 一种地址映射管理方法及相关装置、设备 | |
CN111444154B (zh) | 一种在单片机系统中高效存储日志文件的方法 | |
CN112231531A (zh) | 一种基于opentsdb的数据展示方法、设备及介质 | |
CN115840539A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN111221814A (zh) | 二级索引的构建方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |