当前位置: 首页 > 专利查询>田文洪专利>正文

一种处理大数据平台Spark数据分配不均衡的方法技术

技术编号:20025128 阅读:47 留言:0更新日期:2019-01-06 04:13
本发明专利技术实施例公开了一种处理大数据平台Spark数据分配不均衡的方法,涉及集群资源调度、负载均衡领域。本发明专利技术针对Spark各Stage中任务出现的数据倾斜问题,提出了MRFair的解决方法,所述方法包括步骤:(1)将Spark各Stage上一些任务设置为活动任务;(2)根据活动任务的元数据估计任务的剩余运行时间;(3)根据任务的剩余运行时间降序排列活动任务,将剩余运行时间最大的任务的可用数据块重新分配给剩余运行时间最小的任务;(4)更新任务的剩余运行时间,重复步骤(3)直到无可用的数据块被调度或者重新分配后任务的剩余运行时间少于其他任务的最大剩余运行时间。本发明专利技术能有效减少Spark作业的总完工时间,提升Spark作业的服务质量。

【技术实现步骤摘要】
一种处理大数据平台Spark数据分配不均衡的方法
本专利技术涉及在线集群资源调度
,尤其涉及一种处理大数据平台Spark数据分配不均衡的方法。
技术介绍
Spark是一个以可靠、高效、可伸缩的方式对大量数据进行分布式处理的内存计算框架。Spark集群主要的构件部署分为SparkClient、SparkContext、ClusterManager、Worker和Executor等,如图1所示。SparkClient用于用户提交应用程序到Spark集群,而SparkContext用于负责与ClusterManager进行通信,进行资源的申请、任务的分配和监控等,负责作业执行的生命周期管理。ClusterManager提供了资源的分配与管理,在不同的运行模式下,担任的角色有所不同,在Local、SparkStandalone等运行模式下由Master提供,在YARN运行模式下由ResourceManager提供,在Mesos运行模式下由MesosManager进行负责。当SparkContext对运行的作业进行划分并分配资源后,会把任务发送到Worker节点上的Executor进行运行。Spark的编程模型是弹性分布式数据集(ResilientDistributedDataset,RDD),它是MapReduce模型的扩展,在并行计算阶段高效的进行数据共享。Spark应用程序主要是基于RDD的一系列操作构成的作业,这些操作算子主要分为转换操作和行动操作,转换操作是延迟执行的,只有出现行动操作才触发作业的提交。在Spark作业调度中最重要的是DAGScheduler和TaskScheduler两个调度器,其中,DAGScheduler负责任务的逻辑调度,是面向调度阶段的高层次调度器,将作业拆分成不同阶段具有依赖关系的任务集TaskSet,而TaskScheduler负责具体任务的调度执行。Spark应用程序根据RDD之间的依赖关系构建有向无环图(DirectedAcyclicGraph,DAG),DAGScheduler负责对DAG进行解析,将DAG拆分成相互依赖的调度阶段。每个调度阶段包含一个或多个任务,这些任务组成任务集TaskSet,由DAGScheduler提交给底层调度器TaskScheduler进行调度执行。DAGScheduler监控运行调度阶段过程,如果某个调度阶段运行失败,则需要重新提交该调度阶段。TaskScheduler接收来自DAGScheduler发送过来的任务集,TaskScheduler收到任务集后负责把任务逐一分发到Spark集群Worker节点的Executor去运行。如果某个任务运行失败,TaskScheduler负责重试。如果TaskScheduler发现某个任务一直未运行完,就可能启动同样的任务运行同一个任务,哪个任务先运行完就采用哪个任务的结果。Worker节点中的Executor收到TaskScheduler发送过来的任务后,以多线程的方式运行,每一个线程负责一个任务,任务运行结束后将结果返回给TaskScheduler。
技术实现思路
本专利技术要解决的技术问题是:提供一种处理大数据平台Spark数据分配不均衡的方法,能够减轻任务的数据倾斜程度,加快任务执行速度。为解决上述技术问题,第一方面,本专利技术实施例提供了一种处理大数据平台Spark数据分配不均衡的方法,所述方法包括以下四大步骤:(1)将Spark各Stage上一些任务设置为活动任务;(2)根据活动任务的元数据估计任务的剩余运行时间;(3)根据任务的剩余运行时间降序排列活动任务,将剩余运行时间最大的任务的可用数据块重新分配给剩余运行时间最小的任务;(4)更新任务的剩余运行时间,重复步骤(3)直到无可用的数据块被调度或者重新分配后任务的剩余运行时间少于其他任务的最大剩余运行时间。根据第一方面,在第一种可能的实现方式中,将Spark各调度阶段上一些任务设置为活动任务,活动任务数量为m,m≤min(s,n),其中,s为集群中总CPU核数,n为RDD的分区数或调度阶段任务总数,即活动任务的数量不能超过集群中CPU核数、RDD的分区数或调度阶段任务总数中的最小值;活动任务在任务执行即将结束时不能主动停止运行,只有接收到停止命令消息时才能停止运行,该实现方式是为了将执行时间最长的任务的未处理数据块分配到其他任务执行。根据第一方面,在第二种可能的实现方式中,每次最多选择一个任务进行分配,因为在一个任务中分割数据块并将其传输到其他任务占用了另一个已经完成的任务释放的空闲CPU资源,同时重新分配两个任务的效果没有只重新分配一个任务的效果好,重新分配一个任务使得该任务可以充分使用剩余的资源;MRFairMaster估计所有任务的剩余执行时间,并在检测时选择剩余时间最长的任务进行重新分配;Master要保证剩余时间足以计算调度计划,如果MRFair决定重新分配任务T中的可用数据块,则需要满足以下两个条件:(1)系统目前至少有一个CPU核是空闲的;(2)重新分配只有在任务T原来的执行时间大于重新分配之后的执行时间加上分配需要的额外时间开销才有意义;对于长时间执行的任务,数据倾斜的影响是非常严重的,重新分配任务的额外开销基本可以忽略不计。根据第一方面,在第三种可能的实现方式中,用户提交作业后,刚开始只要存在未被调度的任务,MRFair调用传统ScheduleBackend模块调度分配任务;如果Master节点把所有的任务都调度分配完了,MRFair就激活MRFairWorker中的检测模块,对正在执行的任务基于预估的剩余运行时间值进行倾斜检测,如图2所示;如果任务的剩余运行时间值存在严重差异(即分割剩余任务是有价值的),报告该信息给MRFairMaster,并将该任务ID以及预估剩余运行时间值存入MRFairMaster节点中的哈希列表中,等待后续处理。根据第一方面,在第四种可能的实现方式中,当Master节点根据任务的剩余运行时间降序排列活动任务时,需要将剩余运行时间最长的任务T1暂停运行,即MRFairMaster通知MRFairWorker暂停该任务的执行,并捕获其最后处理的输入数据的位置以及允许跳过先前已处理的输入数据;如果剩余运行时间最长的任务T1处于一种不可能或者很难停止的状态,那么该请求失败,Master节点要么重新选择一个剩余运行时间次长的任务T2并对该任务进行以上处理,或者如果这个剩余运行时间最长的任务T1是作业中的最后一个任务的情形下,重新分区并且重新执行任务T1全部输入,重新执行剩余运行时间最长的任务T1的全部输入就如同Spark的推测执行策略。根据第一方面,在第五种可能的实现方式中,选择数据块而不是字节作为数据重分配的单位,因为按照一个一个字节扫描和分割任务的输入数据会导致Executor的长时间阻塞,这是不能被容忍的;为了以更少的成本维护数据块的元数据,MRFair尝试公平的调度数据块,尽管每个数据块的大小不相等;为了达成目标,Master收集所有的任务及其数据块的元数据,并将数据存储在本地,然后基于运行时间的策略以确定哪个任务优先被调度;定义数据块具有以下五种状态:(1)LocalFetched:数本文档来自技高网
...

