版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
(19)国家知识产权局(12)发明专利审查员任洪潮所(普通合伙)44918键值对做归约处理,得到Reduce处理结果;过并行写一个大文件的方法将多个MPI进程的IO2S1、Map端MPI进程从目标文件读取数据集切片;S2、Map端MPI进程运行Map任务,对数据切片做映射处理并对映射处理结果进行分区,得到分区后的键值对;S3、判断到映射处理结果大小超出内存容量阈值,Map端执行溢写操作,将分区排序后的键值对并行溢写到同一磁盘文件上,得到溢写处理结果;S4、Reduce端MPI进程拉取Map端的溢写处理结果并使用Reduce任务对键值对做归约处S5、Reduce端将Reduce处理结果写入磁所述判断到映射处理结果大小超出内存容量阈值,Map端执行溢写操作,将分区排序后的键值对并行溢写到同一磁盘文件上,得到溢写处理结果这一步骤,其具体包括:S31、判断到映射处理结果大小超出内存容量阈值,在磁盘上创建r个溢写文件;S32、每个MPI进程产生r个将映射处理结果中r个分区的键值对写入磁盘的IO请求;S33、MPI-IO将不同MPI进程中写往同一溢写文件的I0请求进行聚合;S34、基于MPI-I0中间件向系统发起POSIXAPI调用,根据MPI进程的进程号和写文件偏移量,将不同MPI进程内属于相同哈希分区的键值对写到溢写文件的不同区域;S35、返回步骤S33直至Map操作生成的所有映射均已写完;S36、将溢写文件内的键值对根据键值进行排序,并对相同键值的数据进行规约,得到溢写处理结果;在使用MPI-IO接口进行文件的并行写时,每个MPI进程将写入的文件头、绝对偏移量、2.根据权利要求1所述一种基于MPI-IO的MapReduce溢写改善方法,其特征在于,所述Map端MPI进程从目标文件读取数据集切片这一步骤,其具体包括:S11、从分布式文件系统查询并缓存目标数据集的元数据;S12、MPI根进程根据目标数据集大小和预定义的数据切片大小,计算出目标数据集被切分后的数据切片总数;S13、MPI根进程将数据切片大小和切片总数广播给组内的其他MPI进程;S15、MPI进程根据数据切片大小和切片编号,计算出读取的数据切片在目标文件中的绝对偏移量,得到各数据切片的首地址;S16、通过MPI-IO接口,MPI进程从各自分得的数据切片的首地址开始,从目标数据集并行地、周期性地读取数据切片到缓存中。3.根据权利要求2所述一种基于MPI-I0的MapReduce溢写改善方法,其特征在于,所述Map端MPI进程运行Map任务,对数据切片做映射处理并对映射处理结果进行分区,得到分区S23、对键值对做哈希处理并将不同key值的键值对分散到r个不同的哈希分区中,r表示执行Reduce任务的Reduce端节点数量,得到分区后的键值对。34.根据权利要求1所述一种基于MPI-IO的MapReduce溢写改善方法,其特征在于,所述Reduce端MPI进程拉取Map端的溢写处理结果并使用Reduce任务对键值对做归约处理,得到Reduce处理结果这一步骤,其具体包括:S41、Reduce端MPI进程通过MPI_File_read接口从各个Map端接收溢写文件;S42、Reduce端将接收的溢写文件进行合并,并根据键值比较对所有的键值对进行排5.根据权利要求4所述一种基于MPI-IO的MapReduce溢写改善方法,其特征在于,所述Reduce端将Reduce处理结果写入磁盘这一步骤,其具体包括:S51、将Reduce处理结果根据key值进行二级哈希,并分发到不同文件;S52、MPI进程将Reduce处理结果写入缓冲,返回步骤S51直至判断到内存达到阈值;S53、判断到数据对应文件已写入key,跳至步骤S54,判断到数据对应文件未写入key,跳至步骤S55;S54、将已有的key和即将写入的key的value进行归纳,跳至步骤S56;S55、将键值对按照key值顺序插入文件;S56、返回步骤S51直至Reduce处理结果已写完。4技术领域[0001]本发明涉及大数据处理框架和高性能计算领域,尤其涉及一种基于MPI-IO的MapReduce溢写改善方法。背景技术[0002]大数据处理框架是高性能计算领域的重要研究内容,它用于读写、分发、运算大容量的数据集,致力于高效地完成并行处理任务,最终获得有价值的数据信息。现如今随着数据的井喷,系统对数据存储能力和处理能力的要求越来越高,处理海量数据所需的计算能力和存储容量早已超过一台计算机的上限,在集群上使用大数据处理框架实现大规模数据的分布式计算和并行处理已成为主流。[0003]MapReduce是一种面向大规模数据处理的并行计算模型和方法,从技术上讲它可定Map函数和Reduce函数,提供抽象的操作和并行编程接口来简单方便地完成大规模数据的编程和计算处理。Map函数会把数据映射成一组组(key-value)键值对,它对一些独立元素组成的概念上的列表的每一个元素进行指定的操作。Map操作是可以高度并行的,因此它对高性能要求的应用以及并行计算领域的需求非常有用。Reduce函数会将所有映射的键值对中拥有相同键的值进行归纳,它往往是获取最终结果的步骤。由于大规模集群中节点的运算相对独立,所以Reduce任务也能在框架上并行执行。[0004]在基于MapReduce的分布式处理框架中,每个元素都是被独立操作的,在数据处理时不会更改元素所在的原始文件,而是会将映射处理结果写入新的临时文件中。在大规模数据处理中,当Map任务的输出结果太多时可能会造成内存溢出,所以在一定条件下需要将缓冲区中的数据写入磁盘,然后重新利用这块缓冲区。这个从内存往磁盘写数据的过程被称为溢写。传统MapReuce框架在执行溢写操作时,进程会为每个数据块的映射处理结果创建一份新的临时存储文件。由于采用的是POSIX接口,受linux的VFS限制,进行临时文件创建时,会对其所在目录加锁,数据文件无法并行创建。其次量的临时文件,频繁对这些临时文件进行操作,使元数据服务器负载过高。此外,大量的临时文件还带来了大量的小文件读写,无法充分利用存储带宽,这使得文件的读写速度也成为影响框架性能的瓶颈。发明内容[0005]本发明的目的是提供一种基于MPI-IO的MapReduce溢写改善方法,克服了传统POSIXAPI接口无法并行读写文件的技术缺陷,通过并行写一个大文件的方法将多个MPI进程的IO请求聚合,减少了大量的文件读写,同时还能避免过多中间文件的产生,缓解了元数据服务器的压力。[0006]本发明所采用的第一技术方案是:一种基于MPI-IO的MapReduce溢写改善方法,包括以下步骤:5[0007]S1、Map端MPI进程从目标文件读取数据集切片;[0008]S2、Map端MPI进程运行Map任务,对数据切片做映射处理并对映射处理结果进行分区,得到分区后的键值对;[0009]S3、判断到映射处理结果大小超出内存容量阈值,Map端执行溢写操作,将分区排序后的键值对并行溢写到同一磁盘文件上,得到溢写处理结果;[0010]S4、Reduce端MPI进程拉取Map端的溢写处理结果并使用Reduce任务对键值对做归约处理,得到Reduce处理结果;[0011]S5、Reduce端将Reduce处理结果写入磁盘。[0012]进一步,所述Map端MPI进程从目标文件读取数据集切片这一步骤,其具体包括:[0013]S11、从分布式文件系统查询并缓存目标数据集的元数据;[0014]S12、MPI根进程根据目标数据集大小和预定义的数据切片大小,计算出目标数据集被切分后的数据切片总数;[0015]S13、MPI根进程将数据切片大小和切片总数广播给组内的其他MPI进程;[0016]S14、各个MPI进程根据进程号和组内MPI进程总数,计算得到切片编号;[0017]S15、MPI进程根据数据切片大小和切片编号,计算出读取的数据切片在目标文件中的绝对偏移量,得到各数据切片的首地址;[0018]S16、通过MPI-IO接口,MPI进程从各自分得的数据切片的首地址开始,从目标数据集并行地、周期性地读取数据切片到缓存中。[0019]进一步,所述Map端MPI进程运行Map任务,对数据切片做映射处理并对映射处理结果进行分区,得到分区后的键值对这一步骤,其具体包括:[0020]S21、Map端MPI进程按行读取数据切片,提取数据并作为key值;[0021]S22、对每一个key进行Map操作,将其映射为键值对,得到映射处理结果;[0022]S23、对键值对做哈希处理并将不同key值的键值对分散到r个不同的哈希分区中,r表示执行Reduce任务的Reduce端节点数量,得到分区后的键值对。[0023]进一步,所述判断到映射处理结果大小超出内存容量阈值,Map端执行溢写操作,将分区排序后的键值对并行溢写到同一磁盘文件上,得到溢写处理结果这一步骤,其具体包括:[0024]S31、判断到映射处理结果大小超出内存容量阈值,在磁盘上创建r个溢写文件;[0025]S32、每个MPI进程产生r个将映射处理结果中r个分区的键值对写入磁盘的I0请[0026]S33、MPI-IO将不同MPI进程中写往同一溢写文件的I0请求进行聚合;[0027]S34、基于MPI-I0中间件向系统发起POSIXAPI调用,根据MPI进程的进程号和写文件偏移量,将不同MPI进程内属于相同哈希分区的键值对写到溢写文件的不同区域;[0028]S35、返回步骤S33直至Map操作生成的所有映射均已写完;[0029]S36、将溢写文件内的键值对根据键值进行排序,并对相同键值的数据进行规约,得到溢写处理结果。[0030]进一步,所述Reduce端MPI进程拉取Map端的溢写处理结果并使用Reduce任务对键值对做归约处理,得到Reduce处理结果这一步骤,其具体包括:[0031]S41、Reduce端MPI进程通过MPI_File_read接口从各个Map端接收溢写文件;6[0032]S42、Reduce端将接收的溢写文件进行合并,并根据键值比较对所有的键值对进行排序;[0033]S43、根据Reduce任务需求,将所有拥有相同键的值进行归纳,得到Reduce处理结[0034]进一步,所述Reduce端将Reduce处理结果写入磁盘这一步骤,其具体包括:[0035]S51、将Reduce处理结[0036]S52、MPI进程将Reduce处理结果写入缓冲,返回步骤S51直至判断到内存达到阈[0037]S53、判断到数据对应文件已写入key,跳至步骤S54,判断到数据对应文件未写入key,跳至步骤S55;[0038]S54、将已有的key和即将写入的key的value进行归纳,跳至步骤S56;[0039]S55、将键值对按照key值顺序插入文件;[0041]本发明方法及系统的有益效果是:本发明使用MPI-IO替换POSIX接口,使多个MPI进程的IO请求聚合,并通过MPI接口提升开发效率,使用MPI-IO能让多个进程并行地将数据写入同一文件中,这直接避免了大量中间文件的产生,还省去对小文件进行合并的开销。此外,该方法减小了元数据服务器的内存压力,还避免了大量进程对同一个并行文件系统溢写。综上所述,该发明在不引入额外开销的同时,通过MPI-IO的并行读写接口,提升了MapReduce框架的溢写性能,提高了系统的任务处理效率。附图说明[0042]图1是本发明一种基于MPI-I0的MapReduce溢写改善方法的步骤流程图;[0043]图2为本发明的MPI进程读取数据集切片的示意图。[0044]图3为本发明执行Map任务的示意图[0045]图4为本发明使用MPI-IO聚合多个MPI进程的I0请求进行文件溢写的流程图。[0046]图5为本发明将各个MPI进程的数据写到溢写文件上不同区域的示意图。[0047]图6为本发明的Reduce端MPI进程从Map端拉取数据的示意图。[0048]图7为本发明将Reduce处理结果写入磁盘的流程图。具体实施方式[0049]下面结合附图和具体实施例对本发明做进一步的详细说明。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。[0050]以MapReduce框架运行WordCount任务为例,参照图1,本发明提供了一种基于MPI-I0的MapReduce溢写改善方法,该方法包括以下步骤:[0051]S1、Map端MPI进程从目标文件读取数据集切片;[0052]S2、Map端MPI进程运行Map任务,对数据7被分到同一分区的键值对数据并行溢写到同[0059]S11、进程号为0的MPI进程(根进程)从分布式文件系统查询并缓存目标数据集的[0060]S12、MPI根进程根据预定义的数据切片大小spliteSize和目标数据集大小中的绝对偏移量offset=i*spliteSize,并获得MPI进程读取数据的首地址p=head+的编号去读取相应的切片,通过将切片编号和MPI进程求余的方式获悉所读数据切片的编8中。由于所有MPI进程采用相同的哈希方式,因此最终相同的键值会被分到相同的分区。[0071]进一步作为本方法优选实施例,参照图4,所述判断到映射处理结果大小超出内存容量阈值,Map端执行溢写操作,将分区排序后的键值对并行溢写到同一磁盘文件上,得到[0072]S31、判断到映射处理结果大小超出内存容量阈值,在磁盘上创建r个溢写文件;[0073]S32、每个MPI进程产生r个将映射处理结果中r个分区的键值对写入磁盘的I0请[0074]S33、MPI-IO将不同MPI进程中写往同一溢写文件的IO请求进行聚合;[0075]S34、基于MPI-I0中间件向系统发起POSIXAPI调用,根据MPI进程的进程号和写文件偏移量,将不同MPI进程内属于相同哈希分区的键值对写到溢写文件的不同区域;[0076]具体地,参照图5,将不同MPI进程内属于相同哈希分区的键值对写到溢写文件的不同区域具体包括:[0077]S341、每个MPI进程产生r个IO请求,来将键值对写入r个文件,r是Reduce端的数量。由于哈希空间是共享的,因此不同MPI进程的第j个I0请求都是将被分到第j个分区的键值对写入文件,因此可以用一个文件将它们存储。程的数据写入溢写文件。进程号为i的MPI进程将数据分别写入第i,i+m,i+2*m…个块中,设数据块大小为blockSize,则进程号为i的进程将数据写入偏移量为:1+2*m)*blockSize,(i+2*m)*blockSize]...的文件空间中。[0080]S343、通过MPI-I0,将不同MPI进程写往同一个文件的多个请求聚合成一个大的请求,根据进程编号和S342的划分方法,将来自不同MPI进程的数据并行写入文件的不同区域。[0081]S35、返回步骤S33直至Map操作生成的所有映射均已写完;[0082]S36、将溢写文件内的键值对根据键值进行排序,并对相同键值的数据进行规约,得到溢写处理结果。[0083]本实施例是对上一例子的补充,在使用MPI-IO接口进行文件的并行写时,每个MPI进程将写入的文件头、绝对偏移量、数据大小、数据类型和进程状态发送出去,由MPI-IO接口统一管理。每个进程的键值对所写入的区间可以抽象为一个个块,溢写文件由块组成。假设块的大小是64MB,当有数据写入溢写文件时,若所写区间已满,会新拓展10*64M的空间,其中偏移为0~64MB的区间属于进程1,偏移为65~128MB的区间属于进程2...偏移为577~640MB的区间属于进程10。每个进程将数据写入对应区间,该区间的位置通过文件头和绝对偏移计算得出。[0084]进一步作为本方法优选实施例,参照图6,所述Reduce端MPI进程拉取Map端的溢写处理结果并使用Reduce任务对键值对做归约处理,得到Reduce处理结果这一步骤,其具体[0086]具体地,Map端MPI进程使用MPI_File_write接口在阻塞模式下发送溢写文件,确保数据信息与数据信封已被安全的保存;Reduce端MPI进程通过MPI_File_read接口,在确9保接收缓存大于发送数据的前提下,进行进程间的数据传输,从各个Map端接收溢写文件,第k个Reduce端接收来自各个Map端的第k个分区的数据。[0087]S42、Reduce端将接收的溢写文件进行合并,并根据键值比较对所有的键值对进行[0088]S43、根据Reduce任务需求,将所有拥有相同键的值进行归纳,得到Reduce处理结[0089]本实例中,Reduce端通过MPI接口从Map端获取数据,各个Reduce端接收相应分区的键值对,比如1号Reduce端接收来自各个Map端的1号溢写文件、2号Reduce端接收来自各个Map端的2号溢写文...接收到的键值对由词和数值组成,接收完所有的键值对后,对其根据key值进行排序,然后将相同key的value进行归纳操作,例如以单词you为key值的键值对(you,1)一共有300个,则将这300个键值对归纳得到(you,300)。[0090]进一步作为本方法优选实施例,参照图7,所述Reduce端将Reduce处理结果写入磁
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 62541-10:2025 FR OPC Unified Architecture - Part 10: Programs
- 2025年大学化工技术(化工热力学)试题及答案
- 2025年中职(汽车电子电器维修)汽车空调维修实操测试题及答案
- 18岁高三成人礼主题班会课件
- 工程招标培训课件
- 工程安全培训专题报告课件
- 【初中 生物】生态系统的组成教学课件 2025-2026学年北师大版生物八年级下册
- 我国安宁疗护中的文化敏感性策略
- 成本管控下的医疗服务定价策略
- 2026年机械安全培训题库
- ISO27001信息安全管理体系培训资料
- 期中测试卷(试题)2024-2025学年人教版数学六年级上册
- 幕墙工程安装施工计算书
- 室性心律失常共识解读
- 男朋友打游戏申请表
- 危险化学品经营许可证变更申请书(附件2)
- 围产期母婴感染B族链球菌的防治及专家共识防治指南PPT课件院内培训
- 18621客运服务礼仪题库(114道)
- 1例内镜下经鼻腔-蝶窦垂体瘤切除术的护理
- DB13T 3035-2023 建筑消防设施维护保养技术规范
- 断桥铝门窗工程施工组织方案
评论
0/150
提交评论