The invention discloses an on-line optimal partition task scheduling method for Spark cluster system, which belongs to the technical field of on-line cluster resource scheduling. The method comprises the following steps: counting the amount of output data from upstream Stage, the total CPU core participating in job execution, the total amount of memory and the proportion of memory used for pulling data; calculating the number of rounds of task execution according to the relationship between the amount of output data and the amount of memory used for pulling data, and setting the optimized number of partitions. Quantity; Monitor the average CPU utilization and memory utilization of computing nodes, and evaluate the resource utilization level of computing nodes; rank the resource utilization level of all nodes in descending order, and give priority to scheduling tasks to the nodes with the highest resource utilization level; repeat the above steps until all tasks are scheduled. The invention can automatically configure the optimized number of partitions, improve the resource utilization rate of the cluster, and speed up the execution speed of Spark jobs.
【技术实现步骤摘要】
一种Spark集群系统的在线优化分区的任务调度方法及装置
本专利技术属于在线集群资源调度
,具体涉及一种Spark集群系统的在线优化分区的任务调度方法及装置。
技术介绍
Spark是一个以可靠、高效、可伸缩的方式对大量数据进行分布式处理的内存计算框架。Spark集群主要的构件部署分为SparkClient、SparkContext、ClusterManager、Worker和Executor等,如图1所示。SparkClient用于用户提交应用程序到Spark集群,而SparkContext用于负责与ClusterManager进行通信,进行资源的申请、任务的分配和监控等,负责作业执行的生命周期管理。ClusterManager提供了资源的分配与管理,在不同的运行模式下,担任的角色有所不同。当SparkContext对运行的作业进行划分并分配资源后,会把任务发送到Worker节点上的Executor进行运行。许多应用程序的配置参数会影响Spark的执行性能,例如任务并行性,数据压缩以及Executor的资源配置。在Spark中,输入数据或中间数据被分成多个逻辑分区,集群中的每个计算节点处理一个或多个分区。用户可以配置每个Spark作业的分区数量和数据分区方式,不理想的任务分区或选择非最佳分区方案可能会显着增加工作负载的执行时间。例如,如果分区策略在计算阶段内启动太多任务,则会导致CPU和内存资源的竞争,从而导致性能下降。相反,如果启动的任务太少,系统的资源利用率会降低,同样会导致性能下降。Spark为用户提供了两种控制任务并行性的方法。一种方法是使用 ...
【技术保护点】
1.一种Spark集群系统的在线优化分区的任务调度方法,其特征在于,包括以下步骤:步骤1.统计上游Stage输出数据量大小、参与作业执行的总CPU核数、内存总量和用于拉取数据的内存比例;步骤2.根据输出数据量与用于拉取数据的内存容量的大小关系,计算任务执行的轮数,并设置数据的分区数量;步骤3.监测计算节点的平均CPU利用率和内存利用率,对各计算节点的资源利用水平进行评估;步骤4.降序排列所有节点的资源利用水平,优先调度任务给资源利用水平最高的节点执行;步骤5.重复步骤3‑步骤4,直至所有任务调度完成。
【技术特征摘要】
1.一种Spark集群系统的在线优化分区的任务调度方法,其特征在于,包括以下步骤:步骤1.统计上游Stage输出数据量大小、参与作业执行的总CPU核数、内存总量和用于拉取数据的内存比例;步骤2.根据输出数据量与用于拉取数据的内存容量的大小关系,计算任务执行的轮数,并设置数据的分区数量;步骤3.监测计算节点的平均CPU利用率和内存利用率,对各计算节点的资源利用水平进行评估;步骤4.降序排列所有节点的资源利用水平,优先调度任务给资源利用水平最高的节点执行;步骤5.重复步骤3-步骤4,直至所有任务调度完成。2.根据权利要求1所述的Spark集群系统的在线优化分区的任务调度方法,其特征在于,步骤1中,上游Stage输出数据量大小其中,si为第i个计算节点上任务输出数据量大小,1≤i≤n,n为计算节点的数量;参与作业执行的总CPU核数其中,CPUapp(i)为第i个计算节点上用于应用程序的CPU核数;内存总量其中,Memapp(i)为第i个计算节点上用于应用程序的内存容量;用于拉取数据的内存比例α从Spark参数配置文件中读取。3.根据权利要求2所述的Spark集群系统的在线优化分区的任务调度方法,其特征在于,步骤2中,用于拉取数据的内存容量的大小为Memoryapp×α,将输出数据量S与用于拉取数据的内存容量Memoryapp×α进行大小比对:当S≤Memoryapp×α时,任务执行的轮数r=1,数据的分区数为Coreapp;当S>Memoryapp×α时,任务执行的轮数r=ceil(S/(Memoryapp×α)),其中ceil表示向上取整,数据的分区数为Coreapp×r。4.根据权利要求3所述的Spark集群系统的在线优化分区的任务调度方法,其特征在于,步骤3中,为了减少计算节点CPU利用率或内存利用率的抖动误差,引入控制系统理论中的一种负反馈调节机制,CPU利用率或内存利用率的负反馈调节机制为:其中,tj为第j个时刻,j为≥0的整数,Ui(tj)为当前时刻第i个计算节点的CPU利用率或内存利用率,Ui(tj-1)为上一时刻的第i个计算节点的CPU利用率或内存利用率,Ui′(tj)为当前时刻第i个计算节点的CPU或内存利用率的监测值。5...
【专利技术属性】
技术研发人员:田文洪,叶宇飞,王金,许凌霄,匡平,
申请(专利权)人:电子科技大学,
类型:发明
国别省市:四川,51
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。