一种处理大数据平台YARN数据分配不均衡的方法
技术领域
本发明涉及在线集群资源调度技术领域,尤其涉及一种处理大数据平台YARN数据分配不均衡的方法与装置。
背景技术
Hadoop2.0 Yarn是一个以可靠、高效、可伸缩的方式对大量数据进行分布式处理的软件框架。Hadoop2.0 Yarn集群主要的任务部署分为YARN Client、ResourceManager(RM)、NodeManager(NM)、Container和ApplicationMaster(AM)5个部分,如图1所示。YARNClient提交Application到RM,它会首先创建一个Application上下文对象,并设置AM必需的资源请求信息,然后提交到RM。
YARN Client也可以与RM通信,获取到一个已经提交并运行的Application的状态信息等,RM是YARN集群的Master,负责管理整个集群的资源调度与分配;
RM作为集群资源的管理和调度的角色,如果存在单点故障,则整个集群的资源都无法使用,在2.4.0版本新增了RM的HA特性,增加了RM的可用性;
NM是YARN集群的Slave,是集群中实际拥有资源的工作节点。我们提交Job以后,会将组成Job的多个Task调度到对应的NM上进行执行。Hadoop集群中,为了获得分布式计算中的Locality特性,会将DN和NM在同一个节点上运行,这样对应的HDFS上的Block可能就在本地,而无需在网络间进行数据的传输;
Container是YARN集群中资源的抽象,将NM上的资源进行量化,根据需要组装成一个个Container,然后服务于已授权资源的计算任务。计算任务在完成计算后,系统会回收资源,以供后续计算任务申请使用。Container包含两种资源:内存和CPU,后续Hadoop版本可能会增加硬盘、网络等资源;
AM主要管理和监控部署在YARN集群上的Application,以MapReduce为例,MapReduce Application是一个用来处理MapReduce计算的服务框架程序,为用户编写的MapReduce程序提供运行时支持。通常我们在编写的一个MapReduce程序可能包含多个MapTask或Reduce Task,而各个Task的运行管理与监控都是由这个MapReduce Application来负责,比如运行Task的资源申请,由AM向RM申请;启动/停止NM上某Task的对应的Container,由AM向NM请求来完成。
发明内容
本发明要解决的技术问题是:提供一种处理大数据平台YARN数据分配不均衡的方法与装置,能够减轻数据倾斜程度,加快任务处理速度。
为解决上述技术问题,第一方面,本发明实施例提供了一种处理大数据平台YARN数据分配不均衡的方法,所述方法包括以下四大步骤:
(1)倾斜检测以用来确定哪个任务在执行过程中发生倾斜现象;
(2)主节点要求短腿型任务停止运行;
(3)采用本地扫描或者并行扫描的方法来划分间隔大小;
(4)对划分出的以间隔为单位的未完成任务进行重新分配,直到所有任务处理完毕。
根据第一方面,在第一种可能的实现方式中,对输入数据进行倾斜检测,确定哪个任务在执行过程中发生倾斜现象;
判定短腿型任务:下面一个关键问题就是如何判定哪个任务为短腿型任务,通过观察发现下面一个事实,同时重新分配两个任务的效果没有只重新分配一个任务的效果好,因为重新分配一个任务,该任务可以充分使用剩余的资源;鉴于同一时刻只有一个任务会被选为短腿型任务,YarnTune在检测期间选择有最大tremain值(为一个任务剩余执行任务的时间)的任务进行评估;在检测过程中,YarnTune标记剩余执行任务时间的一半大于重新分配的时间开销P_time的任务为短腿型任务,公式如下:
根据第一方面,在第二种可能的实现方式中,用户提交作业后,刚开始只要存在未被调度的任务,YarnTune调用传统Resource Manager模块调度分配任务;如果Master节点把所有的任务都调度分配完了,YarnTune就激活MR_Node Manager中的检测模块,对正在执行的任务基于tremain值进行倾斜检测,然后比较公式如果该不等式成立(即分割剩余任务是有价值的),报告该信息给MR_Resource Manager,并将该任务ID以及预估tremain值存入Master节点中的短腿型任务列表,等待后续处理。
根据第一方面,在第三种可能的实现方式中,当Master节点要求短腿型任务停止运行时,即MR_Resource Manager通知MR_Node Manager停止该任务的执行,并捕获其最后处理的输入数据的位置以及允许跳过先前已处理的输入数据,如图2;如果短腿型任务处于一种不可能或者很难停止的状态(例如,在处理最后的输入记录或者正在执行map阶段最后的本地排序),那么该请求失败,Master节点要么重新选择一个短腿型任务并对该任务进行以上处理,或者如果这个短腿型任务是作业中的最后一个任务的情形下,重新分区并且重新执行该短腿型任务全部输入,重新执行一个短腿型任务的全部输入就如同MapReduce的推测执行策略。
根据第一方面的第四种可能的实现方式,YarnTune收集压缩的输入数据,压缩数据形式采用一系列key间隔的方式,每个间隔都有差不多大小的字节,设置间隔大小:|Slot|为集群资源总数,Remaining为未处理的数据字节大小,YarnTune需要至少生成|Slot|个间隔,因为每个slot资源都有可能对预分割任务是可用的,由于YarnTune希望能够分配不相同的预分割任务给不同的可用的slot资源,YarnTune生成k|Slot|个间隔,k的值越大,能够对预分割任务进行越精细的任务划分,但是增加间隔数量会增加额外时间开销以及需要压缩的数据量;在原型系统中,设置k为5,令间隔大小为s,所以
根据第一方面,在第五种可能的实现方式中,本地扫描:如果短腿任务剩余的数据较小,执行该短腿任务的workers节点扫描该剩余数据并且生成相应的间隔;间隔生成算法,从第一条未处理的数据开始,计算出该数据的大小,如果该数据大小大于等于目标间隔大小,将其直接作为间隔;否则以该数据的大小作为平均值,计算出要达到80%的间隔大小需要多少数据,接着计算这段数据的真实大小,与目标间隔大小进行比对,并回退或者前进直到获取最接近且小于目标间隔大小的数据范围,合并范围中的所有数据,即生成间隔;循环执行以上步骤直到所有未处理的数据处理完毕,算法执行结束;
并行扫描:在并行扫描期间,间隔生成算法在分布式的输入数据上的并行模式下运行,每一个map输出文件都产生间隔;
本地扫描的s值对于并行扫描可能会非常大,因为在集群中总是有比slots更多的map结果输出,因此为并行模式设定一个更小的s值,为每一个map输出生成更合适的间隔|Output|为所有节点map输出文件数量。
根据第一方面,在第六种可能的实现方式中,间隔分配算法采用数据扫描中生成的间隔I、存储短腿型任务ID的列表L、重新分配时间开销P_time、任务调度开销S_time作为输入;算法主要有两大阶段,第一阶段以最优的方法分割剩余未处理数据,计算最优总完工时间opt:当给一个slot资源分配的任务小于2*P_time时,该分配为不划算的,分配后所产生的优化效果不足以抵消重新分配所需的时间开销,则跳过该任务,循环执行后续未处理任务,直到所有任务模拟执行完毕,得到最优总完工时间opt;在第二个阶段,根据上一阶段得到的最优总完工时间opt,分配每一个间隔给可用的slot资源:算法将间隔分配给最早可用的并且以接近opt值的slot资源,当slot剩余资源小于当前预处理间隔大小一半时,该slot资源无法处理该间隔,跳过此间隔,处理下一个间隔;如果某个间隔较大,直接分配一个间隔,直到所有间隔处理完毕,输出间隔分配结果;算法的时间复杂度为O(|I|+|Slot|log|Slot|),|I|为间隔的数量,|Slot|为集群中slots的数量。
第二方面,本发明实施例提供了一种处理大数据平台YARN数据分配不均衡的装置,所述装置四大模块包括:
(1)倾斜检测模块,确定哪个任务在执行过程中发生倾斜现象;
(2)扫描模块,本地扫描或者并行扫描的方法来划分间隔大小;
(3)分配模块,对划分出的以间隔为单位的未完成任务进行重新分配,直到所有任务处理完毕;
(4)执行模块,用于按照所述顺序执行任务。
根据第二方面,在第一种可能的实现方式中,所述倾斜检测模块:
YarnTune标记剩余执行任务时间的一半大于重新分配的时间开销P_time的任务为短腿型任务,公式如下:
根据第二方面,在第二种可能的实现方式中,所述扫描模块:
短腿型任务剩余的数据较小,执行该短腿任务的workers节点扫描该剩余数据并且生成相应的间隔,可采用本地扫描或者并行扫描方式,根据预估时间选择扫描方式。
根据第二方面,在第三种可能的实现方式中,所述分配模块:
首先以最优的方法分割剩余未处理数据,计算最优总完工时间opt;然后根据上一阶段得到的最优总完工时间opt,分配每一个间隔给可用的slot资源。
根据第二方面,在第四种可能的实现方式中,所述执行模块:
根据任务执行顺序,依次执行任务,直到任务全部完成。
第三方面,本发明实施例提供了一种处理大数据平台YARN数据分配不均衡的装置,包括第二方面或第二方面任一种可能的实现方式所述的调度装置。
第四方面,本发明实施例提供了一种处理大数据平台YARN数据分配不均衡的功耗降低方法,其特征在于,所述Hadoop集群系统使用第一方面或第一方面任一种可能的实现方式所述的方法进行调度。
附图说明
图1是本发明一种实施例的Hadoop2.0Yarn集群的系统架构图;
图2是本发明一种实施例的YarnTune系统停止倾斜任务的执行流程图;
图3是本发明一种实施例的YarnTune系统数据均衡分配方法的流程图;
图4是本发明一种实施例的Hadoop2.0Yarn集群任务数据倾斜的负载均衡装置的示意图;
图5是本发明一种实施例的样例说明图;
具体实施方式
下面根据附图和实施例,对本发明的具体实施方式作进一步详细说明。以下实施例用于说明本发明,但不用来限制本发明的范围。
如图3所示,本发明实施例提供了一种处理大数据平台YARN数据分配不均衡的方法,该方法包括步骤:
S101.倾斜检测以用来确定哪个任务在执行过程中发生倾斜现象。
S102.主节点要求短腿型任务停止运行。
S103.采用本地扫描或者并行扫描的方法来划分间隔大小。
S104.对划分出的以间隔为单位的未完成任务进行重新分配,直到所有任务处理完毕。
本领域技术人员可以理解,在本发明各实施例的方法中,各步骤的序号大小并不意味着执行顺序的先后,各步骤的执行顺序应以其功能和内在逻辑确定,而不应对本发明具体实施例的实施过程构成任何限定。
如图4所示,本发明实施例还提供了一种处理大数据平台YARN数据分配不均衡的调度装置300,该装置300包括:
(1)倾斜检测模块310,用于确定哪个任务在执行过程中发生倾斜现象;
(2)扫描模块320,本地扫描或者并行扫描的方法来划分间隔大小;
(3)分配模块330,对划分出的以间隔为单位的未完成任务进行重新分配,直到所有任务处理完毕;
(4)执行模块340,用于按照所述顺序执行任务。
本发明实施例还提供了一种包括本发明实施例的图3所示的调度装置的Hadoop集群系统,该集群系统可按照图1所示的架构部署,该调度装置可为图1中所示的任务调度器。
以下通过具体实例来进一步说明本发明各实施例:
样例说明图详见图5,采用默认Hadoop2.0Yarn系统,其中子任务2的Map阶段最先被检测出数据倾斜现象,在子任务1的Map阶段完成时刻,检测到子任务2发生倾斜,YarnTune估算子任务2的剩余执行时间,满足系统设定的条件,将子任务2标记为短腿型任务,通过重新分区子任务2未处理输入数据来减缓倾斜造成的影响;即YarnTune将未处理的子任务2的Map阶段数据重新分区给slot 1和slot 2,这样就可以更大程度的利用资源,加快任务的执行,减小总完工时间;重新分配的子任务被称为原未处理完任务的预分割任务(简称预分割任务),并且按最长处理时间优先的调度方式调度;在Map阶段,YarnTune循环执行检测倾斜—减缓倾斜这一策略,直到所有Map子任务执行完毕;同样的,在Reduce阶段,YarnTune采用上述策略,通过重新分区子任务剩余未处理数据来降低数据倾斜的影响。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一台计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。