【技术保护点】
1.一种处理大数据平台Spark数据分配不均衡的方法,其特征在于,所述方法包括步骤:(1)将Spark各Stage上一些任务设置为活动任务;(2)根据活动任务的元数据估计任务的剩余运行时间;(3)根据任务的剩余运行时间降序排列活动任务,将剩余运行时间最大的任务的可用数据块重新分配给剩余运行时间最小的任务;(4)更新任务的剩余运行时间,重复步骤(3)直到无可用的数据块被调度或者重新分配后任务的剩余运行时间少于其他任务的最大剩余运行时间。

【技术特征摘要】
1.一种处理大数据平台Spark数据分配不均衡的方法,其特征在于,所述方法包括步骤:(1)将Spark各Stage上一些任务设置为活动任务;(2)根据活动任务的元数据估计任务的剩余运行时间;(3)根据任务的剩余运行时间降序排列活动任务,将剩余运行时间最大的任务的可用数据块重新分配给剩余运行时间最小的任务;(4)更新任务的剩余运行时间,重复步骤(3)直到无可用的数据块被调度或者重新分配后任务的剩余运行时间少于其他任务的最大剩余运行时间。2.根据权利要求1所述的方法,其特征在于,将Spark各调度阶段上一些任务设置为活动任务,活动任务数量为m,m≤min(s,n),其中,s为集群中总CPU核数,n为RDD的分区数或调度阶段任务总数,即活动任务的数量不能超过集群中CPU核数、RDD的分区数或调度阶段任务总数中的最小值;活动任务在任务执行即将结束时不能主动停止运行,只有接收到停止命令消息时才能停止运行,该实现方式是为了将执行时间最长的任务的未处理数据块分配到其他任务执行。3.根据权利要求1所述的方法,其特征在于,MRFair每次最多选择一个任务进行分配,因为在一个任务中分割数据块并将其传输到其他任务占用了另一个已经完成的任务释放的空闲CPU资源,同时重新分配两个任务的效果没有只重新分配一个任务的效果好,重新分配一个任务使得该任务可以充分使用剩余的资源;MRFairMaster估计所有任务的剩余执行时间,并在检测时选择剩余时间最长的任务进行重新分配;Master要保证剩余时间足以计算调度计划,如果MRFair决定重新分配任务T中的可用数据块,则需要满足以下两个条件:(1)系统目前至少有一个CPU核是空闲的;(2)重新分配只有在任务T原来的执行时间大于重新分配之后的执行时间加上分配需要的额外时间开销才有意义;对于长时间执行的任务,数据倾斜的影响是非常严重的,重新分配任务的额外开销基本可以忽略不计。4.根据权利要求1所述的方法,其特征在于,用户提交作业后,刚开始只要存在未被调度的任务,MRFair调用传统ScheduleBackend模块调度分配任务;如果Master节点把所有的任务都调度分配完了,MRFair就激活MRFairWorker中的检测模块,对正在执行的任务基于预估的剩余运行时间值进行倾斜检测,如图2所示;如果任务的剩余运行时间值存在严重差异(即分割剩余任务是有价值的),报告该信息给MRFairMaster,并将该任务ID以及预估剩余运行时间值存入MRFairMaster节点中的哈希列表中,等待后续处理。5.根据权利要求1所述的方法,其特征在于,当Master节点根据任务的剩余运行时间降序排列活动任务时,需要将剩余运行时间最长的任务T1暂停运行,即MRFairMaster通知MRFairWorker暂停该任务的执行,并捕获其最后处理的输入数据的位置以及允许跳过先前已处理的输入数据;如果剩余运行时间最长的任务T1处于一种不可能或者很难停止的状态,那么该请求失败,Master节点要么重新选择一个剩余运行时间次长的任务T2并对该任务进行以上处理,或者如果这个剩余运行时间最长的任务T1是作业中的最后一个任务的情...

【专利技术属性】
技术研发人员:不公告发明人
申请(专利权)人:田文洪黄超杰刘弘一任小芹何马均叶宇飞
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1