CN108595268A - 一种基于MapReduce的数据分配方法、装置及计算机可读存储介质 - Google Patents

一种基于MapReduce的数据分配方法、装置及计算机可读存储介质 Download PDF

Info

Publication number
CN108595268A
CN108595268A CN201810373615.7A CN201810373615A CN108595268A CN 108595268 A CN108595268 A CN 108595268A CN 201810373615 A CN201810373615 A CN 201810373615A CN 108595268 A CN108595268 A CN 108595268A
Authority
CN
China
Prior art keywords
key
value pair
subregion
reduce
reduce tasks
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.)
Granted
Application number
CN201810373615.7A
Other languages
English (en)
Other versions
CN108595268B (zh
Inventor
徐健
张文启
曹中强
严国友
孙波
孙一波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
MIGU Culture Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
MIGU Culture Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd, MIGU Culture Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201810373615.7A priority Critical patent/CN108595268B/zh
Publication of CN108595268A publication Critical patent/CN108595268A/zh
Application granted granted Critical
Publication of CN108595268B publication Critical patent/CN108595268B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Abstract

本发明实施例公开了一种基于MapReduce的数据分配方法、装置及计算机可读存储介质,该方法可以包括:对输入的待处理文档运行预设Map函数,得到键值对集合;利用预设计数方法计算键值对集合中键的类型数目;利用预设算法计算键对应的标准数值;对标准数值与类型数目进行取余计算,以将键值对集合中类型数目相同的键值对划分至一个分区中,得到至少一个分区,至少一个分区的个数与类型数目相同;基于至少一个分区对应的至少一个分区键值对数量,和至少一个Reduce任务对应的至少一个待分配键值对数量,建立至少一个分区与至少一个Reduce任务的对应关系,以供至少一个Reduce任务对至少一个分区键值对进行处理。

Description

一种基于MapReduce的数据分配方法、装置及计算机可读存储 介质
技术领域
本发明涉及互联网信息技术领域的大数据处理技术,尤其涉及一种基于MapReduce的数据分配方法、装置及计算机可读存储介质。
背景技术
近年来,随着电子技术的快速发展,计算机需要处理的数据量变得越来越大,为了应对海量数据,利用MapReduce分布式计算模型来对大数据进行处理,MapReduce的核心为Map阶段和Reduce阶段,其中,Map阶段的主要任务是一组map服务器将输入分片中需要的数据处理成<key,value>键值对的形式,Reduce阶段的主要任务是一组reduce服务器将相同key的数据进行合并,在map服务器将<key,value>键值对发送给reduce服务器进行处理时,需要将<key,value>进行分区,reduce服务器同时处理各自对应的分区内的<key,value>键值对。
现有技术中,根据key来进行分区,具体的分区公式为:hash(key)%(Rnum),其中Rnum为reduce服务器的数量,利用现有技术将多个可以划分至一个分区中,且得到的分区数量与reduce服务器的个数是一一对应的。
然而,当<key,value>键值对中的数据分配严重不平衡时,会使得热点分区的数据量大,而非热点分区的数据量小,从而导致热点分区数据所对应的reduce的分区处理时间要比非热点分区数据对应的reduce的分区处理时间长,进而影响整个作业的完成时间。
发明内容
为解决上述技术问题,本发明实施例期望提供一种基于MapReduce的数据分配方法、装置及计算机可读存储介质,能够在数据分配严重不平衡时缩短整个MapReduce作业的完成时间。
本发明实施例提供一种基于MapReduce的数据分配方法,所述方法包括:
对输入的待处理文档运行预设Map函数,得到键值对集合;
利用预设计数方法计算所述键值对集合中键的类型数目;
利用预设算法计算键对应的标准数值;
对所述标准数值与所述类型数目进行取余计算,以将所述键值对集合中所述类型数目相同的键值对划分至一个分区中,得到至少一个分区,所述至少一个分区的个数与所述类型数目相同;
基于所述至少一个分区对应的至少一个分区键值对数量,和至少一个Reduce任务对应的至少一个待分配键值对数量,建立所述至少一个分区与所述至少一个Reduce任务的对应关系,以供所述至少一个Reduce任务对所述至少一个分区键值对进行处理。
在上述方法中,所述至少一个Reduce任务中的一个Reduce任务对应至少一个分区。
在上述方法中,所述利用预设计数方法计算所述键值对集合中键的类型数目,包括:
对所述键值对集合进行统计,得到相同键对应的键值对数量,将键以及所述键对应的所述键值对数量存储在一个关系组中;
获取关系组的组别数量;
将所述组别数量确定为所述类型数目。
在上述方法中,所述对所述标准数值与所述类型数目进行取余计算之后,所述建立所述至少一个分区与所述至少一个Reduce任务的对应关系之前,所述方法还包括:
依次确定出所述至少一个分区键值对对应的至少一个键,所述至少一个分区键值对中的一个分区键值对对应至少一个键;
从所述关系组中,获取所述至少一个键对应的至少一个键值对数量;
将所述至少一个键值对数量相加,得到所述至少一个分区键值对数量。
在上述方法中,所述基于所述至少一个分区对应的至少一个分区键值对数量,和至少一个Reduce任务对应的至少一个待分配键值对数量,建立所述至少一个分区与所述至少一个Reduce任务的对应关系,包括:
按照预设排列顺序,对所述至少一个分区键值对数量进行排列,得到排列后的所述至少一个分区键值对;
按照所述预设排列顺序,对所述至少一个待分配键值对数量进行排列,得到排列后的所述至少一个Reduce任务;
将所述排列后的所述至少一个分区键值对分配至所述排列后的所述至少一个Reduce任务上。
在上述方法中,所述按照所述预设排列顺序,对所述至少一个待分配键值对数量进行排列,得到排列后的所述至少一个Reduce任务之前,所述方法还包括:
分别获取所述至少一个Reduce任务对应的至少一个预处理键值对数量和至少一个当前分配键值对数量;
将所述至少一个预处理键值对数量和所述至少一个当前分配键值对数量进行减运算,计算出所述至少一个待分配键值对数量。
在上述方法中,所述将所述排列后的所述至少一个分区键值对分配至所述排列后的所述至少一个Reduce任务,包括:
将排列后的所述至少一个分区键值对中的第一个分区键值对,分配给排列后的所述至少一个Reduce任务中的第一个Reduce任务;
更新所述第一个Reduce任务对应的第一个当前分配键值对数量;
根据更新后的所述第一个当前分配键值对数量,对所述至少一个Reduce任务重新排列;
将排列后的所述至少一个分区键值对中的第二个分区键值对,分配给重新排列后的所述至少一个Reduce任务中的第一个Reduce任务;
直至将所述排列后的所述至少一个分区键值对分配至所述排列后的所述至少一个Reduce任务。
在上述方法中,所述根据更新后的所述第一个当前分配键值对数量,对所述至少一个Reduce任务重新排列,包括:
根据更新后的所述第一个当前分配键值对数量,更新所述至少一个当前分配键值对数量;
根据所述更新后的至少一个当前分配键值对数量和所述至少一个预处理键值对数量,重新确定所述至少一个待分配键值对数量;
按照所述预设排列顺序对重新确定的所述至少一个待分配键值对数量进行排列,以对所述至少一个Reduce任务重新排列。
本发明实施例提供一种基于MapReduce的数据分配装置,所述基于MapReduce的数据分配装置包括:处理器、存储器及通信总线,所述处理器用于执行所述存储器中存储的运行程序,以实现以下步骤:
所述处理器,用于当通过对输入的待处理文档运行预设Map函数,得到键值对集合时,利用预设计数方法计算所述键值对集合中键的类型数目;利用预设算法计算键对应的标准数值;对所述标准数值与所述类型数目进行取余计算,以将所述键值对集合中所述类型数目相同的键值对划分至一个分区中,得到至少一个分区,所述至少一个分区的个数与所述类型数目相同;基于所述至少一个分区对应的至少一个分区键值对数量,和至少一个Reduce任务对应的至少一个待分配键值对数量,建立所述至少一个分区与所述至少一个Reduce任务的对应关系,以供所述至少一个Reduce任务对所述至少一个分区键值对进行处理。
在上述基于MapReduce的数据分配装置中,所述处理器,还用于对所述键值对集合进行统计,得到相同键对应的键值对数量,将键以及键对应的所述键值对数量存储在一个关系组中;获取关系组的组别数量;将所述组别数量确定为所述类型数目。
本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,应用于基于MapReduce的数据分配装置,该计算机程序被处理器执行时实现如上述任一项基于MapReduce的数据分配的方法。
本发明实施例提供了一种基于MapReduce的数据分配方法、装置及计算机可读存储介质,对输入的待处理文档运行预设Map函数,得到键值对集合;利用预设计数方法计算键值对集合中键的类型数目;利用预设算法计算键对应的标准数值;对标准数值与类型数目进行取余计算,将键值对集合中类型数目相同的键值对划分至一个分区中,得到至少一个分区,至少一个分区的个数与类型数目相同;基于至少一个分区对应的至少一个分区键值对数量,和至少一个Reduce任务对应的至少一个待分配键值对数量,建立至少一个分区与至少一个Reduce任务的对应关系,以供至少一个Reduce任务对至少一个分区键值对进行处理。采用上述方法实现方案,基于MapReduce的数据分配装置计算键值对集合中键的类型数目,并对键对应的标准数值与类型数目进行取余,将键值对集合中类型数目相同的键值对划分至一个分区中,得到至少一个分区,此时,至少一个分区中的每一个分区中存储的是一类键值对,之后基于MapReduce的数据分配装置根据至少一个分区键值对数量和至少一个Reduce任务的至少一个待分配键值对数量,建立至少一个分区与至少一个Reduce任务的对应关系,此时至少一个Reduce任务中的一个Reduce任务对应至少一个分区,基于MapReduce的数据分配装置将数据量大的分区指定给一个Reduce任务,将至少一个数据量小的分区指定给一个Reduce任务,尽可能的使各个Reduce任务分配到的数据量均衡,使得在数据量不均衡时,各个Reduce任务的处理时间相同,从而能够在数据分配严重不平衡时缩短整个MapReduce作业的完成时间。
附图说明
图1为本发明实施例提供的一种示例性的MapReduce模型的结构示意图;
图2为本发明实施例提供的一种基于MapReduce的服务分配方法的流程图一;
图3为本发明实施例提供的一种基于MapReduce的服务分配方法的流程图二;
图4为本发明实施例提供的一种基于MapReduce的数据分配装置1的结构示意图。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
在利用MapReduce模型处理大数据时,具体的处理流程如图1所示,包括以下几个阶段:
1、输入分片(input split):其中存储的是一个分片长度和一个记录数据位置的数组,MapReduce根据分布式文件系统(HDFS,Hadoop Distributed File System)的大小将输入文件分成至少一个输入分片,每个输入分片对应一个Map任务,例如,HDFS块的大小为64mb,输入的三个文件大小分别为3mb,65mb和127目标,则MapReduce将3mb分为一个输入分片,将65mb分为两个输入分片,将127mb分为两个输入分片。
2、map阶段:是map利用编写好的map()方法对输入分片进行处理,其中,map操作都是在数据存储节点上进行的,输出的文件格式为<key,value>键值对的形式。
3、combiner阶段:是在map计算出中间文件前对相同key值进行合并的过程,例如map阶段是对文章里的单词频率进行统计,在map计算时,遇到一个Hadoop单词就会记录为1,生成一个<Hadoop,1>,但是文章里Hadoop单词会出现多次,此时将相同的key进行合并操作,此时减小了map输出文件的冗余。但是combiner操作不是必须的,例如当reduce过程是计算平均值时使用combiner的话,combiner操作会将相同key值进行合并,此时每个key值的出现频率变成了1,由于机选平均值时需要获取出全部的key以及key出现的次数,会导致最终的reduce计算结果出错。
4、shuffle阶段:是将map阶段的输出作为reduce阶段的输入的过程,首先对map做输出操作,map在做输出操作时会在内存里开启一个环形内存缓冲区,默认大小为100mb,将map阶段产生的中间文件缓存至环形内存缓冲区中,当环形内存缓冲区的内存达到了缓存区大小的80%时,守护线程将缓存区内存储的中间文件写到磁盘上,得到一个溢出文件,这个过程称为spill溢写过程,之后,对溢出文件进行partitioner操作,partitioner操作是将溢出文件进行分区,之后partitioner启动复制线程将分区后的溢出文件复制到对应的reduce上,这里的复制过程和map写入磁盘的过程类似,在此不再赘述。
5、reduce阶段:reduce利用编写好的reduce()方法对map阶段产生的<key,value>进行计算,并将最终的计算结果存储在HDFS中。
实施例一
本发明实施例提供一种基于MapReduce的数据分配方法,如图2所示,该方法可以包括:
S101、对输入的待处理文档运行预设Map函数,得到键值对集合。
本发明实施例提供的一种数据分配方法适用于利用MapReduce计算模型处理大数据时利用partitoner操作进行数据分区的场景下。
本发明实施例中,MapReduce根据待处理文档计算输入分片,每个输入分片对应一个map任务,map按照map()方法(预设Map函数)对输入分片进行处理,得到键值对集合。
本发明实施例中,键值对的存储格式为<key,value>,其中,key为键,value为值。
S102、利用预设计数方法计算键值对集合中键的类型数目。
当map对输入的待处理文档运行预设Map函数得到键值对集合之后,map就要利用预设计数方法计算键值对集合中键的类型数目了。
本发明实施例中,map根据预设计数方法对键值对集合进行统计,得到相同键对应的键值对数量,并将键以及键对应的键值对数量存储在一个关系组中,之后,map获取关系组的组别数量,该组别数量即为键值对集合中的键类型数目。
本发明实施例中,在map阶段添加一个count()方法(预设计数方法),用于计算输入分片中key的数目并提交,count()方法的输出格式为<key i,key i_num>(关系组),其中,key i_num为统计的输入分片中key i的键值对个数,之后,map统计<key i,key i_num>的组别数量,此时,<key i,key i_num>的组别数量为key的类型数目。
S103、利用预设算法计算键对应的标准数值。
当map计算出键值对集合中键的类型数目之后,map就要利用预设算法计算键对应的标准数值了。
本发明实施例中,预设算法为哈希算法。
本发明实施例中,map利用哈希算法计算键对应的哈希值,即计算Hash(key)的过程。
S104、对标准数值与类型数目进行取余计算,以将键值对集合中类型数目相同的键值对划分至一个分区中,得到至少一个分区,至少一个分区的个数与类型数目相同。
当map计算出键对应的标准数值之后,map就要对标准数值与类型数目进行区域计算,以将键值对集合中类型数目相同的键值对划分至一个分区中,得到至少一个分区了。
本发明实施例中,map将键对应的哈希值和类型数目进行取余计算,此时,类型数目相同的键值对被划分至一个分区中,得到至少一个分区,map任务为至少一个分区中创建对应的分区号,以便reduce任务更加快捷的读取对应分区里的键值对。
本发明实施例中,取余方法为:
Hash(key)%Num (1)
其中,Hash(key)为求取key i取哈希值,Num为key的类型数目。
需要说明的是,根据key的类型数目来进行hash取余,使得计算得到的至少一个分区的个数不再与reduce的任务号一一对应了,至少一个分区的个数与关键词类别数相同。
S105、基于至少一个分区对应的至少一个分区键值对数量,和至少一个Reduce任务对应的至少一个待分配键值对数量,建立至少一个分区与至少一个Reduce任务的对应关系,以供至少一个Reduce任务对至少一个分区键值对进行处理。
当map将类型数目相同的键值对划分至一个分区,得到至少一个分区之后,map就要建立至少一个分区与至少一个reduce任务的对应关系,以供至少一个reduce任务对至少个分区键值对进行处理了。
本发明实施例中,map确定分区对应的key i,并从<key i,key i_num>中获取keyi对应的key i_num(至少一个分区数键值对数量),之后按照预设排列顺序对key i_num进行排列,得到排列后的key,与此同时,map获取至少一个reduce任务对应的至少一个待分配键值对数量,并按照预设排列顺序对至少一个待分配键值对数量进行排列,得到排列后的至少一个reduce任务,最后,map将排列后的key分配给排列后的至少一个reduce任务。
本发明实施例中,预设排列顺序可以为从大到小,或者从小到大的顺序,具体的根据实际情况进行选择,本发明实施例不做具体的限定。
本发明实施例中,map先获取至少一个reduce任务所接受的至少一个预处理键值对数量,以及至少一个reduce任务对应的至少一个当前分配键值对数量,之后,map对至少一个预处理键值对数量以及至少一个当前分配键值对数量进行减运算,确定出至少一个待分配键值对数量。
本发明实施例中,至少一个reduce任务对应的至少一个预处理键值对数量相同,具体的根据实际情况进行选择,本发明实施例不做具体的限定。
本发明实施例中,至少一个预处理键值对数量的计算方法为:
其中,Rnum为至少一个reduce任务的数量。
本发明实施例中,至少一个reduce任务上传至少一个当前分配键值对数量,设至少一个当前分配数据量集合为(N0,N1,N2,…),其初始状态均为0,当至少一个reduce任务中的一个reduce任务被分配了一个分区数据之后,至少一个当前分配数据量集合中,将该reduce任务对应的当前分配数据量更新为该分区数据量,具体的建立至少一个分区与至少一个计算节点的对应关系的伪代码为:
其中,index决定由哪个reduce任务对应哪个分区数据,index代表的是与至少一个预处理数据量相差最多的reduce任务号,即当前分配数据量最少的reduce任务,当index相同时,则按照reduce任务号顺序进行分配。
进一步地,当map将排列后的至少一个分区键值对分配至排列后的至少一个reduce任务之后,map更新至少一个reduce任务的至少一个当前分配键值对数量,并根据更新后的至少一个当前分配键值对数量和至少一个预处理键值对数量,重新确定至少一个待分配键值对数量并进行重新排列,之后,map将排列后的至少一个分区键值对分配至排列后的至少一个reduce任务。
本发明实施例中,map利用堆排序法对至少一个分区键值对按照从大到小的顺序进行排序,查找算法如下:
具体的,将存放在key[num]中的Num个元素建成初始堆,以大根堆为例,堆顶元素就是最大值,之后将堆底元素送入堆顶,此时大根堆被破坏,则将堆顶元素向下调整使其满足大根堆堆顶最大的性质,再输出堆顶原始,如此重复知道堆中只剩下一个元素,此时就完成了对至少一个分区键值对的排列过程。
本发明实施例中,map将排列后的至少一个分区键值对中的第一个分区键值对,分配给排列后的至少一个Reduce任务中的第一个Reduce任务;之后,map更新第一个Reduce任务对应的第一个当前分配键值对数量,map根据更新后的第一个当前分配键值对数量,更新至少一个当前分配键值对数量,以根据更新后的至少一个当前分配键值对数量和至少一个预处理键值对数量,重新确定至少一个待分配键值对数量;map按照预设排列顺序对重新确定的至少一个待分配键值对数量进行排列,以对至少一个Reduce任务重新排列;然后,map将排列后的至少一个分区键值对中的第二个分区键值对,分配给重新排列后的至少一个Reduce任务中的第一个Reduce任务,依次类推,直至map将排列后的至少一个分区键值对分配至排列后的至少一个Reduce任务。
进一步地,为至少一个reduce任务中的每一个reduce任务分配了至少一个分区之后,至少一个reduce任务就要去磁盘中获取相应的分区数据,并运行reduce()方法,最终将数据输出到HDFS中,以完成全部MapReduce任务。
可以理解的是,基于MapReduce的数据分配装置计算键值对集合中键的类型数目,并对键对应的标准数值与类型数目进行取余,将键值对集合中类型数目相同的键值对划分至一个分区中,得到至少一个分区,此时,至少一个分区中的每一个分区中存储的是一类键值对,之后基于MapReduce的数据分配装置根据至少一个分区键值对数量和至少一个Reduce任务的至少一个待分配键值对数量,建立至少一个分区与至少一个Reduce任务的对应关系,此时至少一个Reduce任务中的一个Reduce任务对应至少一个分区,基于MapReduce的数据分配装置将数据量大的分区指定给一个Reduce任务,将至少一个数据量小的分区指定给一个Reduce任务,尽可能的使各个Reduce任务分配到的数据量均衡,使得在数据量不均衡时,各个Reduce任务的处理时间相同,从而能够在数据分配严重不平衡时缩短整个MapReduce作业的完成时间。
实施例二
本发明实施例提供一种基于MapReduce的数据分配方法,如图3所示,该方法可以包括:
S201、基于MapReduce的数据分配装置对输入的待处理文档运行预设Map函数,得到键值对集合。
本发明实施例提供的一种数据分配方法适用于利用MapReduce计算模型处理大数据时利用partitoner操作进行数据分区的场景下。
本发明实施例中,MapReduce根据待处理文档计算输入分片,每个输入分片对应一个map任务,map按照map()方法(预设Map函数)对输入分片进行处理,得到键值对集合,map利用count()方法对键值对集合进行统计,得到相同键对应的键值对数量。
本发明实施例中,键值对的存储格式为<key,value>,其中,key为键,value为值。
S202、基于MapReduce的数据分配装置对键值对集合进行统计,得到相同键对应的键值对数量。
当基于MapReduce的数据分配装置对输入的待处理文档运行预设Map函数得到键值对集合之后,基于MapReduce的数据分配装置就要对键值对集合进行统计,得到相同键对应的键值对数量了。
本发明实施例中,在map阶段添加一个count()方法,用于计算输入分片中key的数目。
本发明实施例中,count()方法将键值对集合中相同键对应的键值对合并在一起,并统计相同键对应的键值对的数量。
S203、将键以及键对应的键值对数量存储在一个关系组中。
当基于MapReduce的数据分配装置得到相同键对应的键值对数量之后,基于MapReduce的数据分配装置就要将键以及键对应的键值对数量存储在一个关系组中了。
本发明实施例中,count()方法的输出格式为<key i,key i_num>(关系组),其中,key i_num为统计的输入分片中key i的键值对个数。
S204、基于MapReduce的数据分配装置获取关系组的组别数量。
当基于MapReduce的数据分配装置得到存储有键及键对应的键值对数量的关系组之后,基于MapReduce的数据分配装置就要获取关系组的组别数量了。
本发明实施例中,map统计<key i,key i_num>的数量,该数量为关系组的组别数目。
S205、基于MapReduce的数据分配装置将组别数量确定为类型数目。
当基于MapReduce的数据分配装置获取到组别数量之后,基于MapReduce的数据分配装置就要将组别数量确定为类型数目了。
本发明实施例中,map将<key i,key i_num>的数量确定为key的类型数目。
S206、基于MapReduce的数据分配装置利用预设算法计算键对应的标准数值。
当基于MapReduce的数据分配装置确定出键的类型数目之后,基于MapReduce的数据分配装置就要利用预设算法计算出键对应的标准数值了。
本发明实施例中,预设算法为哈希算法。
本发明实施例中,map利用哈希算法计算键对应的哈希值,即计算Hash(key)的过程。
S207、基于MapReduce的数据分配装置对标准数值与类型数目进行取余计算,以将键值对集合中类型数目相同的键值对划分至一个分区中,得到至少一个分区,至少一个分区的个数与类型数目相同。
当基于MapReduce的数据分配装置分别确定出键的类型数目及标准数值之后,基于MapReduce的数据分配装置就要对标准数值与类型数目进行取余计算,以将键值对集合中类型数目相同的键值对划分至一个分区中,得到至少一个分区了,
本发明实施例中,map将键对应的哈希值和类型数目进行取余计算,此时,类型数目相同的键值对被划分至一个分区中,得到至少一个分区,map任务为至少一个分区中创建对应的分区号,以便reduce任务更加快捷的读取对应分区里的键值对。
本发明实施例中,取余方法为:
Hash(key)%Num (1)
其中,Hash(key)为求取key i取哈希值,Num为key的类型数目。
需要说明的是,根据key的类型数目来进行hash取余,使得计算得到的至少一个分区的个数不再与reduce的任务号一一对应了,至少一个分区的个数与关键词类别数相同。
S208、基于MapReduce的数据分配装置确定出分区键值对对应的至少一个键。
当基于MapReduce的数据分配装置将类型数目相同的键值对划分至一个分区之后,基于MapReduce的数据分配装置就要确定出分区键值对对应的至少一个键了。
本发明实施例中,map确定出至少一个分区中每个分区中包括的至少一个键。
S209、基于MapReduce的数据分配装置从关系组中,获取至少一个键对应的至少一个键值对数量。
当基于MapReduce的数据分配装置确定出分区键值对对应的至少一个键之后,基于MapReduce的数据分配装置从关系组中获取至少一个键对应的至少一个键值对数量了。
本发明实施例中,map从<key i,key i_num>中获取至少一个键对应的至少一个键值对数量。
S210、基于MapReduce的数据分配装置将至少一个键值对数量相加,得到分区键值对数量。
当基于MapReduce的数据分配装置获取到至少一个键对应的至少一个键值对数量之后,基于MapReduce的数据分配装置就要将至少一个键值对数量确定为分区键值对数量了。
本发明实施例中,map将至少一个键值对数量进行相加,得到分区键值对数量。
S211、基于MapReduce的数据分配装置按照预设排列顺序,对至少一个分区键值对数量进行排列,得到排列后的至少一个分区键值对。
当基于MapReduce的数据分配装置获取到至少一个分区对应的至少一个分区建制地数量之后,基于MapReduce的数据分配装置就要按照预设排列顺序对至少一个分区键值对数量进行排列,得到排列后的至少一个分区键值对了。
本发明实施例中,预设排列顺序为从大到小排列或者从小到大排列,具体的根据实际情况进行选择,本发明实施例不做具体的限定。
本发明实施例中,map利用堆排序法对至少一个分区数据按照从大到小的顺序进行排序,查找算法如下:
具体的,将存放在key[num]中的Num个元素建成初始堆,以大根堆为例,堆顶元素就是最大值,之后将堆底元素送入堆顶,此时大根堆被破坏,则将堆顶元素向下调整使其满足大根堆堆顶最大的性质,再输出堆顶原始,如此重复知道堆中只剩下一个元素,此时就完成了对至少一个分区数据的排列过程。
S212、基于MapReduce的数据分配装置分别获取至少一个Reduce任务对应的至少一个预处理键值对数量和至少一个当前分配键值对数量。
当基于MapReduce的数据分配装置得到排列后的分区键值对之后,基于MapReduce的数据分配装置就要获取至少一个Reduce任务对应的至少一个待分配键值对数量了,首先,基于MapReduce的数据分配装置获取至少一个Reduce任务对应的至少一个预处理键值对数量和至少一个当前分配键值对数量。
本发明实施例中,map获取至少一个Reduce任务所接受的至少一个预处理键值对数量,以及至少一个Reduce任务对应的至少一个当前分配键值对数量。
本发明实施例中,至少一个Reduce任务的至少一个预处理键值对数量相同,具体的根据实际情况进行选择,本发明实施例不做具体的限定。
本发明实施例中,至少一个预处理键值对数量的计算方法为:
其中,Rnum为至少一个Reduce任务的数量。
本发明实施例中,至少一个Reduce任务上传至少一个当前分配键值对数量,设至少一个当前分配数据量集合为(N0,N1,N2,…),其初始状态均为0,当至少一个Reduce任务中的一个Reduce任务被分配了一个分区数据之后,至少一个当前分配数据量集合中,该Reduce任务对应的当前分配数据量更新为该分区数据量。
S213、基于MapReduce的数据分配装置将至少一个预处理键值对数量和至少一个当前分配键值对数量进行减运算,计算出至少一个待分配键值对数量。
当基于MapReduce的数据分配装置获取到至少一个预处理键值对数量和至少一个当前分配键值对数量之后,基于MapReduce的数据分配装置就要将至少一个预处理键值对数量和至少一个当前分配键值对数量进行减运算,计算出至少一个待分配键值对数量了。
本发明实施例中,map将至少一个预处理键值对数量减去至少一个当前分配键值对数量,得到至少一个待分配键值对数量。
S214、基于MapReduce的数据分配装置按照预设排列顺序,对至少一个待分配键值对数量进行排列,得到排列后的至少一个Reduce任务。
当基于MapReduce的数据分配装置计算出至少一个待分配键值对数量之后,基于MapReduce的数据分配装置就要按照预设排列顺序,对至少一个待分配键值对数量进行排列,得到排列后的至少一个Reduce任务了。
本发明实施例中,map按照预设排列顺序,对至少一个待分配键值对数量进行排列,得到排列后的至少一个Reduce任务。
S215、基于MapReduce的数据分配装置将排列后的至少一个分区键值对分配至排列后的至少一个Reduce任务上,以供至少一个Reduce任务对至少一个分区键值对进行处理,至少一个Reduce任务中的一个Reduce任务对应至少一个分区。
当基于MapReduce的数据分配装置的得到排列后的至少一个Reduce任务之后,基于MapReduce的数据分配装置就要将排列后的至少一个分区键值对分配至排列后的至少一个Reduce任务上,以供至少一个Reduce任务对至少一个分区键值对进行处理了。
本发明实施例中,map依次将排列后的至少一个分区键值对分配至排列后的至少一个Reduce任务,具体的,建立至少一个分区键值对与至少一个Reduce任务的对应关系的伪代码为:
diff[j]=avg-Nj;//每个reducer与理想均值的差
int max=diff[0];
int rsize;//reducer数量
int index=0;
for(int i=0;i<rsize;i++){//遍历数组,求最大值所对应的index。若相同,则仍取第一个取到的i
if(diff[i]>max){
max=sum[i];
index=i;
}
}
return index;
其中,index决定由哪个reduce任务对应哪个分区数据,index代表的是与至少一个预处理键值对数量相差最多的reduce任务号,即当前分配数据量最少的reduc任务,当index相同时,则按照reduce任务号顺序进行分配。
本发明实施例中,map将排列后的至少一个分区键值对中的第一个分区键值对,分配给排列后的至少一个Reduce任务中的第一个Reduce任务;之后,map更新第一个Reduce任务对应的第一个当前分配键值对数量,map根据更新后的第一个当前分配键值对数量,更新至少一个当前分配键值对数量,以根据更新后的至少一个当前分配键值对数量和至少一个预处理键值对数量,重新确定至少一个待分配键值对数量;map按照预设排列顺序对重新确定的至少一个待分配键值对数量进行排列,以对至少一个Reduce任务重新排列;然后,map将排列后的至少一个分区键值对中的第二个分区键值对,分配给重新排列后的至少一个Reduce任务中的第一个Reduce任务,依次类推,直至map将排列后的至少一个分区键值对分配至排列后的至少一个Reduce任务。
进一步地,为至少一个reduce任务中的每一个reduce任务分配了至少一个分区键值对之后,至少一个reduce任务就要去磁盘中获取相应的分区数据,并运行reduce()方法,最终将数据输出到HDFS中,以完成全部MapReduce任务。
可以理解的是,基于MapReduce的数据分配装置计算键值对集合中键的类型数目,并对键对应的标准数值与类型数目进行取余,将键值对集合中类型数目相同的键值对划分至一个分区中,得到至少一个分区,此时,至少一个分区中的每一个分区中存储的是一类键值对,之后基于MapReduce的数据分配装置根据至少一个分区键值对数量和至少一个Reduce任务的至少一个待分配键值对数量,建立至少一个分区与至少一个Reduce任务的对应关系,此时至少一个Reduce任务中的一个Reduce任务对应至少一个分区,基于MapReduce的数据分配装置将数据量大的分区指定给一个Reduce任务,将至少一个数据量小的分区指定给一个Reduce任务,尽可能的使各个Reduce任务分配到的数据量均衡,使得在数据量不均衡时,各个Reduce任务的处理时间相同,从而能够在数据分配严重不平衡时缩短整个MapReduce作业的完成时间。
实施例三
图4为本发明实施例提出的基于MapReduce的数据分配装置的组成结构示意图一,在实际应用中,基于实施例一至实施例二的同一发明构思下,如图4所示,本发明实施例的基于MapReduce的数据分配装置1包括:处理器10、存储器11及通信总线12。在具体的实施例的过程中,上述处理器10可以为特定用途集成电路(ASIC,Application SpecificIntegrated Circuit)、数字信号处理器(DSP,Digital Signal Processor)、数字信号处理设备(DSPD,Digital Signal Processing Device)、可编程逻辑设备(PLD,ProgrammableLogic Device)、现场可编程门阵列(FPGA,Field Programmable Gate Array)、CPU、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本发明实施例不作具体限定。
在本发明的实施例中,上述通信总线12用于实现处理器10和存储器11之间的连接通信;上述处理器10用于执行存储器11中存储的运行程序,以实现以下步骤:
上述处理器10,用于对输入的待处理文档运行预设Map函数,得到键值对集合;利用预设计数方法计算所述键值对集合中键的类型数目;利用预设算法计算键对应的标准数值;对所述标准数值与所述类型数目进行取余计算,以将所述键值对集合中所述类型数目相同的键值对划分至一个分区中,得到至少一个分区,所述至少一个分区的个数与所述类型数目相同;基于所述至少一个分区对应的至少一个分区键值对数量,和至少一个Reduce任务对应的至少一个待分配键值对数量,建立所述至少一个分区与所述至少一个Reduce任务的对应关系,以供所述至少一个Reduce任务对所述至少一个分区键值对进行处理。
本发明实施例中,进一步地,所述至少一个Reduce任务中的一个Reduce任务对应至少一个分区。
本发明实施例中,进一步地,上述处理器10,还用于对所述键值对集合进行统计,得到相同键对应的键值对数量;将键以及所述键对应的所述键值对数量存储在一个关系组中;获取关系组的组别数量;将所述组别数量确定为所述类型数目。
在本发明实施例中,进一步地,上述处理器10,还用于确定分区键值对对应的至少一个键;从所述关系组中,获取所述至少一个键对应的至少一个键值对数量;将所述至少一个键值对数量相加,得到分区键值对数量。
在本发明实施例中,进一步地,上述处理器10,还用于按照预设排列顺序,对所述至少一个分区键值对数量进行排列,得到排列后的所述至少一个分区键值对;按照所述预设排列顺序,对所述至少一个待分配键值对数量进行排列,得到排列后的所述至少一个Reduce任务;将所述排列后的所述至少一个分区键值对分配至所述排列后的所述至少一个Reduce任务上。
在本发明实施例中,进一步地,上述处理器10,还用于分别获取所述至少一个Reduce任务对应的至少一个预处理键值对数量和至少一个当前分配键值对数量;将所述至少一个预处理键值对数量和所述至少一个当前分配键值对数量进行减运算,计算出所述至少一个待分配键值对数量。
在本发明实施例中,进一步地,上述处理器10,还用于将排列后的所述至少一个分区键值对中的第一个分区键值对,分配给排列后的所述至少一个Reduce任务中的第一个Reduce任务;更新所述第一个Reduce任务对应的第一个当前分配键值对数量;根据更新后的所述第一个当前分配键值对数量,对所述至少一个Reduce任务重新排列;将排列后的所述至少一个分区键值对中的第二个分区键值对,分配给重新排列后的所述至少一个Reduce任务中的第一个Reduce任务;直至将所述排列后的所述至少一个分区键值对分配至所述排列后的所述至少一个Reduce任务。
在本发明实施例中,进一步地,上述处理器10,还用于根据更新后的所述第一个当前分配键值对数量,更新所述至少一个当前分配键值对数量;根据所述更新后的至少一个当前分配键值对数量和所述至少一个预处理键值对数量,重新确定所述至少一个待分配键值对数量;按照所述预设排列顺序对重新确定的所述至少一个待分配键值对数量进行排列,以对所述至少一个Reduce任务重新排列。
本发明实施例提出的基于MapReduce的数据分配装置,对输入的待处理文档运行预设Map函数,得到键值对集合;利用预设计数方法计算键值对集合中键的类型数目;利用预设算法计算键对应的标准数值;对标准数值与类型数目进行取余计算,以将键值对集合中类型数目相同的键值对划分至一个分区中,得到至少一个分区,至少一个分区的个数与类型数目相同;基于至少一个分区对应的至少一个分区键值对数量,和至少一个Reduce任务对应的至少一个待分配键值对数量,建立至少一个分区与至少一个Reduce任务的对应关系,以供至少一个Reduce任务对至少一个分区键值对进行处理。由此可见,本发明实施例提出的基于MapReduce的数据分配装置,计算键值对集合中键的类型数目,并对键对应的标准数值与类型数目进行取余,将键值对集合中类型数目相同的键值对划分至一个分区中,得到至少一个分区,此时,至少一个分区中的每一个分区中存储的是一类键值对,之后基于MapReduce的数据分配装置根据至少一个分区键值对数量和至少一个Reduce任务的至少一个待分配键值对数量,建立至少一个分区与至少一个Reduce任务的对应关系,此时至少一个Reduce任务中的一个Reduce任务对应至少一个分区,基于MapReduce的数据分配装置将数据量大的分区指定给一个Reduce任务,将至少一个数据量小的分区指定给一个Reduce任务,尽可能的使各个Reduce任务分配到的数据量均衡,使得在数据量不均衡时,各个Reduce任务的处理时间相同,从而能够在数据分配严重不平衡时缩短整个MapReduce作业的完成时间。
本发明实施例提供一种计算机可读存储介质,上述计算机可读存储介质存储有一个或者多个程序,上述一个或者多个程序可被一个或者多个处理器执行,应用于基于MapReduce的数据分配装置中,该程序被处理器执行时实现如实施例一和实施例二的方法。
具体来讲,本实施例中的一种基于MapReduce的数据分配方法对应的程序指令被一电子设备读取或被执行时,包括如下步骤:
对输入的待处理文档运行预设Map函数,得到键值对集合;
利用预设计数方法计算所述键值对集合中键的类型数目;
利用预设算法计算键对应的标准数值;
对所述标准数值与所述类型数目进行取余计算,以将所述键值对集合中所述类型数目相同的键值对划分至一个分区中,得到至少一个分区,所述至少一个分区的个数与所述类型数目相同;
基于所述至少一个分区对应的至少一个分区键值对数量,和至少一个Reduce任务对应的至少一个待分配键值对数量,建立所述至少一个分区与所述至少一个Reduce任务的对应关系,以供所述至少一个Reduce任务对所述至少一个分区键值对进行处理。
在本发明实施例中,进一步地,所述至少一个Reduce任务中的一个Reduce任务对应至少一个分区。
在本发明的实施例中,进一步地,利用预设计数方法计算所述键值对集合中键的类型数目,上述一个或者多个程序被上述一个或者多个处理器执行,具体实现以下步骤:
对所述键值对集合进行统计,得到相同键对应的键值对数量;
将键以及所述键对应的所述键值对数量存储在一个关系组中;
获取关系组的组别数量;
将所述组别数量确定为所述类型数目。
在本发明的实施例中,进一步地,对所述标准数值与所述类型数目进行取余计算之后,所述建立所述至少一个分区与所述至少一个Reduce任务的对应关系之前,上述一个或者多个程序被上述一个或者多个处理器执行,还实现以下步骤:
确定分区键值对对应的至少一个键;
从所述关系组中,获取所述至少一个键对应的至少一个键值对数量;
将所述至少一个键值对数量相加,得到分区键值对数量。
在本发明的实施例中,进一步地,基于所述至少一个分区对应的至少一个分区键值对数量,和至少一个Reduce任务对应的至少一个待分配键值对数量,建立所述至少一个分区与所述至少一个Reduce任务的对应关系,上述一个或者多个程序被上述一个或者多个处理器执行,具体实现以下步骤:
按照预设排列顺序,对所述至少一个分区键值对数量进行排列,得到排列后的所述至少一个分区键值对;
按照所述预设排列顺序,对所述至少一个待分配键值对数量进行排列,得到排列后的所述至少一个Reduce任务;
将所述排列后的所述至少一个分区键值对分配至所述排列后的所述至少一个Reduce任务上。
在本发明的实施例中,进一步地,按照所述预设排列顺序,对所述至少一个待分配键值对数量进行排列,得到排列后的所述至少一个Reduce任务之前,上述一个或者多个程序被上述一个或者多个处理器执行,还实现以下步骤:
分别获取所述至少一个Reduce任务对应的至少一个预处理键值对数量和至少一个当前分配键值对数量;
将所述至少一个预处理键值对数量和所述至少一个当前分配键值对数量进行减运算,计算出所述至少一个待分配键值对数量。
在本发明的实施例中,进一步地,所述将所述排列后的所述至少一个分区键值对分配至所述排列后的所述至少一个Reduce任务,上述一个或者多个程序被上述一个或者多个处理器执行,具体实现以下步骤:
将排列后的所述至少一个分区键值对中的第一个分区键值对,分配给排列后的所述至少一个Reduce任务中的第一个Reduce任务;
更新所述第一个Reduce任务对应的第一个当前分配键值对数量;
根据更新后的所述第一个当前分配键值对数量,对所述至少一个Reduce任务重新排列;
将排列后的所述至少一个分区键值对中的第二个分区键值对,分配给重新排列后的所述至少一个Reduce任务中的第一个Reduce任务;
直至将所述排列后的所述至少一个分区键值对分配至所述排列后的所述至少一个Reduce任务。
在本发明的实施例中,进一步地,根据更新后的所述第一个当前分配键值对数量,对所述至少一个Reduce任务重新排列,上述一个或者多个程序被上述一个或者多个处理器执行,具体实现以下步骤:
根据更新后的所述第一个当前分配键值对数量,更新所述至少一个当前分配键值对数量;
根据所述更新后的至少一个当前分配键值对数量和所述至少一个预处理键值对数量,重新确定所述至少一个待分配键值对数量;
按照所述预设排列顺序对重新确定的所述至少一个待分配键值对数量进行排列,以对所述至少一个Reduce任务重新排列。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种基于MapReduce的数据分配方法,其特征在于,所述方法包括:
对输入的待处理文档运行预设Map函数,得到键值对集合;
利用预设计数方法计算所述键值对集合中键的类型数目;
利用预设算法计算键对应的标准数值;
对所述标准数值与所述类型数目进行取余计算,以将所述键值对集合中所述类型数目相同的键值对划分至一个分区中,得到至少一个分区,所述至少一个分区的个数与所述类型数目相同;
基于所述至少一个分区对应的至少一个分区键值对数量,和至少一个Reduce任务对应的至少一个待分配键值对数量,建立所述至少一个分区与所述至少一个Reduce任务的对应关系,以供所述至少一个Reduce任务对所述至少一个分区键值对进行处理。
2.根据权利要求1所述的方法,其特征在于,所述至少一个Reduce任务中的一个Reduce任务对应至少一个分区。
3.根据权利要求1所述的方法,其特征在于,所述利用预设计数方法计算所述键值对集合中键的类型数目,包括:
对所述键值对集合进行统计,得到相同键对应的键值对数量;
将键以及所述键对应的所述键值对数量存储在一个关系组中;
获取关系组的组别数量;
将所述组别数量确定为所述类型数目。
4.根据权利要求3所述的方法,其特征在于,所述对所述标准数值与所述类型数目进行取余计算之后,所述建立所述至少一个分区与所述至少一个Reduce任务的对应关系之前,所述方法还包括:
确定分区键值对对应的至少一个键;
从所述关系组中,获取所述至少一个键对应的至少一个键值对数量;
将所述至少一个键值对数量相加,得到分区键值对数量。
5.根据权利要求1所述的方法,其特征在于,所述基于所述至少一个分区对应的至少一个分区键值对数量,和至少一个Reduce任务对应的至少一个待分配键值对数量,建立所述至少一个分区与所述至少一个Reduce任务的对应关系,包括:
按照预设排列顺序,对所述至少一个分区键值对数量进行排列,得到排列后的所述至少一个分区键值对;
按照所述预设排列顺序,对所述至少一个待分配键值对数量进行排列,得到排列后的所述至少一个Reduce任务;
将所述排列后的所述至少一个分区键值对分配至所述排列后的所述至少一个Reduce任务上。
6.根据权利要求5所述的方法,其特征在于,所述按照所述预设排列顺序,对所述至少一个待分配键值对数量进行排列,得到排列后的所述至少一个Reduce任务之前,所述方法还包括:
分别获取所述至少一个Reduce任务对应的至少一个预处理键值对数量和至少一个当前分配键值对数量;
将所述至少一个预处理键值对数量和所述至少一个当前分配键值对数量进行减运算,计算出所述至少一个待分配键值对数量。
7.根据权利要求6所述的方法,其特征在于,所述将所述排列后的所述至少一个分区键值对分配至所述排列后的所述至少一个Reduce任务,包括:
将排列后的所述至少一个分区键值对中的第一个分区键值对,分配给排列后的所述至少一个Reduce任务中的第一个Reduce任务;
更新所述第一个Reduce任务对应的第一个当前分配键值对数量;
根据更新后的所述第一个当前分配键值对数量,对所述至少一个Reduce任务重新排列;
将排列后的所述至少一个分区键值对中的第二个分区键值对,分配给重新排列后的所述至少一个Reduce任务中的第一个Reduce任务;
直至将所述排列后的所述至少一个分区键值对分配至所述排列后的所述至少一个Reduce任务。
8.根据权利要求7所述的方法,其特征在于,所述根据更新后的所述第一个当前分配键值对数量,对所述至少一个Reduce任务重新排列,包括:
根据更新后的所述第一个当前分配键值对数量,更新所述至少一个当前分配键值对数量;
根据所述更新后的至少一个当前分配键值对数量和所述至少一个预处理键值对数量,重新确定所述至少一个待分配键值对数量;
按照所述预设排列顺序对重新确定的所述至少一个待分配键值对数量进行排列,以对所述至少一个Reduce任务重新排列。
9.一种基于MapReduce的数据分配装置,其特征在于,所述基于MapReduce的数据分配装置包括:处理器、存储器及通信总线,所述处理器用于执行所述存储器中存储的运行程序,以实现以下步骤:
所述处理器,用于对输入的待处理文档运行预设Map函数,得到键值对集合;利用预设计数方法计算所述键值对集合中键的类型数目;利用预设算法计算键对应的标准数值;对所述标准数值与所述类型数目进行取余计算,以将所述键值对集合中所述类型数目相同的键值对划分至一个分区中,得到至少一个分区,所述至少一个分区的个数与所述类型数目相同;基于所述至少一个分区对应的至少一个分区键值对数量,和至少一个Reduce任务对应的至少一个待分配键值对数量,建立所述至少一个分区与所述至少一个Reduce任务的对应关系,以供所述至少一个Reduce任务对所述至少一个分区键值对进行处理。
10.一种计算机可读存储介质,其上存储有计算机程序,应用于基于MapReduce的数据分配装置,其特征在于,该计算机程序被处理器执行时实现如权利要求1-8任一项所述的方法。
CN201810373615.7A 2018-04-24 2018-04-24 一种基于MapReduce的数据分配方法、装置及计算机可读存储介质 Active CN108595268B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810373615.7A CN108595268B (zh) 2018-04-24 2018-04-24 一种基于MapReduce的数据分配方法、装置及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810373615.7A CN108595268B (zh) 2018-04-24 2018-04-24 一种基于MapReduce的数据分配方法、装置及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN108595268A true CN108595268A (zh) 2018-09-28
CN108595268B CN108595268B (zh) 2021-03-09

Family

ID=63614475

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810373615.7A Active CN108595268B (zh) 2018-04-24 2018-04-24 一种基于MapReduce的数据分配方法、装置及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN108595268B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109325034A (zh) * 2018-10-12 2019-02-12 平安科技(深圳)有限公司 数据处理方法、装置、计算机设备及存储介质
CN109783523A (zh) * 2019-01-24 2019-05-21 广州虎牙信息科技有限公司 一种数据处理方法、装置、设备和存储介质
CN109901931A (zh) * 2019-03-07 2019-06-18 北京奇艺世纪科技有限公司 一种归约函数数量确定方法、装置及系统
CN110673794A (zh) * 2019-09-18 2020-01-10 中兴通讯股份有限公司 分布式数据的均衡处理方法、装置、计算终端和存储介质
CN110764705A (zh) * 2019-10-22 2020-02-07 北京锐安科技有限公司 一种数据的读写方法、装置、设备和存储介质
CN111163056A (zh) * 2019-12-06 2020-05-15 西安电子科技大学 一种针对MapReduce计算的数据保密方法及系统
CN111240637A (zh) * 2020-02-16 2020-06-05 苏州浪潮智能科技有限公司 一种云管理平台下的公式计算方法及系统
CN111444148A (zh) * 2020-04-09 2020-07-24 南京大学 基于MapReduce的数据传输方法和装置
CN114780541A (zh) * 2022-04-01 2022-07-22 港珠澳大桥管理局 微批流处理系统中的数据分区方法、装置、设备和介质
CN114780541B (zh) * 2022-04-01 2024-04-12 港珠澳大桥管理局 微批流处理系统中的数据分区方法、装置、设备和介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541858A (zh) * 2010-12-07 2012-07-04 腾讯科技(深圳)有限公司 基于映射和规约的数据均衡性处理方法、装置及系统
US20140215477A1 (en) * 2013-01-31 2014-07-31 International Business Machines Corporation Realizing graph processing based on the mapreduce architecture
CN105095413A (zh) * 2015-07-09 2015-11-25 北京京东尚科信息技术有限公司 一种解决数据倾斜的方法及装置
CN106598729A (zh) * 2016-11-18 2017-04-26 深圳市证通电子股份有限公司 分布式并行计算系统的数据分配方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541858A (zh) * 2010-12-07 2012-07-04 腾讯科技(深圳)有限公司 基于映射和规约的数据均衡性处理方法、装置及系统
US20140215477A1 (en) * 2013-01-31 2014-07-31 International Business Machines Corporation Realizing graph processing based on the mapreduce architecture
CN105095413A (zh) * 2015-07-09 2015-11-25 北京京东尚科信息技术有限公司 一种解决数据倾斜的方法及装置
CN106598729A (zh) * 2016-11-18 2017-04-26 深圳市证通电子股份有限公司 分布式并行计算系统的数据分配方法及系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
王刚等: "MapReduce中数据倾斜解决方法的研究", 《计算机技术与发展》 *
王卓等: "基于增量式分区策略的MapReduce数据均衡方法", 《计算机学报》 *
高宇飞: "MapReduce计算模型下数据倾斜处理方法的研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109325034A (zh) * 2018-10-12 2019-02-12 平安科技(深圳)有限公司 数据处理方法、装置、计算机设备及存储介质
CN109325034B (zh) * 2018-10-12 2023-10-20 平安科技(深圳)有限公司 数据处理方法、装置、计算机设备及存储介质
CN109783523A (zh) * 2019-01-24 2019-05-21 广州虎牙信息科技有限公司 一种数据处理方法、装置、设备和存储介质
CN109783523B (zh) * 2019-01-24 2022-02-25 广州虎牙信息科技有限公司 一种数据处理方法、装置、设备和存储介质
CN109901931A (zh) * 2019-03-07 2019-06-18 北京奇艺世纪科技有限公司 一种归约函数数量确定方法、装置及系统
CN109901931B (zh) * 2019-03-07 2021-06-15 北京奇艺世纪科技有限公司 一种归约函数数量确定方法、装置及系统
WO2021052169A1 (zh) * 2019-09-18 2021-03-25 中兴通讯股份有限公司 分布式数据的均衡处理方法、装置、计算终端和存储介质
CN110673794A (zh) * 2019-09-18 2020-01-10 中兴通讯股份有限公司 分布式数据的均衡处理方法、装置、计算终端和存储介质
CN110764705A (zh) * 2019-10-22 2020-02-07 北京锐安科技有限公司 一种数据的读写方法、装置、设备和存储介质
CN110764705B (zh) * 2019-10-22 2023-08-04 北京锐安科技有限公司 一种数据的读写方法、装置、设备和存储介质
CN111163056A (zh) * 2019-12-06 2020-05-15 西安电子科技大学 一种针对MapReduce计算的数据保密方法及系统
CN111240637A (zh) * 2020-02-16 2020-06-05 苏州浪潮智能科技有限公司 一种云管理平台下的公式计算方法及系统
CN111240637B (zh) * 2020-02-16 2023-01-10 苏州浪潮智能科技有限公司 一种云管理平台下的公式计算方法及系统
CN111444148A (zh) * 2020-04-09 2020-07-24 南京大学 基于MapReduce的数据传输方法和装置
CN111444148B (zh) * 2020-04-09 2023-09-05 南京大学 基于MapReduce的数据传输方法和装置
CN114780541A (zh) * 2022-04-01 2022-07-22 港珠澳大桥管理局 微批流处理系统中的数据分区方法、装置、设备和介质
CN114780541B (zh) * 2022-04-01 2024-04-12 港珠澳大桥管理局 微批流处理系统中的数据分区方法、装置、设备和介质

Also Published As

Publication number Publication date
CN108595268B (zh) 2021-03-09

Similar Documents

Publication Publication Date Title
CN108595268A (zh) 一种基于MapReduce的数据分配方法、装置及计算机可读存储介质
CN103488684B (zh) 基于缓存数据多线程处理的电力可靠性指标快速计算方法
Mitzenmacher et al. Load balancing with memory
CN108810041A (zh) 一种分布式缓存系统的数据写入及扩容方法、装置
CN103593298B (zh) 内存回收方法和装置
CN105989076A (zh) 一种数据统计方法以及装置
CN107368260A (zh) 基于分布式系统的存储空间整理方法、装置及系统
CN107179878A (zh) 基于应用优化的数据存储的方法和装置
CN110287197A (zh) 一种数据存储方法、迁移方法及装置
CN107957976A (zh) 一种计算方法及相关产品
CN107133228A (zh) 一种数据重分布的方法及装置
CN108121688A (zh) 一种计算方法及相关产品
CN106878370A (zh) 一种本地缓存的更新方法和设备
CN106649146A (zh) 一种内存释放方法及装置
CN107239485A (zh) 数据库操作方法、装置及系统
CN108108190A (zh) 一种计算方法及相关产品
CN107391039B (zh) 一种数据对象存储方法和装置
CN112085644A (zh) 多列数据排序方法、装置、可读存储介质和电子设备
CN107957977A (zh) 一种计算方法及相关产品
CN108415934A (zh) 一种Hive表修复方法、装置、设备及计算机可读存储介质
CN111159140A (zh) 数据处理方法、装置、电子设备及存储介质
JP6812826B2 (ja) 格納方法、格納装置及び格納プログラム
CN107172222A (zh) 一种基于分布式存储系统的数据存储方法及装置
CN109165325A (zh) 用于切分图数据的方法、装置、设备以及计算机可读存储介质
CN108920300A (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