CN107045512B - 一种数据交换方法及系统 - Google Patents
一种数据交换方法及系统 Download PDFInfo
- Publication number
- CN107045512B CN107045512B CN201610082589.3A CN201610082589A CN107045512B CN 107045512 B CN107045512 B CN 107045512B CN 201610082589 A CN201610082589 A CN 201610082589A CN 107045512 B CN107045512 B CN 107045512B
- Authority
- CN
- China
- Prior art keywords
- merging
- areas
- data
- interval
- exchanged data
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据交换方法及系统。一种数据交换方法,包括:获取传统关系型数据库管理系统中并行任务节点的数量,获取大数据平台中的被交换数据和被交换数据的ID值;将被交换数据按被交换数据的ID值的固定顺序均分成第一特定数量的预合并区,第一特定数量为N与第一扩展值的乘积,第一扩展值为大于1的整数;依次将预合并区合并为N个合并区,使N个合并区内的前N‑1个合并区中的被交换数据量在第一区间内,分别将N个合并区分配给各并行任务节点执行数据交换。本发明实现了使分配给各并行任务节点的被交换数据更接近负载均衡,使合并过程耗时短,保证数据量较大时的交换过程在可以预计的合理时间范围内完成。
Description
技术领域
本发明涉及数据库领域,尤其涉及一种数据交换方法及系统。
背景技术
目前,大数据平台(如,Hadoop)和传统关系型数据库管理系统DBMS(DatabaseManagement System)之间的数据交换中,数据交换通常采用SQOOP等开源社区分布式数据抽取工具来执行,如SQOOP以MapReduce的方式在Hadoop中运行。数据库交换任务常规做法为以N份的方式给N个节点并行执行,N值的大小取决用户的设置和硬件支持。理论上N值越大在相同时间内的数据吞吐总量越高,性能越好。N值一旦设定,SQOOP会以N为除数,数据总量为被除数,将数据以一个用户自定义的ID(如不重复的主关键字,primary key)按顺序排列,顺序分割成等量的区间,供N个节点进行并行执行,然而往往会产生每个任务的工作量不均衡的问题,造成执行任务时间过长。如何更好的解决每个并行任务节点的工作量不均衡的问题,从而达到基本负载平衡,提高节点的利益率,是业界亟需解决的问题。
发明内容
本发明提供了一种数据交换方法及系统,用于解决大数据平台与传统关系型数据库管理系统之间数据交换过程中,每个并行任务节点的工作量不均衡而使交换数据的时间过长的问题。
本发明实施例采用以下技术方案:
本发明提供了一种数据交换方法,该方法包括:
获取传统关系型数据库管理系统中并行任务节点的数量N,获取大数据平台中的被交换数据和所述被交换数据的ID值;
将所述被交换数据按所述被交换数据的ID值的固定顺序均分成第一特定数量的预合并区,所述第一特定数量为N与第一扩展值的乘积,所述第一扩展值为大于1的整数;
依次将所述预合并区合并为N个合并区,使所述N个合并区内的前N-1个合并区中的被交换数据量在第一区间内,分别将所述N个合并区分配给各并行任务节点执行数据交换。
优选的,所述第一扩展值为10。
优选的,所述依次将所述预合并区合并为N个合并区,使所述N个合并区内的前N-1个合并区中的被交换数据量在第一区间内,包括:
逐个合并所述预合并区,直至已合并的所述预合并区的被交换数据量之和在第一区间内,生成合并区;
重复上述步骤,直至对第一特定数据量的预合并区的合并完成,生成N个合并区;或重复上述步骤,直至剩余的预合并区的被交换数据量之和小于第一区间的下限,将剩余的预合并区合并作为所述N个合并区中的一个合并区。
优选的,所述逐个合并所述预合并区,直至已合并的所述预合并区的被交换数据量之和在第一区间内,生成合并区,包括:
逐个合并所述预合并区,判断已合并的所述预合并区的被交换数据量之和是否在第一区间内;
若是,则生成合并区;若否,且小于第一区间下限,则继续上述步骤;若否,且大于第一区间上限,则将最后一个预和并区拆分成第二特定数量的预合并区,并重新逐个合并所述第二特定数量的预合并区,直至已合并的所述预合并区的被交换数据量之和在第一区间内,则生成合并区。
优选的,所述依次将所述预合并区合并为N个合并区之前,还包括:
根据所述被交换数据的总量和所述并行任务节点的数量得出各并行任务节点的工作量平均值;
设置1倍的工作量平均值作为第一区间的下限,设置第一区间的上限,其中,第一区间的上限为动态上限,取值范围为1至1.7倍的工作量平均值。
本发明还提供了一种数据交换系统,该系统包括:
参数获取单元,用于获取传统关系型数据库管理系统中并行任务节点的数量N,获取大数据平台中的被交换数据和所述被交换数据的ID值;
预合并区生成单元,用于将所述被交换数据按所述被交换数据的ID值的固定顺序均分成第一特定数量的预合并区,所述第一特定数量为N与第一扩展值的乘积,所述第一扩展值为大于1的整数;
合并单元,用于依次将所述预合并区合并为N个合并区,使所述N个合并区内的前N-1个合并区中的被交换数据量在第一区间内,分别将所述N个合并区分配给各并行任务节点执行数据交换。
优选的,所述第一扩展值为10。
优选的,所述合并单元,包括合并模块和分配模块;
所述合并模块,用于:逐个合并所述预合并区,直至已合并的所述预合并区的被交换数据量之和在第一区间内,生成合并区;重复执行上述方式,直至对第一特定数据量的预合并区的合并完成,生成N个合并区;或重复执行上述方式,直至剩余的预合并区的被交换数据量之和小于第一区间的下限,将剩余的预合并区合并作为所述N个合并区中的一个合并区;
所述分配模块,用于:分别将所述N个合并区分配给各并行任务节点执行数据交换。
优选的,所述合并模块,具体用于:
逐个合并所述预合并区,判断已合并的所述预合并区的被交换数据量之和是否在第一区间内;若是,则生成合并区;若否,且小于第一区间下限,则继续上述方式逐个合并所述预合并区并判断;若否,且大于第一区间上限,则将最后一个预和并区拆分成第二特定数量的预合并区,并重新逐个合并所述第二特定数量的预合并区,直至已合并的所述预合并区的被交换数据量之和在第一区间内,则生成合并区;重复执行上述方式,直至对第一特定数据量的预合并区的合并完成,生成N个合并区;或重复执行上述方式,直至剩余的预合并区的被交换数据量之和小于第一区间的下限,将剩余的预合并区合并作为所述N个合并区中的一个合并区。
优选的,还包括:
工作量计算单元,用于根据所述被交换数据的总量和所述并行任务节点的数量得出各并行任务节点的工作量平均值;
第一区间设置单元,用于设置1倍的工作量平均值作为第一区间的下限,设置第一区间的上限,其中,第一区间的上限为动态上限,取值范围为1至1.7倍的工作量平均值。
与现有技术相比,本发明提供的一种数据交换方法及系统,具有以下有益效果:
本发明通过将被交换数据的均分份数从N份增加至第一扩展值乘以N份,将被交换数据按被交换数据的ID值的固定顺序均分成若干预合并区,并依次将预合并区合并为N个合并区,使细化了分配任务的精度到前N-1个合并区均落入第一区间内,以保证整个数据交换过程在可以预计的合理时间范围内完成,特别适用于数据量较大的数据交换过程;使后期分配给各并行任务节点的被交换数据更接近负载均衡,通过逐个合并预合并区,同时判断拆分较大的预合并区的方式,使合并过程耗时短。
附图说明
图1是本发明提供的一种数据交换方法的第一个实施例的方法流程图。
图2是本发明提供的一种数据交换方法的第二个实施例的方法流程图一。
图3是本发明提供的一种数据交换方法的第二个实施例的方法流程图二。
图4是本发明提供的一种数据交换系统的第一个实施例的结构框图。
图5是本发明提供的一种数据交换系统的第二个实施例的结构框图一。
图6是本发明提供的一种数据交换系统的第二个实施例的结构框图二。
图7a是本发明提供的一种数据交换方法及系统的实例中的数据量分布图一。
图7b是本发明提供的一种数据交换方法及系统的实例中的数据量分布图二。
图7c是本发明提供的一种数据交换方法及系统的实例中的数据量分布图三。
具体实施方式
为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面将结合附图对本发明实施例的技术方案作进一步的详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1示出根据本发明提供的一种数据交换方法第一个实施例的方法流程图。本实施例的一种数据交换方法主要由如SQOOP以MapReduce的方式在Hadoop中执行。用于大数据平台(如,Hadoop)和传统关系型数据库管理系统DBMS之间的数据交换。其中,传统关系型数据库管理系统为一个虚拟的数据库管理系统,连接了大于等于N台的服务器,服务器均可以作为并行任务节点,可以供用户预先设定选取并行任务节点的数量,该方法包括以下步骤:
S11:获取传统关系型数据库管理系统中并行任务节点的数量N,获取大数据平台中的被交换数据和被交换数据的ID值。
其中,N为用户预先选取的并行任务节点的数量或默认为传统关系型数据库管理系统管理连接的所有服务器的数量。获取大数据平台中的被交换数据和被交换数据的ID值,一般被交换数据数量众多,可能为多达数以亿计的数据量,每个被交换数据的ID值可以为不重复的主关键字。
S12:将被交换数据按被交换数据的ID值的固定顺序均分成第一特定数量的预合并区,第一特定数量为N与第一扩展值的乘积,第一扩展值为大于1的整数。
具体的,固定顺序可以为按照被交换数据的ID值的大小顺序(从大到小或者从小到大)来分配,由于现有技术中是按被交换数据的ID值的大小均分为N个区域,并将N个区域内的ID值对应的背交互数据分配给N个并行任务节点,因此,造成了负载不均衡,浪费时间的问题,而本实施例将被交换数据按被交换数据的ID值的大小顺序均分成第一特定数量的预合并区,细化了分配任务的精度,使后期分配给各并行任务节点的被交换数据更接近负载均衡。由于数据交换之前,被交换数据的ID值分布情况不得而知,因此,第一扩展值尽量取大,以便与更好克服负载不均衡的问题,但第一扩展值太大容易使生成预合并区以及合并区花费过多时间,因此,本实施例中,第一扩展值可以为预先由用户自定义的,也可以为之前的数据交换统计得到的经验值,第一扩展值优选为10,以保证整个数据交换过程在可以预计的合理时间范围内完成,避免负载过度不均衡造成的时间浪费。
例如:在取得被交换数据表的ID值的最大值MAX与最小值MIN后,将ID值取值区域[MIN,MAX]均匀划分为虚拟节点个数(第一特定数量)为N*m的预合并区VID[N*m],然后分别统计各预合并区内被交换数据的数据量,保存在一数组count[N*m]中,其中,m为第一扩展值。
S13:依次将预合并区合并为N个合并区,使N个合并区内的前N-1个合并区中的被交换数据量在第一区间内,分别将N个合并区分配给各并行任务节点执行数据交换。
其中,第一区间为用户根据实际需要设置的,一般设置1倍的工作量平均值作为第一区间的下限,设置a倍的工作量平均值作为第一区间的上限,其中,工作量平均值为将被交换数据总量平均分配给N个并行任务节点时每个并行任务节点的工作量,a为大于1且小于2的动态值,即第一区间的上限为动态上限,以确保生成N个合并区,即在每次合并生成合并区间时的第一区间的上限应小于两倍工作量平均值减去之前得到的各合并区中与工作量平均值的差。
例如,前两个合并区中,第一个合并区的交换数据量为0.8倍工作量平均值,第二个合并区的交换数据量为1.3倍的工作量平均值,2-(0.8-1)-(1.3-1)=19,在生成第三个合并区时,第一区间的上限应小于1.9倍的工作量平均值。
如附图7a所示,例如:假定500条的被交换数据,被交换数据的ID值的最小值为1,最大值为1000,数据分布如下:1-10,100-190,200-210,400-590,800-1000。如果5个任务同时做,可以算出并行任务节点的数量N=5,S=500,M=100,为了达到并行的目的并不是以实际数据划分而是以最小ID和最大ID之前的区间划分,即为1000/5=200,也就是说200为区间分割值。N1做1-200之间,N2做201-400之间,如此看来任务数据分布会形成如下方式,有的节点离平均值100严重不足,有的大大超过平均值。第一扩展值为10,用将并行任务节点的数两乘以10,即50,原有的N1作业转变为N1…N10,N2作业会转变为N11…N20,N3转变为N21…N30,如附图7b所示,。已经被细分的节点内容通过默认设置的5个并行任务节点的前四个并行任务节点落入第一区间A进行合并,N1+N2+N3+…+N22∈A,N23+N24+…+N26∈A,依此类推第N 27+…+N30∈A,N31+…+N 40∈A,如附图7c所示,经过合并后各并行任务节点划分的数据量基本相同。
图2和图3示出根据本发明提供的一种数据交换方法第二个实施例的方法流程图。本实施例的一种数据交换方法主要由如SQOOP以MapReduce的方式在Hadoop中执行,用于大数据平台(如,Hadoop)和传统关系型数据库管理系统DBMS之间的数据交换。其中,传统关系型数据库管理系统为一个虚拟的数据库管理系统,连接了大于等于N台的服务器,服务器均可以作为并行任务节点,可以供用户预先设定选取并行任务节点的数量,该方法包括以下步骤:
S21:获取传统关系型数据库管理系统中并行任务节点的数量N,获取大数据平台中的被交换数据和被交换数据的ID值。该步骤的执行过程与一种数据交换方法第一个实施例中的S11相同,在此不再赘述。
S22:将被交换数据按被交换数据的ID值的固定顺序均分成第一特定数量的预合并区,第一特定数量为N与第一扩展值的乘积,第一扩展值为大于1的整数。与一种数据交换方法第一个实施例中的S12相同,在此不再赘述。
S23:根据被交换数据的总量和并行任务节点的数量得出各并行任务节点的工作量平均值。S23与S22、S21之间不限定先后顺序。
具体的,根据被交换数据的总量和并行任务节点的数量,将被交换数据总量除以并行任务节点的数量N,得出各并行任务节点的工作量平均值。
例如:以被交换数据的总量sum(sum为各预合并区中被交换数据量之和,并计算出各并行任务节点的工作量平均值base=sum/n。
S24:设置1倍的工作量平均值作为第一区间的下限,设置第一区间的上限,其中,第一区间的上限为动态上限,取值范围为1至1.7倍的工作量平均值。
具体的,设置1倍的工作量平均值作为第一区间的下限,设置a倍的工作量平均值作为第一区间的上限,其中,a为大于1且小于1.7的动态值,即第一区间的上限为动态上限,以确保生成N个合并区,即在每次合并生成合并区间时的第一区间的上限应小于等于两倍工作量平均值减去之前得到的各合并区中被交换数据与工作量平均值的差值。
S251:逐个合并预合并区,直至已合并的预合并区的被交换数据量之和在第一区间内,生成合并区。
具体的,按被交换数据的ID值的固定顺序逐个合并预合并区,直至已合并的预合并区的被交换数据量之和在第一区间内,生成合并区。
优选的,S251中包括S2511和S2512。
S2511:逐个合并预合并区,判断已合并的预合并区的被交换数据量之和是否在第一区间内。
S2512:若是,则生成合并区;若否,且小于第一区间下限,则继续上述步骤S2511;若否,且大于第一区间上限,则将最后一个预和并区拆分成第二特定数量的预合并区,并重新逐个合并第二特定数量的预合并区,直至已合并的预合并区的被交换数据量之和在第一区间内,则生成合并区。
例如:按被交换数据的ID值从小到大顺序合并预合并区,合并规则为:首先,建立一个空的用于存储区域范围与数据量的合并区A。然后,逐个合并预合并区,从小到大遍历上述数组count,如果A中已合并的数据量与count中当前元素count[i](0<=i<N*m)的数据量之和小于工作量平均值base,则将当前元素代表的数据量加到A中,且将count[i]对应的VID区域加入到A中;如果A中各count[i]表示的数据量之和大于工作量平均值base且小于第一区间上限,则A代表的合并区已确定,并建立新的空合并区B,将count[i]表于的数据量与其对应的VID区域加入到B中;如果A中各count[i]表示的数据量之和大于第一区间上限,则将最后一个count[i]和其对应的VID区拆分成第二特定数量L的预合并区,虚拟节点个数(第一特定数量)为N*m+L-1,预合并区为VID[N*m+L-1],然后,分别统计第二特定数量L的预合并区内被交换数据的数据量,保存在数组count[N*m+L-1]对应元素中;并在A的合并基础上从小到大遍历上述数组count[N*m+L-1],将第二特定数量L的预合并区VID[L]对应的数据量值count[L]放入A中,直至A中count中各元素count[i](0<=i<N*m+L-1)的数据量之和在第一区间内,则生成合并区。小于工作量平均值base,则将当前元素代表的数据量加到A中,且将count[i]对应的VID区域加入到A中;如果A中已合并的数据量与count[i]表示的数据量之和大于工作量平均值base且小于第一区间上限,则A代表的合并区已确定。
S252:重复上述步骤S251,直至对第一特定数据量的预合并区的合并完成,生成N个合并区;或重复上述步骤S251,直至剩余的预合并区的被交换数据量之和小于第一区间的下限,将剩余的预合并区合并作为N个合并区中的一个合并区。
其中,将剩余的预合并区合并作为N个合并区中的一个合并区,一般为:将剩余的预合并区合并作为N个合并区中的最后一个合并区。
例如,设置生成第一合并区时,第一区间的上限取1.7倍工作量平均值,前两个合并区中,第一个合并区的交换数据量为1.3倍工作量平均值,第二个合并区的交换数据量为1.3倍的工作量平均值,由于2-(1.3-1)-(1.3-1)=1.4,则在生成第三个合并区时,第一区间的上限应小于等于1.4倍工作量平均值,由于第一区间的上限原先为1.7倍工作量平均值,此时将第一区间的上限变更为1.4倍工作量平均值,避免无法分成N个合并区。
S253:分别将N个合并区分配给各并行任务节点执行数据交换。
具体的,分别将N个合并区分配给N个并行任务节点执行数据交换,使每个并行任务节点执行一组合并区内的被交换数据的交换。
图4示出根据本发明提供的一种数据交换系统第一个实施例的结构框图。本实施例的一种数据交换系统主要由如SQOOP以MapReduce的方式在Hadoop中执行。用于大数据平台(如,Hadoop)和传统关系型数据库管理系统DBMS之间的数据交换。其中,传统关系型数据库管理系统为一个虚拟的数据库管理系统,连接了大于等于N台的服务器,服务器均可以作为并行任务节点,可以供用户预先设定选取并行任务节点的数量,该系统包括参数获取单元31、预合并区生成单元32和合并单元33。
参数获取单元31,用于获取传统关系型数据库管理系统中并行任务节点的数量N,获取大数据平台中的被交换数据和被交换数据的ID值。
其中,N为用户预先选取的并行任务节点的数量或默认为传统关系型数据库管理系统管理连接的所有服务器的数量。获取大数据平台中的被交换数据和被交换数据的ID值,一般被交换数据数量众多,可能为多达数以亿计的数据量,每个被交换数据的ID值可以为不重复的主关键字。
预合并区生成单元32,连接预合并区生成单元32,用于将被交换数据按被交换数据的ID值的固定顺序均分成第一特定数量的预合并区,第一特定数量为N与第一扩展值的乘积,第一扩展值为大于1的整数。
具体的,固定顺序可以为按照被交换数据的ID值的大小顺序(从大到小或者从小到大)来分配,由于现有技术中是按被交换数据的ID值的大小均分为N个区域,并将N个区域内的ID值对应的背交互数据分配给N个并行任务节点,因此,造成了负载不均衡,浪费时间的问题,而本实施例将被交换数据按被交换数据的ID值的大小顺序均分成第一特定数量的预合并区,细化了分配任务的精度,使后期分配给各并行任务节点的被交换数据更接近负载均衡。由于数据交换之前,被交换数据的ID值分布情况不得而知,因此,第一扩展值尽量取大,以便与更好克服负载不均衡的问题,但第一扩展值太大容易使生成预合并区以及合并区花费过多时间,因此,本实施例中,第一扩展值可以为预先由用户自定义的,也可以为之前的数据交换统计得到的经验值,第一扩展值优选为10,以保证整个数据交换过程在可以预计的合理时间范围内完成,避免负载过度不均衡造成的时间浪费。
例如:在取得被交换数据表的ID值的最大值MAX与最小值MIN后,将ID值取值区域[MIN,MAX]均匀划分为虚拟节点个数(第一特定数量)为N*m的预合并区VID[N*m],然后分别统计各预合并区内被交换数据的数据量,保存在一数组count[N*m]中,其中,m为第一扩展值。
合并单元33,连接预合并区生成单元32和合并单元33,用于依次将预合并区合并为N个合并区,使N个合并区内的前N-1个合并区中的被交换数据量在第一区间内,分别将N个合并区分配给各并行任务节点执行数据交换。
其中,第一区间为用户根据实际需要设置的,一般设置1倍的工作量平均值作为第一区间的下限,设置a倍的工作量平均值作为第一区间的上限,其中,工作量平均值为将被交换数据总量平均分配给N个并行任务节点时每个并行任务节点的工作量,a为大于1且小于2的动态值,即第一区间的上限为动态上限,以确保生成N个合并区,即在每次合并生成合并区间时的第一区间的上限应小于两倍工作量平均值减去之前得到的各合并区中与工作量平均值的差。
例如,前两个合并区中,第一个合并区的交换数据量为0.8倍工作量平均值,第二个合并区的交换数据量为1.3倍的工作量平均值,2-(0.8-1)-(1.3-1)=19,在生成第三个合并区时,第一区间的上限应小于1.9倍的工作量平均值。
如附图7a所示,例如:假定500条的被交换数据,被交换数据的ID值的最小值为1,最大值为1000,数据分布如下:1-10,100-190,200-210,400-590,800-1000。如果5个任务同时做,可以算出并行任务节点的数量N=5,S=500,M=100,为了达到并行的目的并不是以实际数据划分而是以最小ID和最大ID之前的区间划分,即为1000/5=200,也就是说200为区间分割值。N1做1-200之间,N2做201-400之间,如此看来任务数据分布会形成如下方式,有的节点离平均值100严重不足,有的大大超过平均值。第一扩展值为10,用将并行任务节点的数两乘以10,即50,原有的N1作业转变为N1…N10,N2作业会转变为N11…N20,N3转变为N21…N30,如附图7b所示,。已经被细分的节点内容通过默认设置的5个并行任务节点的前四个并行任务节点落入第一区间A进行合并,N1+N2+N3+…+N22∈A,N23+N24+…+N26∈A,依此类推第N 27+…+N30∈A,N31+…+N 40∈A,如附图7c所示,经过合并后各并行任务节点划分的数据量基本相同。
图5和图6示出根据本发明提供的一种数据交换系统第二个实施例的方法流程图。本实施例的一种数据交换系统主要由如SQOOP以MapReduce的方式在Hadoop中执行,用于大数据平台(如,Hadoop)和传统关系型数据库管理系统DBMS之间的数据交换。其中,传统关系型数据库管理系统为一个虚拟的数据库管理系统,连接了大于等于N台的服务器,服务器均可以作为并行任务节点,可以供用户预先设定选取并行任务节点的数量,该系统包括参数获取单元41、预合并区生成单元42、工作量计算单元43、第一区间设置单元44和合并单元45。
参数获取单元41,用于获取传统关系型数据库管理系统中并行任务节点的数量N,获取大数据平台中的被交换数据和被交换数据的ID值。该步骤的执行过程与一种数据交换系统第一个实施例中的参数获取单元31相同,在此不再赘述。
预合并区生成单元42,连接参数获取单元41,用于将被交换数据按被交换数据的ID值的固定顺序均分成第一特定数量的预合并区,第一特定数量为N与第一扩展值的乘积,第一扩展值为大于1的整数。与一种数据交换系统第一个实施例中的预合并区生成单元32相同,在此不再赘述。
工作量计算单元43,连接参数获取单元41,用于根据被交换数据的总量和并行任务节点的数量得出各并行任务节点的工作量平均值。
具体的,根据被交换数据的总量和并行任务节点的数量,将被交换数据总量除以并行任务节点的数量N,得出各并行任务节点的工作量平均值。
例如:以被交换数据的总量sum(sum为各预合并区中被交换数据量之和),并计算出各并行任务节点的工作量平均值base=sum/n。
第一区间设置单元44,连接工作量计算单元43,用于设置1倍的工作量平均值作为第一区间的下限,设置第一区间的上限,其中,第一区间的上限为动态上限,取值范围为1至1.7倍的工作量平均值。
具体的,设置1倍的工作量平均值作为第一区间的下限,设置a倍的工作量平均值作为第一区间的上限,其中,a为大于1且小于1.7的动态值,即第一区间的上限为动态上限,以确保生成N个合并区,即在每次合并生成合并区间时的第一区间的上限应小于等于两倍工作量平均值减去之前得到的各合并区中被交换数据与工作量平均值的差值。
合并单元45中包括合并模块451和分配模块452。
合并模块451,连接合并区生成单元42、参数获取单元41和第一区间设置单元44,用于逐个合并预合并区,直至已合并的预合并区的被交换数据量之和在第一区间内,生成合并区。
具体的,按被交换数据的ID值的固定顺序逐个合并预合并区,直至已合并的预合并区的被交换数据量之和在第一区间内,生成合并区。
优选的,逐个合并预合并区,判断已合并的预合并区的被交换数据量之和是否在第一区间内;若是,则生成合并区;若否,且小于第一区间下限,则继续上述方式逐个合并所述预合并区并判断;若否,且大于第一区间上限,则将最后一个预和并区拆分成第二特定数量的预合并区,并重新逐个合并第二特定数量的预合并区,直至已合并的预合并区的被交换数据量之和在第一区间内,则生成合并区;重复执行上述方式,直至对第一特定数据量的预合并区的合并完成,生成N个合并区;或重复执行上述方式,直至剩余的预合并区的被交换数据量之和小于第一区间的下限,将剩余的预合并区合并作为N个合并区中的一个合并区。
例如:按被交换数据的ID值从小到大顺序合并预合并区,合并规则为:首先,建立一个空的用于存储区域范围与数据量的合并区A。然后,逐个合并预合并区,从小到大遍历上述数组count,如果A中已合并的数据量与count中当前元素count[i](0<=i<N*m)的数据量之和小于工作量平均值base,则将当前元素代表的数据量加到A中,且将count[i]对应的VID区域加入到A中;如果A中各count[i]表示的数据量之和大于工作量平均值base且小于第一区间上限,则A代表的合并区已确定,并建立新的空合并区B,将count[i]表于的数据量与其对应的VID区域加入到B中;如果A中各count[i]表示的数据量之和大于第一区间上限,则将最后一个count[i]和其对应的VID区拆分成第二特定数量L的预合并区,虚拟节点个数(第一特定数量)为N*m+L-1,预合并区为VID[N*m+L-1],然后,分别统计第二特定数量L的预合并区内被交换数据的数据量,保存在数组count[N*m+L-1]对应元素中;并在A的合并基础上从小到大遍历上述数组count[N*m+L-1],将第二特定数量L的预合并区VID[L]对应的数据量值count[L]放入A中,直至A中count中各元素count[i](0<=i<N*m+L-1)的数据量之和在第一区间内,则生成合并区。小于工作量平均值base,则将当前元素代表的数据量加到A中,且将count[i]对应的VID区域加入到A中;如果A中已合并的数据量与count[i]表示的数据量之和大于工作量平均值base且小于第一区间上限,则A代表的合并区已确定。
其中,将剩余的预合并区合并作为N个合并区中的一个合并区,一般为:将剩余的预合并区合并作为N个合并区中的最后一个合并区。
例如,设置生成第一合并区时,第一区间的上限取1.7倍工作量平均值,前两个合并区中,第一个合并区的交换数据量为1.3倍工作量平均值,第二个合并区的交换数据量为1.3倍的工作量平均值,由于2-(1.3-1)-(1.3-1)=1.4,则在生成第三个合并区时,第一区间的上限应小于等于1.4倍工作量平均值,由于第一区间的上限原先为1.7倍工作量平均值,此时将第一区间的上限变更为1.4倍工作量平均值,避免无法分成N个合并区。
分配模块452,连接合并模块451,用于分别将N个合并区分配给各并行任务节点执行数据交换。
具体的,分别将N个合并区分配给N个并行任务节点执行数据交换,使每个并行任务节点执行一组合并区内的被交换数据的交换。
综上所述,本发明的一种数据交换方法及系统,通过将被交换数据的均分份数从N份增加至第一扩展值乘以N份,将被交换数据按被交换数据的ID值的固定顺序均分成若干预合并区,并依次将预合并区合并为N个合并区,使细化了分配任务的精度到前N-1个合并区均落入第一区间内,以保证大数据平台与传统关系型数据库管理系统之间数据交换过程在可以预计的合理时间范围内完成,使后期分配给各并行任务节点的被交换数据更接近负载均衡,使合并过程耗时短,特别适用于数据量较大的数据交换过程。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (8)
1.一种数据交换方法,其特征在于,包括:
获取传统关系型数据库管理系统中并行任务节点的数量N,获取大数据平台中的被交换数据和所述被交换数据的ID值;
将所述被交换数据按所述被交换数据的ID值的固定顺序均分成第一特定数量的预合并区,所述第一特定数量为N与第一扩展值的乘积,所述第一扩展值为大于1的整数;
逐个合并所述预合并区,直至已合并的所述预合并区的被交换数据量之和在第一区间内,生成合并区;
重复上述步骤,直至对第一特定数据量的预合并区的合并完成,生成N个合并区;或重复上述步骤,直至剩余的预合并区的被交换数据量之和小于第一区间的下限,将剩余的预合并区合并作为所述N个合并区中的一个合并区;
分别将所述N个合并区分配给各并行任务节点执行数据交换。
2.如权利要求1所述的方法,其特征在于,所述第一扩展值为10。
3.如权利要求1所述的方法,其特征在于,所述逐个合并所述预合并区,直至已合并的所述预合并区的被交换数据量之和在第一区间内,生成合并区,包括:
逐个合并所述预合并区,判断已合并的所述预合并区的被交换数据量之和是否在第一区间内;
若是,则生成合并区;若否,且小于第一区间下限,则继续上述步骤;若否,且大于第一区间上限,则将最后一个预和并区拆分成第二特定数量的预合并区,并重新逐个合并所述第二特定数量的预合并区,直至已合并的所述预合并区的被交换数据量之和在第一区间内,则生成合并区。
4.如权利要求1-3中任意一项所述的方法,其特征在于,所述逐个合并所述预合并区之前,还包括:
根据所述被交换数据的总量和所述并行任务节点的数量N得出各并行任务节点的工作量平均值;
设置1倍的工作量平均值作为第一区间的下限,设置第一区间的上限,其中,第一区间的上限为动态上限,取值范围为1至1.7倍的工作量平均值。
5.一种数据交换系统,其特征在于,包括:
参数获取单元,用于获取传统关系型数据库管理系统中并行任务节点的数量N,获取大数据平台中的被交换数据和所述被交换数据的ID值;
预合并区生成单元,用于将所述被交换数据按所述被交换数据的ID值的固定顺序均分成第一特定数量的预合并区,所述第一特定数量为N与第一扩展值的乘积,所述第一扩展值为大于1的整数;
合并单元,所述合并单元包括合并模块和分配模块,所述合并模块,用于逐个合并所述预合并区,直至已合并的所述预合并区的被交换数据量之和在第一区间内,生成合并区;重复执行上述方式,直至对第一特定数据量的预合并区的合并完成,生成N个合并区;或重复执行上述方式,直至剩余的预合并区的被交换数据量之和小于第一区间的下限,将剩余的预合并区合并作为所述N个合并区中的一个合并区;
所述分配模块,用于分别将所述N个合并区分配给各并行任务节点执行数据交换。
6.如权利要求5所述的系统,其特征在于,所述第一扩展值为10。
7.如权利要求5所述的系统,其特征在于,所述合并模块,具体用于:
逐个合并所述预合并区,判断已合并的所述预合并区的被交换数据量之和是否在第一区间内;若是,则生成合并区;若否,且小于第一区间下限,则继续上述方式逐个合并所述预合并区并判断;若否,且大于第一区间上限,则将最后一个预和并区拆分成第二特定数量的预合并区,并重新逐个合并所述第二特定数量的预合并区,直至已合并的所述预合并区的被交换数据量之和在第一区间内,则生成合并区;重复执行上述方式,直至对第一特定数据量的预合并区的合并完成,生成N个合并区;或重复执行上述方式,直至剩余的预合并区的被交换数据量之和小于第一区间的下限,将剩余的预合并区合并作为所述N个合并区中的一个合并区。
8.如权利要求5-7中任意一项所述的系统,其特征在于,还包括:
工作量计算单元,用于根据所述被交换数据的总量和所述并行任务节点的数量得出各并行任务节点的工作量平均值;
第一区间设置单元,用于设置1倍的工作量平均值作为第一区间的下限,设置第一区间的上限,其中,第一区间的上限为动态上限,取值范围为1至1.7倍的工作量平均值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610082589.3A CN107045512B (zh) | 2016-02-05 | 2016-02-05 | 一种数据交换方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610082589.3A CN107045512B (zh) | 2016-02-05 | 2016-02-05 | 一种数据交换方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107045512A CN107045512A (zh) | 2017-08-15 |
CN107045512B true CN107045512B (zh) | 2020-11-24 |
Family
ID=59543519
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610082589.3A Active CN107045512B (zh) | 2016-02-05 | 2016-02-05 | 一种数据交换方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107045512B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019558A (zh) * | 2017-12-27 | 2019-07-16 | 航天信息股份有限公司 | 基于Sqoop的数据传输方法、装置、计算机可读存储介质及设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104049200A (zh) * | 2014-06-23 | 2014-09-17 | 合肥工业大学 | NoC中基于链路分配的无冲突测试调度方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102629219B (zh) * | 2012-02-27 | 2015-09-23 | 北京大学 | 并行计算框架中的Reduce端自适应负载均衡方法 |
US8972378B2 (en) * | 2012-10-22 | 2015-03-03 | Microsoft Corporation | Formulating global statistics for distributed databases |
CN104182502B (zh) * | 2014-08-18 | 2017-10-27 | 浪潮(北京)电子信息产业有限公司 | 一种数据抽取方法及装置 |
CN104731925A (zh) * | 2015-03-26 | 2015-06-24 | 江苏物联网研究发展中心 | 基于MapReduce的FP-Growth的负载均衡并行计算方法 |
CN104834709B (zh) * | 2015-04-29 | 2018-07-31 | 南京理工大学 | 一种基于负载均衡的并行余弦模式挖掘方法 |
CN105160706B (zh) * | 2015-06-03 | 2017-12-19 | 江西理工大学 | 一种单机多核环境下约束地形并行构建方法 |
-
2016
- 2016-02-05 CN CN201610082589.3A patent/CN107045512B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104049200A (zh) * | 2014-06-23 | 2014-09-17 | 合肥工业大学 | NoC中基于链路分配的无冲突测试调度方法 |
Non-Patent Citations (1)
Title |
---|
"信息系统数据交换技术分析";吴淑玮 等;《计算机系统应用》;20120430;第21卷(第4期);第18-22页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107045512A (zh) | 2017-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3770774B1 (en) | Control method for household appliance, and household appliance | |
Naas et al. | A graph partitioning-based heuristic for runtime IoT data placement strategies in a fog infrastructure | |
CN105045871B (zh) | 数据聚合查询方法及装置 | |
CN108268317B (zh) | 一种资源分配方法及装置 | |
CN102457571B (zh) | 一种云存储中数据均衡分布方法 | |
TWI690851B (zh) | 電腦系統資源配置方法和裝置 | |
US20070260668A1 (en) | Methods and apparatus to perform process placement for distributed applications | |
US20150227586A1 (en) | Methods and Systems for Dynamically Allocating Resources and Tasks Among Database Work Agents in an SMP Environment | |
CN110351375B (zh) | 一种数据处理方法、装置及计算机装置、可读存储介质 | |
CN111538867A (zh) | 一种有界增量图划分方法和系统 | |
US20070162629A1 (en) | Method of assigning objects to processing units | |
CN105897864A (zh) | 一种云工作流调度方法 | |
CN105210059A (zh) | 一种数据处理方法及系统 | |
CN107045512B (zh) | 一种数据交换方法及系统 | |
CN110413393A (zh) | 集群资源管理方法、装置、计算机集群及可读存储介质 | |
CN111275284A (zh) | 一种成本分摊装置和方法 | |
CN107172193A (zh) | 一种基于集群的负载均衡方法及其装置 | |
US20240176657A1 (en) | Task processing method and apparatus, electronic device, storage medium and program product | |
CN104009904B (zh) | 面向云平台大数据处理的虚拟网络构建方法及系统 | |
Dongarra et al. | Matrix product on heterogeneous master-worker platforms | |
CN105120008B (zh) | 一种基于分层的分布式云计算中心负载平衡方法 | |
CN112015533A (zh) | 适用于分布式渲染的任务调度方法和装置 | |
Vinutha et al. | An accurate and efficient scheduler for hadoop mapreduce framework | |
CN112015554A (zh) | 任务处理方法和装置 | |
CN101071489A (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 |