CN110955732B - 一种用于在Spark环境中实现分区负载均衡的方法和系统 - Google Patents

一种用于在Spark环境中实现分区负载均衡的方法和系统 Download PDF

Info

Publication number
CN110955732B
CN110955732B CN201911294970.6A CN201911294970A CN110955732B CN 110955732 B CN110955732 B CN 110955732B CN 201911294970 A CN201911294970 A CN 201911294970A CN 110955732 B CN110955732 B CN 110955732B
Authority
CN
China
Prior art keywords
partition
key
module
hash table
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
Application number
CN201911294970.6A
Other languages
English (en)
Other versions
CN110955732A (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.)
Hunan University
Original Assignee
Hunan University
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 Hunan University filed Critical Hunan University
Priority to CN201911294970.6A priority Critical patent/CN110955732B/zh
Publication of CN110955732A publication Critical patent/CN110955732A/zh
Application granted granted Critical
Publication of CN110955732B publication Critical patent/CN110955732B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种用于在Spark环境中实现分区负载均衡的方法,包括:接收用户发送的Spark应用程序,对该Spark应用程序进行解析,以得到表征多个弹性分布式数据集RDD之间关系的RDD图、以及调度阶段的有向无环图DAG,根据DAG图依次确定每两个相邻调度阶段之间的依赖关系,并对得到的所有依赖关系中的宽依赖关系进行编号,设置计数器cnt=1,判断cnt是否大于宽依赖关系的总数,如果不是则对第cnt个宽依赖关系对应的Map端中最后一个RDD中的所有分区中的数据进行采样,以得到表征数据键分布的、每个分区对应的哈希表,将得到的所有分区对应的哈希表进行合并。本发明能够在解决大数据计算中数据倾斜问题的同时,优化计算资源的分配,缩短程序运行时间。

Description

