[发明专利]一种Spark集群系统的在线优化分区的任务调度方法及装置有效
| 申请号: | 201810486385.5 | 申请日: | 2018-05-18 |
| 公开(公告)号: | CN108762921B | 公开(公告)日: | 2019-07-12 |
| 发明(设计)人: | 田文洪;叶宇飞;王金;许凌霄;匡平 | 申请(专利权)人: | 电子科技大学 |
| 主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F9/48 |
| 代理公司: | 电子科技大学专利中心 51203 | 代理人: | 邹裕蓉 |
| 地址: | 611731 四川省成*** | 国省代码: | 四川;51 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 资源利用水平 任务调度 分区 输出数据量 集群系统 计算节点 在线优化 拉取 内存利用率 资源利用率 大小关系 调度技术 集群资源 降序排序 节点执行 内存容量 内存总量 任务执行 优先调度 自动配置 作业执行 集群 轮数 内存 优化 上游 监测 重复 评估 统计 | ||
本发明公开了一种Spark集群系统的在线优化分区的任务调度方法,属于在线集群资源调度技术领域。本发明所述方法包括步骤:统计上游Stage输出数据量大小、参与作业执行的总CPU核数、内存总量以及用于拉取数据的内存比例;根据输出数据量与用于拉取数据的内存容量的大小关系,计算任务执行的轮数,并设置优化的分区数量;监测计算节点的平均CPU利用率、内存利用率,对各计算节点的资源利用水平进行评估;降序排序所有节点的资源利用水平,优先调度任务给资源利用水平最高的节点执行;重复上述步骤直到所有任务调度完成。本发明能够自动配置优化的分区数量,提高集群的资源利用率,加快Spark作业的执行速度。
技术领域
本发明属于在线集群资源调度技术领域,具体涉及一种Spark集群系统的在线优化分区的任务调度方法及装置。
背景技术
Spark是一个以可靠、高效、可伸缩的方式对大量数据进行分布式处理的内存计算框架。Spark集群主要的构件部署分为Spark Client、SparkContext、ClusterManager、Worker和Executor等,如图1所示。Spark Client用于用户提交应用程序到Spark集群,而SparkContext用于负责与ClusterManager进行通信,进行资源的申请、任务的分配和监控等,负责作业执行的生命周期管理。ClusterManager提供了资源的分配与管理,在不同的运行模式下,担任的角色有所不同。当SparkContext对运行的作业进行划分并分配资源后,会把任务发送到Worker节点上的Executor进行运行。
许多应用程序的配置参数会影响Spark的执行性能,例如任务并行性,数据压缩以及Executor的资源配置。在Spark中,输入数据或中间数据被分成多个逻辑分区,集群中的每个计算节点处理一个或多个分区。用户可以配置每个Spark作业的分区数量和数据分区方式,不理想的任务分区或选择非最佳分区方案可能会显着增加工作负载的执行时间。例如,如果分区策略在计算阶段内启动太多任务,则会导致CPU和内存资源的竞争,从而导致性能下降。相反,如果启动的任务太少,系统的资源利用率会降低,同样会导致性能下降。
Spark为用户提供了两种控制任务并行性的方法。一种方法是使用配置参数spark.default.parallelism,该参数为未指定分区数量时使用的默认任务数。第二种方法是使用重新分区API,它允许用户重新分区数据。Spark不支持在不同计算阶段之间更改数据并行性,除非用户在程序中手动通过重新分区API更改分区数。此种方法具有很大的局限性,因为分区的最佳数量可能受数据大小的影响,每次处理不同数据集时,用户都必须更改分区数并重新编译程序。
此外,不合适的任务调度方法可能会拖慢作业的执行进度,导致某些任务的完成时间比其他任务长得多。由于数据处理框架通常在计算阶段之间具有同步屏障,所以让处于同一阶段中的所有任务同时完成是至关重要的,以避免短腿任务阻碍其他运行速度快的任务。正确的数据分区方案以及任务调度方法是从底层硬件资源中提高性能的关键,但是,找到一个能够提供最佳性能的数据分区方案以及任务调度方法并非易事。这是因为,数据分析工作流程通常涉及复杂的算法,例如机器学习和图处理。因此,随着多个计算阶段的增加,所产生的任务执行计划可能变得非常复杂。此外,考虑到每个计算阶段不同,每个阶段的最佳分区数量也可能不同,这使问题更加复杂。
发明内容
本发明的目的是克服现有技术的缺陷,提供一种Spark集群系统的在线优化分区的任务调度方法及装置。
本发明所提出的技术问题是这样解决的:
一种Spark集群系统的在线优化分区的任务调度方法,包括以下步骤:
步骤1.统计上游Stage(阶段)输出数据量大小、参与作业执行的总CPU核数、内存总量和用于拉取数据的内存比例;
步骤2.根据输出数据量与用于拉取数据的内存容量的大小关系,计算任务执行的轮数,并设置数据的分区数量;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810486385.5/2.html,转载请声明来源钻瓜专利网。





