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

一种处理MapReduce数据倾斜的负载均衡方法技术

技术编号:15391384 阅读:103 留言:0更新日期:2017-05-19 04:43
本发明专利技术实施例公开了一种处理MapReduce数据倾斜的负载均衡方法,涉及集群调度、负载均衡领域。随着大规模的MapReduce集群广泛地用于大数据处理,当前主要问题之一是如何最大限度地减少工作时间,提高MapReduce服务效率;在MapReduce过去的研究当中,较少涉及到数据均衡相关问题,本发明专利技术针对MapReduce运行流程中的数据倾斜问题,提出了Reduce端的负载均衡算法,所述方法包括步骤:对输入数据进行抽样分析,确定平均每个Reduce节点上任务数量;根据任务的个数和时间系数,按照基于时间系数的任务数量从大到小降序排序,数量相同则按照序号排序;按照资源剩余容量最大的原则以及所排任务顺序依次分配任务,直到所有任务分配完毕;并将分配方式提交给自定义的Partition函数,执行处理过程。

A load balancing method for handling MapReduce data skew

The embodiment of the invention discloses a load balancing method for processing the tilt of MapReduce data, relating to the field of cluster scheduling and load balancing. With the large-scale MapReduce clusters are widely used in large data processing, one of the main problems is how to minimize the work time, improve the service efficiency of MapReduce; in the past MapReduce, less related to the equilibrium data of related issues, the present invention for MapReduce running process data skew, proposed Reduce load balancing algorithm in the end, the method comprises the steps of sampling analysis on the input data, determine the average number of each Reduce node task; according to the task and the number of time according to the number of coefficients based on task time coefficient from big to small in descending order, the same number according to the ordinal sort according to the resource; the principle of maximum and residual capacity the order arrangement task assignments, until all tasks allocated; and will be submitted to the self distribution Defines the Partition function and executes the processing process.

【技术实现步骤摘要】
一种处理MapReduce数据倾斜的负载均衡方法
本专利技术涉及在线集群调度
,尤其涉及一种处理Hadoop集群任务数据倾斜的负载均衡方法和装置。
技术介绍
Hadoop是一个以可靠、高效、可伸缩的方式对大量数据进行分布式处理的软件框架。Hadoop集群(cluster)主要的任务部署分为客户端(Client)机器、主节点(Masternodes)和从节点(Slavenodes)3个部分,如图1所示。数据存储(Hadoop分布式文件系统,HadoopDistributedFileSystem,HDFS)和对运行在这个数据之上的并行计算(MapReduce)的监督是Hadoop的两个关键功能模块,这两个关键功能模块主要由主节点负责。HDFS采用主从(Master/Slave)结构模型,一个HDFS集群是由一个名字节点(NameNode)和若干个数据节点(DataNode)组成的。MapReduce框架是由一个单独运行在主节点上的作业追踪器(JobTracker)和运行在每个集群从节点上的任务追踪器(TaskTracker)共同组成。HDFS和MR共同组成Hadoop分布式系统体系结构的核心。Hadoop是一个实现了MapReduce模式的开源的分布式并行编程框架,它以其通用、方便实用等特征在云计算和大数据处理时代得到了广泛应用。MapReduce是一种用于大规模数据集(大于1TB)的并行运算的编程模型。MapReduce工作过程包括两个阶段:Map阶段和Reduce阶段。Map阶段包含多个Map任务,Reduc阶段包含多个Reduce任务。在正式执行Map函数前,需要对输入数据进行分片,每个Map任务处理一个逻辑分片(split)。split包含了数据起始位置、数据长度、数据所在节点等元数据信息,其划分方法通常由用户自己决定。split的数量决定了Map任务的数量。HDFS实现Hadoop体系结构中对分布式存储的底层支持存储。NameNode执行文件系统的命名空间,如打开、关闭、重命名文件或目录等,也负责数据块到具体DataNode的映射。DataNode既是数据存储节点,也是计算节点,它负责处理文件系统客户端的文件读写,并在NameNode的统一调度下进行数据库的创建、删除和复制工作。JobTracker主要负责调度Job的每一个子任务task运行于TaskTracker上,并监控它们,如果发现有失败的task就重新运行它。JobTracker还负责跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器(TaskScheduler),以便于调度器在资源出现空闲时将这些资源分配给合适的任务。TaskTracker主动周期性地调用心跳RPC函数,向JobTracker汇报节点和任务运行状态信息,同时领取JobTracker返回心跳包的各种命令并执行相应的操作。TaskTracker使用“slot”等量划分本节点上的资源量。slot是一个逻辑概念,是Hadoop的资源单位,一个节点的slot的数量用来表示某个节点的资源的容量或者说是能力的大小。slot分为Mapslot和Reduceslot两种,分别供MapTask和ReduceTask使用。每个作业申请资源以slot为单位,每个节点会确定自己的计算能力以及存储器,确定自己包含的slot总量。当某个作业要开始执行时,先向JobTracker申请slot,一个任务获取到一个slot后才有机会运行,而Hadoop调度器的作用就是将各个TaskTracker上的空闲slot分配给任务使用。Hadoop集群系统中的核心技术是任务调度,在云计算研究中,MapReduce环境的在线作业调度带来了新的课题和挑战,引起了越来越多的重视。最初,Hadoop默认的FIFO(先入先出)调度器专为周期性执行大规模批量作业而设计。随着MapReduce集群系统的用户数量的增加,计算能力调度器和Hadoop公平调度器(HFS:HadoopFairScheduling)的出现,提供了更高效的集群共享方式,但是,现有的调度器还不能提供对最小化在线作业集完工时间的支持,当提交在线作业为一个作业集时,完工时间可能较长因而导致总能耗较高。
技术实现思路
本专利技术要解决的技术问题是:提供一种处理MapReduce数据倾斜的负载均衡方法和装置,能够减轻数据倾斜程度,加快任务处理速度。为解决上述技术问题,第一方面,本专利技术实施例提供了一种处理MapReduce数据倾斜的负载均衡方法,所述方法包括以下四大步骤:对输入数据进行抽样分析,确定平均每个Reduce节点上任务数量;根据任务的个数和时间系数,按照基于时间系数的任务数量从大到小降序排序,数量相同则按照序号排序;按照资源剩余容量最大的原则以及所排任务顺序依次分配任务,直到所有任务分配完毕;将分配方式提交给自定义的Partition函数,执行任务处理过程;根据第一方面,在第一种可能的实现方式中,所述对输入数据进行抽样分析,确定平均每个Reduce节点上任务数量;对输入的文件,各个节点根据自己拥有的文件块进行计算,使用API计算文件的行数;运行Map程序统计各个节点上样本key值的频率,并记录该节点key的总个数,总个数可以通过获得文件行数乘以每行key值获取;运行Reduce程序汇总所有key的频率,并统计出各个key最终频率,同时汇总所有key的总个数,根据抽样频率和总个数,估算出每个key的具体数量。根据第一方面,在第二种可能的实现方式中,所述为所述各个key处理的时间有显著不同时,每个不同key,设定一个时间系数t,对任意一个keyki,ti的大小定义为该key执行时间和执行最慢的key的执行时间的比值;对每个不同key进行一次执行,将该key的执行时间进行记录,增加时间系数后,可以通过在分配时候把时间系数考虑进去,解决key值处理时间不同的情形。根据第一方面,在第三种可能的实现方式中,所述根据key的个数和时间系数,按照基于时间系数的key数量从大到小降序排序,数量相同则按照序号排序。根据第一方面的第四种可能的实现方式,取出key选择Reduce剩余数量最大的分配;若该Reduce剩余容量足够分配,则直接分配给Reduce,分配后修改Reduce剩余容量数目;若该Reduce剩余容量不够,则分配Reduce剩余容量大小并将已经分配的ki标记为ki_1,取出Reduce剩余数量最大的分配,直到该key分配完毕。根据第一方面,在第五种可能的实现方式中,所有调整执行完成后,按照调整的结果对输入文件进行key替换,并将分配方式提交给自定义的Partition函数。第二方面,本专利技术实施例提供了一种处理MapReduce数据倾斜的负载均衡方法装置,所述装置四大模块包括:抽样模块,用于对输入数据进行抽样分析,确定平均每个Reduce节点上任务数量;排序模块,根据任务的个数和时间系数,基于时间系数的任务数量从大到小降序排序,数量相同则按照序号排序;分配模块,按照资源剩余容量最大的原则以及所排任务顺序依次分配任务,直到所有任务分配完毕;执行模块,用于按照所述顺序执行任务。根据第二方面,在第一种可能的实现方式中,所述抽样本文档来自技高网
...
一种处理MapReduce数据倾斜的负载均衡方法