一种用于在Spark环境中实现分区负载均衡的方法和系统
技术领域
本发明属于大数据、分布式并行计算领域,涉及一种用于在Spark环境中实现分区负载均衡的方法和系统。
背景技术
随着互联网的高速发展,人们的日常行为会产生大量的数据,数据总量和数据增长率日渐攀升,对于日益庞大的数据而言,单机计算已经无法满足需求,MapReduce编程模型应运而生。MapReduce是一个以可靠、容错的方式并行处理海量数据的软件框架,ApacheSpark是基于MapReduce模型的一种大规模数据快速通用处理引擎,Apache Spark在批处理和流处理上都能够达到很高的性能,它是一个包含有状态的有向无环图调度器和查询优化器的物理执行引擎,相比于Hadoop,Spark支持内存计算,提供交互式查询,并对迭代工作负载进行了优化,能够更加高效地对大规模数据进行处理。正如之前的许多研究中所展示的,Spark中的数据处理引擎(如Shark和Spark-SQL)在内存中的处理速度比Hadoop MapReduce快一百多倍。
现有Spark环境下的分区方法主要采用基于哈希(Hash)的分区方法,其通过对数据中键值对的键取模的方式获得分区号,并适用于大部分非排序算子。
然而,上述基于哈希的分区方法存在不可忽略的缺陷:对于现实场景的数据而言,键的分布往往并不是均匀的,往往会出现数据倾斜,在经过哈希计算分区号后,各分区指向的数据量大小不一致,这会导致多个任务的大小和执行时间不相等,当短任务完成时,长任务还没有完成,那么短任务也必须等待长任务的完成,从而会延长整个Spark应用程序的处理时间。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种用于在Spark环境中实现分区负载均衡的方法和系统,其目的在于,解决现有基于哈希的分区方法在出现数据倾斜时,整个Spark应用程序的处理时间过长的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种用于在Spark环境中实现分区负载均衡的方法,包括以下步骤:
(1)接收用户发送的Spark应用程序,对该Spark应用程序进行解析,以得到表征多个弹性分布式数据集RDD之间关系的RDD图、以及调度阶段的有向无环图DAG;
(2)根据步骤(1)得到的DAG图依次确定每两个相邻调度阶段之间的依赖关系,并对得到的所有依赖关系中的宽依赖关系进行编号;
(3)设置计数器cnt=1;
(4)判断cnt是否大于宽依赖关系的总数,如果是则过程结束,否则转入步骤(5);
(5)对第cnt个宽依赖关系对应的Map端(其作为当前Map端)中最后一个RDD中的所有分区中的数据进行采样,以得到表征数据键分布的、每个分区对应的哈希表;
(6)将步骤(5)得到的所有分区对应的哈希表进行合并,从而得到合并后的哈希表Thash,将合并后的哈希表Thash中的每个值均除以采样率,以得到更新后的哈希表;
(7)根据步骤(6)更新后的哈希表生成键值对形式的重分区策略表;
(8)设置计数器cnt=cnt+1,并返回步骤(4)。
优选地,如果前一个调度阶段中的至少一个分区和后一个调度阶段中的至少一个分区之间是一对一或多对一的映射关系,则这两个调度阶段之间的依赖关系是窄依赖关系;如果前一个调度阶段中的至少一个分区和后一个调度阶段中的至少一个分区之间是一对多或多对多的映射关系,则这两个调度阶段之间的依赖关系是宽依赖关系。
优选地,步骤(5)具体包括以下子步骤:
(5-1)设置计数器i=1;
(5-2)判断i是否大于当前Map端中最后一个RDD中的分区总数,如果是则过程结束,否则转入步骤(5-3);
(5-3)初始化当前Map端中最后一个RDD中的第i个分区中的当前位置Cur为0;
(5-4)随机生成一个步长
Figure BDA0002320266850000031
其中,ri表示还需要在当前Map端中最后一个RDD中第i个分区中进行采样的键值对总数,ni表示当前Map端中最后一个RDD中第i个分区中未被采样的键值对总数,变量u为0到1之间的随机数;
(5-5)获取该步长si指向当前Map端中最后一个RDD中第i个分区中数据的键,根据该键在第i个分区对应的哈希表Ti中查询对应的值,并判断该值是否满足预设条件,如果满足则进入步骤(5-6),否则返回步骤(5-4);
(5-6)设置当前Map端中最后一个RDD中的第i个分区中的当前位置Cur=Cur+si,并判断该Cur是否大于当前Map端中最后一个RDD中的第i个分区中的数据长度,或者当前Map端中最后一个RDD中的第i个分区中的数据长度与采样率的乘积是否大于等于第i个分区对应的哈希表Ti中值的总和,如果是则过程结束,否则进入步骤(5-7);
(5-7)使用当前位置Cur处的数据的键更新第i个分区对应的哈希表Ti
(5-8)设置i=i+1,并返回步骤(5-2)。
优选地,判断该值是否满足预设条件是看以下公式是否成立,如果成立则表示满足预设条件,否则表示不满足预设条件:
σ1+σ2>=0.5;
其中σ1是一个0到1之间的任意小数,且有:
Figure BDA0002320266850000041
其中Random(0,μ2)为在[0,μ2)上取随机数的函数,μ2为0到1之间的任意小数,vj表示步长si指向的当前Map端中最后一个RDD中第i个分区中数据的键在第i个分区对应的哈希表Ti中的值,q表示第i个分区对应的哈希表Ti中键的类别总数。
优选地,步骤(7)包括以下子步骤:
(7-1)初始化重分区策略表R,其键就是步骤(6)更新后的哈希表中的键,分区策略表R中各个键对应的值为空;
(7-2)初始化分区权重表Wt,其键是从1开始,一直到第cnt个宽依赖关系对应的Reduce端(其作为当前Reduce端)中第一个RDD的分区长度顺次编号得到的,分区权重表Wt中各个键对应的值记为W;
(7-3)设置计数器k=1;
(7-4)判断k是否大于当前Map端中最后一个RDD中的分区总数,如果是则过程结束,否则转入步骤(7-5);
(7-5)在分区权重表Wt中查找最大值对应的键,并在步骤(6)更新后的哈希表中获取第k个数据的键,将前一个键和后一个键分别作为键值对的值和键插入重分区策略表R中,并将分区权重表Wt中该最大值更新为(W-更新后的哈希表中第k个数据的键对应的值);
(7-6)设置k=k+1,并返回步骤(7-4)。
优选地,W的初始值等于当前Map端中所有分区对应的哈希表Ti中值的总和除以当前Map端中所有分区对应的哈希表Ti中键的类别总数。
按照本发明的另一方面,提供了一种用于在Spark环境中实现分区负载均衡的系统,包括:
第一模块,用于接收用户发送的Spark应用程序,对该Spark应用程序进行解析,以得到表征多个弹性分布式数据集RDD之间关系的RDD图、以及调度阶段的有向无环图DAG;
第二模块,用于根据第一模块得到的DAG图依次确定每两个相邻调度阶段之间的依赖关系,并对得到的所有依赖关系中的宽依赖关系进行编号;
第三模块,用于设置计数器cnt=1;
第四模块,用于判断cnt是否大于宽依赖关系的总数,如果是则过程结束,否则转入第五模块;
第五模块,用于对第cnt个宽依赖关系对应的Map端中最后一个RDD中的所有分区中的数据进行采样,以得到表征数据键分布的、每个分区对应的哈希表;
第六模块,用于将第五模块得到的所有分区对应的哈希表进行合并,从而得到合并后的哈希表Thash,将合并后的哈希表Thash中的每个值均除以采样率,以得到更新后的哈希表;
第七模块,用于根据第六模块更新后的哈希表生成键值对形式的重分区策略表;
第八模块,用于设置计数器cnt=cnt+1,并返回第四模块。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)本发明由于采用了步骤(1)到(5),其能够精确地预测Map端的数据分布,随后使用步骤(6)到(8),其基于得到的准确数据分布实现重分区策略的生成,使得分区数据分布更加均匀,因而能够解决现有基于哈希的分区方法在出现数据倾斜时,整个Spark应用程序的处理时间过长的技术问题;
(2)本发明通过采用步骤(6)到(8),其执行效率高,实现复杂度低。
附图说明
图1是本发明步骤(1)中得到的RDD图的示例;
图2是本发明步骤(1)中得到的DAG图的示例;
图3示出两个调度阶段之间存在窄依赖关系的示意图;
图4示出两个调度阶段之间存在宽依赖关系的示意图;
图5为本发明步骤(6)得到的合并后的哈希表;
图6是本发明用于在Spark环境中实现分区负载均衡的方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明的基本思路在于,通过优化后的基于步长的接收拒绝采样,对SparkShuffle过程中Map端的数据分布进行估计,获得更加精确的Map端数据分布,然后根据采样率和数据分布情况生成Map端和Reduce端中间数据的重分区策略,从而实现Reduce端数据的均匀分布,避免因数据倾斜导致的Spark应用程序执行时间过长的问题。
如图6所示,本发明提供了一种用于在Spark环境中实现分区负载均衡的方法,包括以下步骤:
(1)接收用户发送的Spark应用程序,对该Spark应用程序进行解析,以得到表征多个弹性分布式数据集(Resilient distributed dataset,简称RDD)之间关系的RDD图(如图1所示)、以及调度阶段的有向无环图(Directed Acyclic Graph,简称DAG图,如图2所示);
具体而言,从图1可以看出,该RDD图反映的是多个RDD(在图中是4个,但应理解这仅仅是出于举例的目的)、以及它们彼此之间的转换关系(在图中是使用箭头来表示),从图2中可以看出,该DAG图包括多个调度阶段(在图中虽然仅仅只示出两个阶段,但是应该理解其并不构成对调度阶段数量的限定),其中调度阶段1(Stage 1)包括RDD1和RDD2,而调度阶段0包括RDD0和RDD3,调度阶段1先于调度阶段0被执行(因此称调度阶段1是调度阶段0的上一个调度阶段),各个调度阶段中不同RDD之间的转换关系和图1是完全一样的,调度阶段1被执行完毕后会产生中间结果,随后调度阶段0会读取该中间结果、以及该调度阶段0本身所包括的RDD0中的数据,将这两个数据相加后作为RDD3的输入再执行。
应该注意的是,图1和图2中的图都是Spark环境中自动执行并生成的。
(2)根据步骤(1)得到的DAG图依次确定每两个相邻调度阶段之间的依赖关系,并对得到的所有依赖关系中的宽依赖关系进行编号;
如果前一个调度阶段(Map端)中的至少一个分区(Partition)和后一个调度阶段(Reduce端)中的至少一个分区之间是一对一或多对一的映射关系,则这两个调度阶段之间的依赖关系(Dependency)是窄依赖(Narrow dependency)关系,如图3所示,如果前一个调度阶段中的至少一个分区和后一个调度阶段中的至少一个分区之间是一对多或多对多的映射关系,则这两个调度阶段之间的依赖关系是宽依赖(Shuffle dependency)关系,如图4所示。
(3)设置计数器cnt=1;
(4)判断cnt是否大于宽依赖关系的总数,如果是则过程结束,否则转入步骤(5);
(5)对第cnt个宽依赖关系对应的Map端(其作为当前Map端)中最后一个RDD中的所有分区中的数据进行采样,以得到表征数据键(Key)分布的、每个分区对应的哈希表;
在本步骤中,采样率是3%到15%之间。
本步骤具体包括以下子步骤:
(5-1)设置计数器i=1;
(5-2)判断i是否大于当前Map端中最后一个RDD中的分区总数,如果是则过程结束,否则转入步骤(5-3);
(5-3)初始化当前Map端中最后一个RDD中的第i个分区中的当前位置Cur为0;
(5-4)随机生成一个步长
Figure BDA0002320266850000081
其中,ri表示还需要在当前Map端中最后一个RDD中第i个分区中进行采样的键值对总数,ni表示当前Map端中最后一个RDD中第i个分区中未被采样的键值对总数,变量u为0到1之间的随机数;
(5-5)获取该步长si指向当前Map端中最后一个RDD中第i个分区中数据的键,根据该键在第i个分区对应的哈希表Ti(初始阶段该哈希表为空)中查询对应的值(Value),并判断该值是否满足预设条件,如果满足则进入步骤(5-6),否则返回步骤(5-4);
具体而言,判断该值是否满足预设条件是看以下公式是否成立,如果成立则表示满足预设条件,否则表示不满足预设条件:
σ1+σ2>=0.5;
其中σ1是一个0到1之间的任意小数,σ2的定义如下:
Figure BDA0002320266850000091
其中Random(0,μ2)为在[0,μ2)上取随机数的函数,μ2为0到1之间的任意小数,vj表示步长si指向的当前Map端中最后一个RDD中第i个分区中数据的键在第i个分区对应的哈希表Ti中的值,q表示第i个分区对应的哈希表Ti中键的类别总数。
(5-6)设置当前Map端中最后一个RDD中的第i个分区中的当前位置Cur=Cur+si,并判断该Cur是否大于当前Map端中最后一个RDD中的第i个分区中的数据长度,或者当前Map端中最后一个RDD中的第i个分区中的数据长度与采样率的乘积是否大于等于第i个分区对应的哈希表Ti中值的总和,如果是则过程结束,否则进入步骤(5-7);
(5-7)使用当前位置Cur处的数据的键更新第i个分区对应的哈希表Ti,即将第i个分区对应的哈希表Ti中相同键对应的值加一;
(5-8)设置i=i+1,并返回步骤(5-2)。
(6)将步骤(5)得到的所有分区对应的哈希表进行合并,从而得到合并后的哈希表Thash(如图5所示),将合并后的哈希表Thash中的每个值均除以采样率,以得到更新后的哈希表;
本步骤的目的是估计当前Map端中最后一个RDD中所有分区中所有数据的键的大致出现频次。
(7)根据步骤(6)更新后的哈希表生成键值对形式的重分区策略表;
本步骤包括以下子步骤:
(7-1)初始化重分区策略表R,其键就是步骤(6)更新后的哈希表中的键,分区策略表R中各个键对应的值为空;
(7-2)初始化分区权重表Wt,其键是从1开始,一直到第cnt个宽依赖关系对应的Reduce端(其作为当前Reduce端)中第一个RDD的分区长度顺次编号(即1,2,3,…,分区长度),分区权重表Wt中各个键对应的值记为W(其初始值等于当前Map端中所有分区对应的哈希表Ti中值的总和除以当前Map端中所有分区对应的哈希表Ti中键的类别总数);
(7-3)设置计数器k=1;
(7-4)判断k是否大于当前Map端中最后一个RDD中的分区总数,如果是则过程结束,否则转入步骤(7-5);
(7-5)在分区权重表Wt中查找最大值(初始阶段取分区权重表Wt中的第一个值)对应的键,并在步骤(6)更新后的哈希表中获取第k个数据的键,将前一个键和后一个键分别作为键值对的值和键插入重分区策略表R中,并将分区权重表Wt中该最大值更新为(W-更新后的哈希表中第k个数据的键对应的值);
(7-6)设置k=k+1,并返回步骤(7-4);
(8)设置计数器cnt=cnt+1,并返回步骤(4)。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种用于在Spark环境中实现分区负载均衡的方法,其特征在于,包括以下步骤:
(1)接收用户发送的Spark应用程序,对该Spark应用程序进行解析,以得到表征多个弹性分布式数据集RDD之间关系的RDD图、以及调度阶段的有向无环图DAG;
(2)根据步骤(1)得到的DAG图依次确定每两个相邻调度阶段之间的依赖关系,并对得到的所有依赖关系中的宽依赖关系进行编号;
(3)设置计数器cnt=1;
(4)判断cnt是否大于宽依赖关系的总数,如果是则过程结束,否则转入步骤(5);
(5)对作为当前Map端的、第cnt个宽依赖关系对应的Map端中最后一个RDD中的所有分区中的数据进行采样,以得到表征数据键分布的、每个分区对应的哈希表;
(6)将步骤(5)得到的所有分区对应的哈希表进行合并,从而得到合并后的哈希表Thash,将合并后的哈希表Thash中的每个值均除以采样率,以得到更新后的哈希表;
(7)根据步骤(6)更新后的哈希表生成键值对形式的重分区策略表;步骤(7)包括以下子步骤:
(7-1)初始化重分区策略表R,其键就是步骤(6)更新后的哈希表中的键,分区策略表R中各个键对应的值为空;
(7-2)初始化分区权重表Wt,其键是从1开始,一直到作为当前Reduce端的、第cnt个宽依赖关系对应的Reduce端中第一个RDD的分区长度顺次编号得到的,分区权重表Wt中各个键对应的值记为W;
(7-3)设置计数器k=1;
(7-4)判断k是否大于当前Map端中最后一个RDD中的分区总数,如果是则过程结束,否则转入步骤(7-5);
(7-5)在分区权重表Wt中查找最大值对应的键,并在步骤(6)更新后的哈希表中获取第k个数据的键,将前一个键和后一个键分别作为键值对的值和键插入重分区策略表R中,并将分区权重表Wt中的该最大值更新为W减去更新后的哈希表中第k个数据的键对应的值;
(7-6)设置k=k+1,并返回步骤(7-4);
(8)设置计数器cnt=cnt+1,并返回步骤(4)。
2.根据权利要求1所述的方法,其特征在于,如果前一个调度阶段中的至少一个分区和后一个调度阶段中的至少一个分区之间是一对一或多对一的映射关系,则这两个调度阶段之间的依赖关系是窄依赖关系;如果前一个调度阶段中的至少一个分区和后一个调度阶段中的至少一个分区之间是一对多或多对多的映射关系,则这两个调度阶段之间的依赖关系是宽依赖关系。
3.根据权利要求1所述的方法,其特征在于,步骤(5)具体包括以下子步骤:
(5-1)设置计数器i=1;
(5-2)判断i是否大于当前Map端中最后一个RDD中的分区总数,如果是则过程结束,否则转入步骤(5-3);
(5-3)初始化当前Map端中最后一个RDD中的第i个分区中的当前位置Cur为0;
(5-4)随机生成一个步长
Figure FDA0002736934650000021
其中,ri表示还需要在当前Map端中最后一个RDD中第i个分区中进行采样的键值对总数,ni表示当前Map端中最后一个RDD中第i个分区中未被采样的键值对总数,变量u为0到1之间的随机数;
(5-5)获取该步长si指向当前Map端中最后一个RDD中第i个分区中数据的键,根据该键在第i个分区对应的哈希表Ti中查询对应的值,并判断该值是否满足预设条件,如果满足则进入步骤(5-6),否则返回步骤(5-4);
(5-6)设置当前Map端中最后一个RDD中的第i个分区中的当前位置Cur=Cur+si,并判断该Cur是否大于当前Map端中最后一个RDD中的第i个分区中的数据长度,或者当前Map端中最后一个RDD中的第i个分区中的数据长度与采样率的乘积是否大于等于第i个分区对应的哈希表Ti中值的总和,如果是则过程结束,否则进入步骤(5-7);
(5-7)使用当前位置Cur处的数据的键更新第i个分区对应的哈希表Ti
(5-8)设置i=i+1,并返回步骤(5-2)。
4.根据权利要求3所述的方法,其特征在于,判断该值是否满足预设条件是看以下公式是否成立,如果成立则表示满足预设条件,否则表示不满足预设条件:
σ1+σ2>=0.5;
其中σ1是一个0到1之间的任意小数,且有:
Figure FDA0002736934650000031
其中Random(0,μ2)为在[0,μ2)上取随机数的函数,μ2为0到1之间的任意小数,vj表示步长si指向的当前Map端中最后一个RDD中第i个分区中数据的键在第i个分区对应的哈希表Ti中的值,q表示第i个分区对应的哈希表Ti中键的类别总数。
5.根据权利要求1所述的方法,其特征在于,W的初始值等于当前Map端中所有分区对应的哈希表Ti中值的总和除以当前Map端中所有分区对应的哈希表Ti中键的类别总数。
6.一种用于在Spark环境中实现分区负载均衡的系统,其特征在于,包括:
第一模块,用于接收用户发送的Spark应用程序,对该Spark应用程序进行解析,以得到表征多个弹性分布式数据集RDD之间关系的RDD图、以及调度阶段的有向无环图DAG;
第二模块,用于根据第一模块得到的DAG图依次确定每两个相邻调度阶段之间的依赖关系,并对得到的所有依赖关系中的宽依赖关系进行编号;
第三模块,用于设置计数器cnt=1;
第四模块,用于判断cnt是否大于宽依赖关系的总数,如果是则过程结束,否则转入第五模块;
第五模块,用于对作为当前Map端的、第cnt个宽依赖关系对应的Map端中最后一个RDD中的所有分区中的数据进行采样,以得到表征数据键分布的、每个分区对应的哈希表;
第六模块,用于将第五模块得到的所有分区对应的哈希表进行合并,从而得到合并后的哈希表Thash,将合并后的哈希表Thash中的每个值均除以采样率,以得到更新后的哈希表;
第七模块,用于根据第六模块更新后的哈希表生成键值对形式的重分区策略表;第七模块包括:
第一子模块,用于初始化重分区策略表R,其键就是第六模块更新后的哈希表中的键,分区策略表R中各个键对应的值为空;
第二子模块,用于初始化分区权重表Wt,其键是从1开始,一直到作为当前Reduce端的、第cnt个宽依赖关系对应的Reduce端中第一个RDD的分区长度顺次编号得到的,分区权重表Wt中各个键对应的值记为W;
第三子模块,用于设置计数器k=1;
第四子模块,用于判断k是否大于当前Map端中最后一个RDD中的分区总数,如果是则过程结束,否则转入第五子模块;
第五子模块,用于在分区权重表Wt中查找最大值对应的键,并在第六模块更新后的哈希表中获取第k个数据的键,将前一个键和后一个键分别作为键值对的值和键插入重分区策略表R中,并将分区权重表Wt中的该最大值更新为W减去更新后的哈希表中第k个数据的键对应的值;
第六子模块,用于设置k=k+1,并返回第四子模块;
第八模块,用于设置计数器cnt=cnt+1,并返回第四模块。
CN201911294970.6A 2019-12-16 2019-12-16 一种用于在Spark环境中实现分区负载均衡的方法和系统 Active CN110955732B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911294970.6A CN110955732B (zh) 2019-12-16 2019-12-16 一种用于在Spark环境中实现分区负载均衡的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911294970.6A CN110955732B (zh) 2019-12-16 2019-12-16 一种用于在Spark环境中实现分区负载均衡的方法和系统

