CN111966490A - 一种Spark分区负载均衡方法 - Google Patents
一种Spark分区负载均衡方法 Download PDFInfo
- Publication number
- CN111966490A CN111966490A CN202010727870.4A CN202010727870A CN111966490A CN 111966490 A CN111966490 A CN 111966490A CN 202010727870 A CN202010727870 A CN 202010727870A CN 111966490 A CN111966490 A CN 111966490A
- Authority
- CN
- China
- Prior art keywords
- partition
- data
- task
- spark
- partitions
- 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.)
- Pending
Links
Images
Classifications
-
- 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/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- 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/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种负载均衡方法,包括:在启动Map任务后,通过分区监控器获取并统计操作信息,得到操作统计信息;在获得所述操作统计信息后,通过所述分区大小预测器,计算完成100%映射任务量后每个分区生成的中间数据量;根据所述分区的中间数据量,通过数据倾斜检测模型判断所述所有分区中是否存在倾斜分区;若存在,则通过资源调度器将所述倾斜分区内的数据进行降序排序,并对原划分文件进行动态调整、以均衡Spark分区负载。本发明实施例既能够使Spark的分区负载更均衡,缓解数据倾斜的问题,又能够缩短应用程序完成的时间。
Description
技术领域
本发明涉及大数据技术领域,尤其涉及一种Spark分区负载均衡方法。
背景技术
随着大数据时代的到来,各种网络技术的兴起,信息数据急剧膨胀,传统的处理和存储系统已难以应对海量数据,而对于目前流行的Hadoop和Spark等大数据分析平台,数据倾斜对其性能造成了严重的影响。目前解决数据倾斜问题大部分都是基于Hadoop平台研究,对于Spark平台的数据倾斜问题研究相对较少。在Spark中,将Shuffle之前的阶段称为Map阶段,之后的阶段称为Reduce阶段。然而,默认的Spark分区算法在数据分布不均匀时,在执行Shuffle操作后就会出现数据倾斜。现存的对数据倾斜的解决方案都是通过增加额外的抽样操作来分析并统计中间<key,value>对信息,然后再对Reduce任务的负载进行预测,该类型的方法在一定程度上能够缓解数据倾斜的问题,但会造成开销过大,增加Spark平台的运行时间、浪费集群的资源的问题。因此,如何既能够使Spark的分区负载更均衡,缓解数据倾斜的问题,又能够缩短应用程序完成的时间,是亟需解决对的技术问题。
发明内容
本发明实施例提供了一种基于线性回归分区预测的负载均衡方法及装置,以解决在Spark中,现有的对数据倾斜的解决方案导致应用程序运行时间过长的技术问题,以实现既能够使Spark的分区负载更均衡,缓解数据倾斜的问题,又能够缩短应用程序完成的时间。
本发明实施例提供一种Spark分区负载均衡方法,包括
在启动Map任务后,通过分区监控器获取并统计操作信息,得到操作统计信息;
在获得所述操作统计信息后,通过所述分区大小预测器,计算完成100%映射任务量后每个分区生成的中间数据量;
根据所述分区的中间数据量,通过数据倾斜检测模型判断所述所有分区中是否存在倾斜分区;
若存在,则通过资源调度器将所述倾斜分区内的数据进行降序排序,并对原划分文件进行动态调整、以均衡Spark分区负载。
优选地,所述在启动Map任务后,通过分区监控器获取操作信息,具体为:
Worker向Master发送心跳消息,当Master收到Worker心跳信息时,分别获取每一个Reduce任务的操作信息;所述操作信息包括:已处理数据占总数据集的百分比和已完成的Map任务为所述Reduce任务所产生的子分区的总和;其中,已处理数据占总数据集的百分比随着Spark应用程序的运行而变化。
优选地,所述在获得所述操作统计信息后,通过所述分区大小预测器,计算完成100%映射任务量后每个分区生成的中间数据量,包括:
当Map任务完成时,所述已完成的Map任务为所述Reduce任务所产生的子分区的总和为所述Reduce任务的负载;
通过线性回归方程确定所述已处理数据占总数据集的百分比和所述已完成的Map任务为所述Reduce任务所产生的子分区的总和之间的相关系数;
根据所述每一个Reduce任务的相关系数,预测每一个所述Reduce任务的负载。
优选地,所述根据所述分区的中间数据量,通过数据倾斜检测模型判断所述分区中是否存在倾斜分区,具体为:
采用倾斜检测算法判断负载最大的的Reducer节点是否过载,若过则,则为倾斜分区。
优选地,当所述Map任务执行完毕时,对于任意一个Reduce任务,已完成的Map任务为所述Reduce任务所产生的子分区的总和表示为:
优选地,所述数据倾斜检测模型为:
其中,FoD为所有集群集合的总体偏差,σ为初始集群集合的数据倾斜范围;
当FoD≤w数据倾斜程度略有倾斜,FoD≥w时,数据的倾斜程度很大;其中,w为预先设置。
相比于现有技术,本发明实施例的有益效果在于,本发明实施例通过在启动Map任务后,通过分区监控器获取并统计操作信息,得到操作统计信息;在获得所述操作统计信息后,通过所述分区大小预测器,计算完成100%映射任务量后每个分区生成的中间数据量;根据所述分区的中间数据量,通过数据倾斜检测模型判断所述所有分区中是否存在倾斜分区;若存在,则通过资源调度器将所述倾斜分区内的数据进行降序排序,并对原划分文件进行动态调整、以均衡Spark分区负载。本发明实施例既能够使Spark的分区负载更均衡,缓解数据倾斜的问题,又能够缩短应用程序完成的时间。
附图说明
图1是本发明实施例中的Spark分区负载均衡方法地流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本发明实施例提供一种负载均衡方法,包括
S1、在启动Map任务后,通过分区监控器获取并统计操作信息,得到操作统计信息;
S2、在获得所述操作统计信息后,通过所述分区大小预测器,计算完成100%映射任务量后每个分区生成的中间数据量;
S3、根据所述分区的中间数据量,通过数据倾斜检测模型判断所述所有分区中是否存在倾斜分区;
S4、若存在,则通过资源调度器将所述倾斜分区内的数据进行降序排序,并对原划分文件进行动态调整、以均衡Spark分区负载。
在本发明实施例中,分区监控器是基于线性回归分区预测的负载均衡机制SP-LRP(Spark load balancing mechanism based on Linear Regression Partition)中的一个重要组件,每个Worker节点定期向Master发送心跳信息,以确保其可用性并更新给定应用程序的运行任务的状态。相比于现有述技术,本发明在Map任务运行过程中,扩展了心跳机制,即增加了获取操作信息,并通过操作信息预测分区大小,能尽量减小Reduce阶段的等待时间,相比于采用抽样算法实现负载均衡,本发明能够够缩短应用程序完成的时间。
在步骤S1中,所述在启动Map任务后,通过分区监控器获取操作信息,具体为:
Worker向Master发送心跳消息,当Master收到Worker心跳信息时,分别获取每一个Reduce任务的操作信息;所述操作信息包括:已处理数据占总数据集的百分比和已完成的Map任务为所述Reduce任务所产生的子分区的总和;其中,已处理数据占总数据集的百分比随着Spark应用程序的运行而变化。
在步骤S2中,所述在获得所述操作统计信息后,通过所述分区大小预测器,计算完成100%映射任务量后每个分区生成的中间数据量,包括:
当Map任务完成时,即完成100%映射任务后,所述已完成的Map任务为所述Reduce任务所产生的子分区的总和为所述Reduce任务的负载;
通过线性回归方程确定所述已处理数据占总数据集的百分比和所述已完成的Map任务为所述Reduce任务所产生的子分区的总和之间的相关系数;
根据所述每一个Reduce任务的相关系数,预测每一个所述Reduce任务的负载。
其中,当所述已处理数据占总数据集的百分比大于预设的阈值时,则表示所述Map任务已完成,触发负载估计;所述阈值为控制因子,用于控制训练数据集的大小。
在步骤S2中,当所述Map任务执行完毕时,对于任意一个Reduce任务,已完成的Map任务为所述Reduce任务所产生的子分区的总和表示为:
基于线性回归的分区预测算法如下表1所示:
表1基于线性回归的分区预测算法
在步骤S3中,所述根据所述分区的中间数据量,通过数据倾斜检测模型判断所述分区中是否存在倾斜分区,具体为:
采用倾斜检测算法判断负载最大的的Reducer节点是否过载,若过载,则为倾斜分区。
在本发明实施例中,所述数据倾斜检测模型为:
其中,FoD为所有集群集合的总体偏差,σ为初始集群集合的数据倾斜范围;
当FoD≤w数据倾斜程度略有倾斜,FoD≥w时,数据的倾斜程度很大;其中,w为预先设置,
在一优选的实施例中,假设Map任务i为Reduce任务j产生的子分区为Pi,j,N为Map任务的个数,那么,Reduce任务j(j∈[1,M])的负载可以通过公式(4-3)表示:
在步骤S4中,资源调度器的主要思想是将倾斜数据分配给当前负载最小的Reducer。分区中的key按降序排序,将最大的key标记为1,其余key标记为0。每个集群的分配完成后,根据所有Reducer当前剩余容量,再次按降序排序,重复上述集群分配过程。
以下是资源调度器分配算法如表2所示:
表2资源调度器分配算法
相比于现有技术,本发明实施例的有益效果在于,本发明实施例通过在启动Map任务后,通过分区监控器获取并统计操作信息,得到操作统计信息;在获得所述操作统计信息后,通过所述分区大小预测器,计算完成100%映射任务量后每个分区生成的中间数据量;根据所述分区的中间数据量,通过数据倾斜检测模型判断所述所有分区中是否存在倾斜分区;若存在,则通过资源调度器将所述倾斜分区内的数据进行降序排序,并对原划分文件进行动态调整、以均衡Spark分区负载。本发明实施例既能够使Spark的分区负载更均衡,缓解数据倾斜的问题,又能够缩短应用程序完成的时间。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (7)
1.一种Spark分区负载均衡方法,其特征在于,包括
在启动Map任务后,通过分区监控器获取并统计操作信息,得到操作统计信息;
在获得所述操作统计信息后,通过所述分区大小预测器,计算完成100%映射任务量后每个分区生成的中间数据量;
根据所述分区的中间数据量,通过数据倾斜检测模型判断所述所有分区中是否存在倾斜分区;
若存在,则通过资源调度器将所述倾斜分区内的数据进行降序排序,并对原划分文件进行动态调整、以均衡Spark分区负载。
2.根据权利要求1所述的Spark分区负载均衡方法,其特征在于,所述在启动Map任务后,通过分区监控器获取操作信息,具体为:
Worker向Master发送心跳消息,当Master收到Worker心跳信息时,分别获取每一个Reduce任务的操作信息;所述操作信息包括:已处理数据占总数据集的百分比和已完成的Map任务为所述Reduce任务所产生的子分区的总和;其中,已处理数据占总数据集的百分比随着Spark应用程序的运行而变化。
3.根据权利要求2所述的Spark分区负载均衡方法,其特征在于,所述在获得所述操作统计信息后,通过所述分区大小预测器,计算完成100%映射任务量后每个分区生成的中间数据量,包括:
当Map任务完成时,所述已完成的Map任务为所述Reduce任务所产生的子分区的总和为所述Reduce任务的负载;
通过线性回归方程确定所述已处理数据占总数据集的百分比和所述已完成的Map任务为所述Reduce任务所产生的子分区的总和之间的相关系数;
根据所述每一个Reduce任务的相关系数,预测每一个所述Reduce任务的负载。
4.根据权利要求3所述的Spark分区负载均衡方法,其特征在于,所述根据所述分区的中间数据量,通过数据倾斜检测模型判断所述分区中是否存在倾斜分区,具体为:
采用倾斜检测算法判断负载最大的的Reducer节点是否过载,若过则,则为倾斜分区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010727870.4A CN111966490A (zh) | 2020-07-24 | 2020-07-24 | 一种Spark分区负载均衡方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010727870.4A CN111966490A (zh) | 2020-07-24 | 2020-07-24 | 一种Spark分区负载均衡方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111966490A true CN111966490A (zh) | 2020-11-20 |
Family
ID=73362631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010727870.4A Pending CN111966490A (zh) | 2020-07-24 | 2020-07-24 | 一种Spark分区负载均衡方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111966490A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112799820A (zh) * | 2021-02-05 | 2021-05-14 | 拉卡拉支付股份有限公司 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
CN114138494A (zh) * | 2021-12-06 | 2022-03-04 | 昆明理工大学 | 一种结合节点计算能力的负载均衡方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955732A (zh) * | 2019-12-16 | 2020-04-03 | 湖南大学 | 一种用于在Spark环境中实现分区负载均衡的方法和系统 |
US10713096B2 (en) * | 2018-10-18 | 2020-07-14 | Beijing Jingdong Shangke Information Technology Co., Ltd. | System and method for handling data skew at run time |
-
2020
- 2020-07-24 CN CN202010727870.4A patent/CN111966490A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10713096B2 (en) * | 2018-10-18 | 2020-07-14 | Beijing Jingdong Shangke Information Technology Co., Ltd. | System and method for handling data skew at run time |
CN110955732A (zh) * | 2019-12-16 | 2020-04-03 | 湖南大学 | 一种用于在Spark环境中实现分区负载均衡的方法和系统 |
Non-Patent Citations (4)
Title |
---|
丁雷道: "Map Reduce模型的性能优化研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
刘志宏: "基于资源调度的map reduce数据倾斜消除技术研究", 《中国博士学位论文全文数据库 信息科技辑》 * |
宫学谦: "Spark平台下的中间数据均衡放置及自适应缓存替换策略研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
陶永才,丁雷道,石磊,卫琳: "Map Reduce在线抽样分区负载均衡研究", 《小型微型计算机系统》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112799820A (zh) * | 2021-02-05 | 2021-05-14 | 拉卡拉支付股份有限公司 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
CN112799820B (zh) * | 2021-02-05 | 2024-06-11 | 拉卡拉支付股份有限公司 | 数据处理方法、装置、电子设备、存储介质及程序产品 |
CN114138494A (zh) * | 2021-12-06 | 2022-03-04 | 昆明理工大学 | 一种结合节点计算能力的负载均衡方法 |
CN114138494B (zh) * | 2021-12-06 | 2024-05-10 | 昆明理工大学 | 一种结合节点计算能力的负载均衡方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112162865B (zh) | 服务器的调度方法、装置和服务器 | |
CN109783237A (zh) | 一种资源配置方法及装置 | |
CN104375897A (zh) | 基于最小相对负载不均衡度的云计算资源调度方法 | |
CN111614746A (zh) | 云主机集群的负载均衡方法、装置及服务器 | |
CN109901932B (zh) | 一种基于虚拟机的服务器整合方法 | |
CN107220108B (zh) | 一种实现云数据中心负载均衡的方法和系统 | |
CN107317864B (zh) | 一种存储设备的数据均衡方法及装置 | |
CN111131486B (zh) | 执行节点的负载调节方法、装置、服务器及存储介质 | |
CN112019620B (zh) | 基于Nginx动态加权的Web集群负载均衡方法及系统 | |
CN111966490A (zh) | 一种Spark分区负载均衡方法 | |
CN112835698A (zh) | 一种基于异构集群的请求分类处理的动态负载均衡方法 | |
CN111431741A (zh) | 服务上线方法、系统、计算机设备及存储介质 | |
CN115454602A (zh) | 一种任务调度方法、装置及设备 | |
CN114490078A (zh) | 一种微服务的动态缩扩容方法、装置及设备 | |
CN112068959A (zh) | 自适应任务调度方法、系统及包括该方法的检索方法 | |
CN115525394A (zh) | 容器数量的调整方法及装置 | |
CN112148483A (zh) | 一种容器迁移方法及相关装置 | |
CN114564313A (zh) | 负载调整方法、装置、电子设备及存储介质 | |
CN108200185B (zh) | 一种实现负载均衡的方法及装置 | |
CN110377430B (zh) | 数据迁移方法、设备、存储介质及装置 | |
CN112596901A (zh) | 云平台自动化部署与运行方法、电子设备及存储介质 | |
CN115842828A (zh) | 一种网关负载均衡控制方法、装置、设备及可读存储介质 | |
Kirsal et al. | Analytical modelling and performability analysis for cloud computing using queuing system | |
CN112379978B (zh) | 后端服务调用方法、装置、设备和存储介质 | |
CN111158896A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201120 |
|
RJ01 | Rejection of invention patent application after publication |