【技术保护点】
一种处理MapReduce数据倾斜的负载均衡方法,其特征在于,所述方法包括步骤:对输入数据进行抽样分析,确定平均每个Reduce节点上任务数量;根据任务的个数和时间系数,按照基于时间系数的任务数量从大到小降序排序,数量相同则按照序号排序;按照资源剩余容量最大的原则以及所排任务顺序依次分配任务,直到所有任务分配完毕;将分配方式提交给自定义的Partition函数,执行任务处理过程。

【技术特征摘要】
1.一种处理MapReduce数据倾斜的负载均衡方法,其特征在于,所述方法包括步骤:对输入数据进行抽样分析,确定平均每个Reduce节点上任务数量;根据任务的个数和时间系数,按照基于时间系数的任务数量从大到小降序排序,数量相同则按照序号排序;按照资源剩余容量最大的原则以及所排任务顺序依次分配任务,直到所有任务分配完毕;将分配方式提交给自定义的Partition函数,执行任务处理过程。2.根据权利要求1所述的方法,其特征在于,所述的抽样方法为:对输入的文件,各个节点根据自己拥有的文件块进行计算,使用API计算文件的行数;运行Map程序统计各个节点上样本key值的频率,并记录该节点key的总个数,总个数可以通过获得文件行数乘以每行key值获取;运行Reduce程序汇总所有key的频率,并统计出各个key最终频率,同时汇总所有key的总个数,根据抽样频率和总个数,估算出每个key的具体数量。3.根据权利要求1所述的方法,其特征在于,所述各个key处理的时间有显著不同时,每个不同key,设定一个时间系数t,对任意一个keyki,ti的大小定义为该key执行时间和执行最慢的key的执行时间的比值;对每个不同key进行一次执行,将该key的执行时间进行记录,增加时间系数后,可以通过在分配时候把时间系数考虑进去,解决key值处理时间不同的情形。4.根据权利要求1所述的方法,其特征在于,根据key的个数和时间系数,按照基于时间系数的key数量从大到小降序排序,数量相同则按照序号排序。5.根据权利要求1所述的方法,其特征在于,取出key选择Reduce剩余数量最大的分配;若该Reduce剩余容量足够分配,则直接分配给Reduce,分配后修改Reduce剩余容量数目;若该Reduce剩余容量不够,则分配Reduce剩余容量大小并将已经分配的ki标记为ki_1,取出Reduce剩...

【专利技术属性】
技术研发人员:田文洪李国忠
申请(专利权)人:田文洪李国忠杨吴同黄超杰刘弘一徐敏贤
类型:发明
国别省市:四川,51

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

1