Publications (2)

Publication Number Publication Date
CN110955732A CN110955732A (zh) 2020-04-03
CN110955732B true CN110955732B (zh) 2020-12-01

Family

ID=69981885

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911294970.6A Active CN110955732B (zh) 2019-12-16 2019-12-16 一种用于在Spark环境中实现分区负载均衡的方法和系统

Country Status (1)

Country Link
CN (1) CN110955732B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112000467A (zh) * 2020-07-24 2020-11-27 广东技术师范大学 一种数据倾斜处理方法、装置、终端设备及存储介质
CN111966490A (zh) * 2020-07-24 2020-11-20 广东技术师范大学 一种Spark分区负载均衡方法
CN113778657B (zh) * 2020-09-24 2024-04-16 北京沃东天骏信息技术有限公司 一种数据处理方法和装置
CN114780541B (zh) * 2022-04-01 2024-04-12 港珠澳大桥管理局 微批流处理系统中的数据分区方法、装置、设备和介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10043009B2 (en) * 2014-09-24 2018-08-07 Intel Corporation Technologies for software basic block similarity analysis
CN108536808B (zh) * 2018-04-04 2022-04-29 国家计算机网络与信息安全管理中心 一种基于Spark计算框架的数据获取方法和装置
CN109388615B (zh) * 2018-09-28 2022-04-01 智器云南京信息科技有限公司 基于Spark的任务处理方法及系统

Also Published As

Publication number Publication date
CN110955732A (zh) 2020-04-03

Similar Documents

Publication Publication Date Title
CN110955732B (zh) 一种用于在Spark环境中实现分区负载均衡的方法和系统
Cheng et al. Network-aware locality scheduling for distributed data operators in data centers
Rödiger et al. Locality-sensitive operators for parallel main-memory database clusters
US11475006B2 (en) Query and change propagation scheduling for heterogeneous database systems
WO2018054221A1 (en) Pipeline dependent tree query optimizer and scheduler
CN106599091B (zh) 基于键值存储的rdf图结构存储和索引方法
CN110659278A (zh) 基于cpu-gpu异构架构的图数据分布式处理系统
Cederman et al. Concurrent data structures for efficient streaming aggregation
CN108536824B (zh) 一种数据处理方法及装置
Kang et al. The processing-in-memory model
CN111464451B (zh) 一种数据流等值连接优化方法、系统及电子设备
CN108319604B (zh) 一种hive中大小表关联的优化方法
CN116756150B (zh) 一种Mpp数据库大表关联加速方法
CN112445776B (zh) 基于Presto的动态分桶方法、系统、设备及可读存储介质
KR101914784B1 (ko) 쿼드 트리에 기반한 스카이라인 질의 방법
Gabert et al. Elga: elastic and scalable dynamic graph analysis
CN114443236A (zh) 一种任务处理方法、装置、系统、设备及介质
Kalnis et al. Mizan: Optimizing graph mining in large parallel systems
CN111831425B (zh) 一种数据处理方法、装置及设备
Salah et al. Lazy-Merge: A Novel Implementation for Indexed Parallel $ K $-Way In-Place Merging
RU2490702C1 (ru) Способ ускорения обработки множественных запросов типа select к rdf базе данных с помощью графического процессора
Lu et al. Improving mapreduce performance by using a new partitioner in yarn
Gong et al. Accelerating large-scale prioritized graph computations by hotness balanced partition
Hamidzadeb et al. Dynamic scheduling of real-time tasks, by assignment
Zhang et al. Improving performance for geo-distributed data process in wide-area

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
CB03 Change of inventor or designer information

Inventor after: Li Kenli

Inventor after: Liu Chubo

Inventor after: Cao Ronghui

Inventor after: Liu Xiang

Inventor after: Tang Zhuo

Inventor after: Du Lifan

Inventor after: He Kailin

Inventor after: Li Wen

Inventor after: Zhang Xuedong

Inventor after: Yang Wangdong

Inventor after: Zhou Xu

Inventor before: Tang Zhuo

Inventor before: Liu Chubo

Inventor before: Cao Ronghui

Inventor before: Liu Xiang

Inventor before: Li Kenli

Inventor before: Du Lifan

Inventor before: He Kailin

Inventor before: Li Wen

Inventor before: Zhang Xuedong

Inventor before: Yang Wangdong

Inventor before: Zhou Xu

CB03 Change of inventor or designer information