CN103617087B - 一种适合迭代计算的MapReduce优化方法 - Google Patents
一种适合迭代计算的MapReduce优化方法 Download PDFInfo
- Publication number
- CN103617087B CN103617087B CN201310600745.7A CN201310600745A CN103617087B CN 103617087 B CN103617087 B CN 103617087B CN 201310600745 A CN201310600745 A CN 201310600745A CN 103617087 B CN103617087 B CN 103617087B
- Authority
- CN
- China
- Prior art keywords
- task
- node
- hadoop
- map
- tasks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种适合迭代计算的MapReduce优化方法,是应用在一种Hadoop集群***中,该集群***包括一个主节点以及多个从节点,所述方法包括:主节点接收用户提交的多个Hadoop作业,主节点的作业服务进程将作业放入作业队列中,并等待主节点的作业调度器进行作业调度,主节点等待从节点发来的任务请求,并在接收到任务请求后,主节点的作业调度器优先调度本地化任务,如果在发出任务请求的从节点上没有本地化任务,则根据Hadoop作业的任务类型进行预测调度。本发明能够支持传统数据密集型应用,又能够透明高效地支持迭代计算,并分别从动态数据和静态数据两个方面进行研究并实现数据传输量的减少。
Description
技术领域
本发明属于并行计算和海量数据处理领域,更具体地,涉及一种适合迭代计算的MapReduce优化方法。
背景技术
进入到21世纪,数据的处理规模越来越大,TB级别的规模越来越常见,甚至出现了PB级别的规模。这种级别的数据规模远远超出了个人电脑的处理能力。正是这种处理能力的需求促进了并行或分布式计算模型的发展。这种情况下,Google的MapReduce模型应运而生,它是一种流行的大集群环境下数据密集型计算模型。
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(化简)”,和他们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。他极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式***上。在这个模型中,所有数据的组织形式是一种<key,value>对。编程时,程序员需要做的只是实现Map和Reduce函数。Map函数处理输入<key,value>对并输出零个或者若干个键值对,Reduce函数读取Map的中间输出,最终得到零个或若干个结果。MapReduce模型结构遵循相对独立原则,即Map或Reduce之间不存在数据依赖关系。
MapReduce模型的设计思路让它善于进行批处理模式的计算,譬如日志分析和文本处理等。然而除了这些批处理方式的应用,还存在着基于机器学习或模式识别的应用,典型的有计算机视觉和数据挖掘应用等。在这些应用中,核心算法是基于迭代方式设计的。然而目前的Hadoop(MapReduce模型开源实现)不能透明高效地支持迭代计算,甚至Hadoop的某些特性不适合迭代计算。随着社交网络、计算机视觉、数据挖掘等的发展,这类应用的数据处理规模越来越大。能够有效支持这类应用的并行计算模型的需求越来越大。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种适合迭代计算的MapReduce优化方法,其目的在于,在Hadoop的基础上加以改进,既能够支持传统数据密集型应用,又能够透明高效地支持迭代计算,并分别从动态数据和静态数据两个方面进行研究并实现数据传输量的减少。
为实现上述目的,按照本发明的一个方面,提供了一种适合迭代计算的MapReduce优化方法,是应用在一种Hadoop集群***中,该集群***包括一个主节点以及多个从节点,所述方法包括以下步骤:
(1)主节点接收用户提交的多个Hadoop作业,主节点的作业服务进程将作业放入作业队列中,并等待主节点的作业调度器进行作业调度;
(2)主节点等待从节点发来的任务请求,并在接收到任务请求后,主节点的作业调度器优先调度本地化任务,如果在发出任务请求的从节点上没有本地化任务,则根据Hadoop作业的任务类型进行预测调度,针对计算型任务直接对该Hadoop作业进行调度,针对传输型任务则延迟一定间隔,当总延迟时间间隔达到延迟阈值时才对该Hadoop作业进行调度;
(3)从节点在接收到主节点调度的Hadoop作业的任务后,判断Hadoop作业类型进行不同处理,作业类型分为迭代型和非迭代型两种,针对非迭代型作业按照Hadoop的常规处理方式进行处理,针对迭代型作业,在Map阶段之前增加Map端混洗过程,用于为Map任务读取动态数据,在Reduce阶段,将动态数据进行本地缓存并交由从节点的动态数据缓存组件管理,并在作业处理完毕后将最终的处理结果保存在HDFS中。
优选地,步骤(2)具体包括以下子步骤:
(2-1)主节点上的作业服务进程监控并等待从节点上的任务服务进程发送来的心跳信息,该心跳信息包括当前从节点的运行信息,具体包括总槽数和当前正在运行的槽数;
(2-2)主节点在接收到从节点发来的心跳信息后,根据该心跳信息计算当前从节点的空闲槽数和整个Hadoop集群***的平均运行槽数,根据计算的结果判断是否需要向当前从节点分配该作业的任务,如果不需要分配任务,则返回步骤(2-1),否则执行步骤(2-3);
(2-3)设置计数器i=0;
(2-4)判断第i个Hadoop作业是否在当前从节点有本地化任务,即当前从节点是否存储有第i个Hadoop作业的输入数据分片(Split),若没有则转入步骤(2-5),若有则转入步骤(2-11);
(2-5)设置i=i+1,并判断i是否等于Hadoop作业的个数,若等于则进入步骤(2-7),否则返回步骤(2-4);
(2-6)设置计数器j=0;
(2-7)判断第j个Hadoop作业的任务类型是计算型任务还是传输型任务,若为计算型任务,则进入步骤(2-11),若为传输型任务,则进入步骤(2-8);
(2-8)将第j个Hadoop作业的任务调度延迟一个心跳时间;
(2-9)判断第j个Hadoop作业任务调度的总延迟时间是否达到一个阈值,若达到,则转入步骤(2-11),否则转入步骤(2-10);
(2-10)设置j=j+1,并判断j是否等于Hadoop作业的个数,若等于则进入步骤(2-12),否则返回步骤(2-1);
(2-11)将第i个Hadoop作业的本地化任务调度到当前从节点,然后过程结束;
(2-12)对第j个Hadoop作业的任务调度到当前从节点,然后过程结束。
优选地,步骤(2-2)具体为,当前从节点的空闲槽数等于总槽数减去当前正在运行的槽数,整个Hadoop集群***的平均运行槽数为跟踪进程监控到的所有从节点正在运行的槽数的和除以所有从节点的槽数,如果当前节点的空闲槽数等于0,则不需要分配任务,同时如果当前从节点正在运行的槽数大于整个Hadoop集群***的平均运行槽数,则不需要分配任务。
优选地,步骤(3)具体包括以下子步骤:
(3-1)接收主节点调度的Hadoop作业的任务;
(3-2)判断任务的作业类型是迭代型作业还是非迭代型作业,如果是迭代型作业则转入步骤(3-3),如果是非迭代型作业则转入步骤(3-4);
(3-3)判断该迭代型作业的任务类型是Map任务还是Reduce任务,如果是Map任务则转入步骤(3-5),如果是Reduce任务则转入步骤(3-9);
(3-4)判断该非迭代型作业的任务类型是Map任务还是Reduce任务,如果是Map任务则转入步骤(3-8),如果是Reduce任务则转入步骤(3-9);
(3-5)判断该迭代型作业是否是第一次运行,如果不是则转入步骤(3-6),如果是则转入步骤(3-7);
(3-6)Map任务进程(Mapper)所在从节点的任务服务进程启动多个数据拷贝线程,通过HTTP方式请求Reduce任务进程所在从节点获取Reduce任务进程计算得到的动态数据文件,然后转入步骤(3-8);
(3-7)Map任务进程读取动态数据初始化值,然后转入步骤(3-8);
(3-8)Hadoop集群***将作业的输入文件分解成一个个的分片,Map任务进程对分片进行处理,然后转入步骤(3-14);
(3-9)从节点上的Reducer任务进程启动数据拷贝线程,通过HTTP方式请求Map任务进程所在从节点获取Map任务进程的中间输出文件,中间输出文件存储在从节点的本地磁盘中,拷贝过来的文件会先放在内存缓冲区中,多个拷贝文件会根据会合并成最终的大文件,这个大文件按照key排序,然后转入步骤(3-10);
(3-10)Reduce任务进程从得到的大文件中以<key,iterator>形式读取记录,并执行Reduce()方法,然后转入步骤(3-11);
(3-11)判断作业类型是迭代型还是非迭代型,如果是迭代型作业,则转入步骤(3-12),如果是非迭代型作业,则转入步骤(3-13);
(3-12)从节点的动态数据缓存组件将Reduce任务进程执行后的结果缓存在内存当中,当缓冲区满时溢出到本地磁盘文件中,然后转入步骤(3-14);
(3-13)Reduce任务进程将执行后的结果写入到HDFS中,然后转入步骤(3-14);
(3-14)任务执行结束,然后返回步骤(3-1)。
优选地,步骤(3-6)中的动态数据文件由从节点的动态数据缓存组件管理,保存在内存和本地磁盘中;拷贝过来的动态数据也由动态数据缓存组件来管理,同一从节点的多个Map任务进程从从节点本地请求动态数据文件,这些数据将作为Map任务进程需要的动态数据输入。
优选地,步骤(3-8)中,分片的大小默认为HDFS块大小,块大小通过配置文件配置,Map任务进程将分片分解成Map任务进程需要的<key,value>形式的记录,执行Map()方法,将执行的结果缓存在内存当中,当缓冲区满时会溢出到磁盘当中,溢出的文件会记录分区的信息,单个溢出文件首先按照分区排序,然后按照key排序;如果有多个溢出文件需要合并成一个大文件,这个过程对多个溢出文件进行归并排序。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)任务的数据本地性更好:由于采用了步骤(2),本发明中提出的调度策略相较于延迟调度策略,更好地平衡了任务本地化需求和任务延迟开销,即将Hadoop中的任务(task)概念划分为计算密集型和传输密集型两类,并结合集群网络的负载信息实时地预测延迟时间。这样既能达到提高任务本地化比例,又能有效地降低作业的整体延迟开销。因此本发明有明显的优势。
(2)动态数据传输开销更小:由于采用了步骤(3),本发明提出的动态数据缓存策略极大地降低了读写动态数据带来的集群网络传输开销。理论证明并实验验证,迭代型作业的动态数据传输总量只与任务所在节点数目成正比,并有确切上限,即集群节点数目。因此本发明有明显的优势。
(3)集群在多作业和多用户使用环境下效能更高:在多作业和多用户环境下,集群的网络资源成为集群效率的瓶颈,将会极大地限制集群的使用效能。本发明通过优化Hadoop的网络数据流,降低集群网络传输开销,有效地缓解集群网络负载,减小用户之间及作业之间的网络资源竞争,提高了在多作业和多用户下的集群使用效能。因此本发明有明显的优势。
(4)高效透明地支持迭代计算。相较于传统的Hadoop,本发明既可以支持传统的批处理作业,又可以更好地支持迭代型作业,所以本发明的使用领域更广泛,例如社交网络、计算机视觉、数据挖掘等。因此本发明有明显的优势。
附图说明
图1是本发明适合迭代计算的MapReduce优化方法的流程图。
图2是本发明步骤(2)的细化流程图。
图3是本发明步骤(3)的细化流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
以下首先对本发明的技术术语进行解释和说明:
动态数据:迭代计算问题中,一个直接或间接地不断由旧值递推出新值的变量。
静态数据:迭代计算问题中,不会有任何的改变的数据,一般为算法的原始输入数据。
计算型任务:任务的计算时间在Map任务的全部处理过程里占主要部分的任务。
传输型任务:任务的数据传输时间在Map任务的全部处理过程中占主要部分的任务。
本地化任务:在从节点本地存储有输入数据分片的Map任务。
延迟调度策略:一种延迟非本地化任务调度的策略。
本发明的整体思路在于,着眼于多用户和多作业集群环境,通过优化静态数据流和共享数据流来减小集群的网络传输负载。针对静态数据流的优化,本发明主要贡献了一个预测调度算法;针对共享数据流的优化,本发明通过数据缓存策略和增加Map端的shuffle过程来达到目的。
本发明适合迭代计算的MapReduce优化方法是应用在一种Hadoop集群***中,该集群***包括一个主(Master)节点以及多个从(Slave)节点,该方法包括以下步骤(如图1所示):
(1)主节点接收用户提交的多个Hadoop作业,主节点的作业服务进程(JobTracker)将作业放入作业队列中,并等待主节点的作业调度器进行作业调度;
(2)主节点等待从节点发来的任务请求,并在接收到任务请求后,主节点的作业调度器优先调度本地化任务,如果在发出任务请求的从节点上没有本地化任务,则根据Hadoop作业的任务类型进行预测调度,针对计算型任务直接对该Hadoop作业进行调度,针对传输型任务则延迟一定间隔,当总延迟时间间隔达到延迟阈值时才对该Hadoop作业进行调度。具体包括以下子步骤(如图2所示):
(2-1)主节点上的作业服务进程监控并等待从节点上的任务服务进程(TaskTracker)发送来的心跳信息,该心跳信息包括当前从节点的运行信息,具体包括总槽(slot)数和当前正在运行的槽数等;
(2-2)主节点在接收到从节点发来的心跳信息后,根据该心跳信息计算当前从节点的空闲槽数和整个Hadoop集群***的平均运行槽数,根据计算的结果判断是否需要向当前从节点分配该作业的任务,如果不需要分配任务,则返回步骤(2-1),否则执行步骤(2-3);具体而言,当前从节点的空闲槽数等于总槽数减去当前正在运行的槽数,整个Hadoop集群***的平均运行槽数为跟踪进程监控到的所有从节点正在运行的槽数的和除以所有从节点的槽数;如果当前节点的空闲槽数等于0,则不需要分配任务,同时如果当前从节点正在运行的槽数大于整个Hadoop集群***的平均运行槽数,则不需要分配任务;
(2-3)设置计数器i=0;
(2-4)判断第i个Hadoop作业是否在当前从节点有本地化任务,即当前从节点是否存储有第i个Hadoop作业的输入数据分片(Split),若没有则转入步骤(2-5),若有则转入步骤(2-11);
(2-5)设置i=i+1,并判断i是否等于Hadoop作业的个数,若等于则进入步骤(2-7),否则返回步骤(2-4);
(2-6)设置计数器j=0;
(2-7)判断第j个Hadoop作业的任务类型是计算型任务还是传输型任务,若为计算型任务,则进入步骤(2-11),若为传输型任务,则进入步骤(2-8);
(2-8)将第j个Hadoop作业的任务调度延迟一个心跳时间;具体而言,心跳时间为从节点发送心跳信息的时间间隔,具体为3秒;
(2-9)判断第j个Hadoop作业任务调度的总延迟时间是否达到一个阈值,若达到,则转入步骤(2-11),否则转入步骤(2-10);阈值的取值可由集群管理员配置,配置的依据是:当阈值越大,任务的本地化率会越大,但是延迟的开销也会越大;阈值越小,本地化率相对越小,但是延迟的开销也会越小,阈值默认为3分钟;
(2-10)设置j=j+1,并判断j是否等于Hadoop作业的个数,若等于则进入步骤(2-12),否则返回步骤(2-1);
(2-11)将第i个Hadoop作业的本地化任务调度到当前从节点,然后过程结束;
(2-12)对第j个Hadoop作业的任务调度到当前从节点,然后过程结束。
本步骤的优点在于:将任务进行分类,对计算型任务使用默认的方式进行调度,对传输型任务进行预测调度。这样可以既可以提高任务的本地化比例,又可以减小延迟带来的开销。
(3)从节点在接收到主节点调度的Hadoop作业的任务后,判断Hadoop作业类型进行不同处理,作业类型分为迭代型和非迭代型两种,针对非迭代型作业按照Hadoop的常规处理方式进行处理,针对迭代型作业,在Map阶段之前增加了一个Map端混洗(shuffle)过程,用于为Map阶段的任务(即Map任务)读取动态数据,在Reduce阶段,将动态数据进行本地缓存并交由从节点的动态数据缓存组件管理,并在作业处理完毕后将最终的处理结果保存在Hadoop分布式文件***(Hadoop Distributed File System,简称HDFS)中;本步骤具体包括以下子步骤(如图3所示):
(3-1)接收主节点调度的Hadoop作业的任务;
(3-2)判断任务的作业类型是迭代型作业还是非迭代型作业,如果是迭代型作业则转入步骤(3-3),如果是非迭代型作业则转入步骤(3-4);
(3-3)判断该迭代型作业的任务类型是Map任务还是Reduce任务,如果是Map任务则转入步骤(3-5),如果是Reduce任务则转入步骤(3-9);
(3-4)判断该非迭代型作业的任务类型是Map任务还是Reduce任务,如果是Map任务则转入步骤(3-8),如果是Reduce任务则转入步骤(3-9);
(3-5)判断该迭代型作业是否是第一次运行,如果不是则转入步骤(3-6),如果是则转入步骤(3-7);
(3-6)Map任务进程(Mapper)所在从节点的任务服务进程启动多个数据拷贝线程,通过HTTP方式请求Reduce任务进程(Reducer)所在从节点获取Reduce任务进程计算得到的动态数据文件,然后转入步骤(3-8);这些动态数据文件由从节点的动态数据缓存组件管理,保存在内存和本地磁盘中;拷贝过来的动态数据也由动态数据缓存组件来管理,同一从节点的多个Map任务进程从从节点本地请求动态数据文件,这些数据将作为Map任务进程需要的动态数据输入;
本子步骤的优点在于:1,Reduce阶段后的动态数据保存在本次,减少了写入到HDFS带来的开销;2,由Map任务进程所在的从节点请求Reduce阶段后的动态数据,并保存在Map任务进程的从节点的本地,Map任务进程从从节点本地请求数据,这样大大地减少了动态数据的网络传输量。
(3-7)Map任务进程读取动态数据初始化值,然后转入步骤(3-8);简单而言,迭代型作业需要并产生一些动态数据,这个数据在第一次作业执行时是需要由用户提供该动态数据的初始化值;
(3-8)Hadoop集群***将作业的输入文件分解成一个个的分片,Map任务进程对分片进行处理,然后转入步骤(3-14);具体而言,分片的大小默认为HDFS块大小,块大小通过配置文件配置,Map任务进程将分片分解成Map任务进程需要的<key,value>形式的记录,执行Map()方法,将执行的结果缓存在内存当中,当缓冲区满时会溢出到磁盘当中;溢出的文件会记录分区的信息,单个溢出文件首先按照分区排序,然后按照key排序;如果有多个溢出文件需要合并成一个大文件,这个过程对多个溢出文件进行归并排序;
(3-9)从节点上的Reducer任务进程启动数据拷贝线程,通过HTTP方式请求Map任务进程所在从节点获取Map任务进程的中间输出文件,中间输出文件存储在从节点的本地磁盘中,拷贝过来的文件会先放在内存缓冲区中,多个拷贝文件会根据会合并成最终的大文件,这个大文件按照key排序,然后转入步骤(3-10);
(3-10)Reduce任务进程从得到的大文件中以<key,iterator>形式读取记录,并执行Reduce()方法,然后转入步骤(3-11);
(3-11)判断作业类型是迭代型还是非迭代型,如果是迭代型作业,则转入步骤(3-12),如果是非迭代型作业,则转入步骤(3-13);
(3-12)从节点的动态数据缓存组件将Reduce任务进程执行后的结果缓存在内存当中,当缓冲区满时溢出到本地磁盘文件中,然后转入步骤(3-14);
(3-13)Reduce任务进程将执行后的结果写入到HDFS中,然后转入步骤(3-14);
(3-14)任务执行结束,然后返回步骤(3-1)。
实例:
为了验证本发明的可行性和有效性,在下列表1所示的实验配置环境下执行编写的计算机程序,对发明进行测试,测试结果如下列表2和表3所示:
表1:实验配置环境
在表2和表3中,本发明的比较对象是Hadoop-0.20.0和Haloop,实验算法是fuzzyC-Means。表2表示的是三个MapReduce实现方案在不同实验规模下的动态数据的网络传输量比较。表3表示的是3个MapReduce实现方案在一定实验规模下不同迭代次数时的执行时间比较。实验结果显示,本发明在网络数据传输和时间性能上都有比较理想的改进。
表2:fuzzy C-Means中动态数据传输量比较
表3:fuzzy C-Means执行时间比较
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种适合迭代计算的MapReduce优化方法,是应用在一种Hadoop集群***中,该集群***包括一个主节点以及多个从节点,其特征在于,所述方法包括以下步骤:
(1)主节点接收用户提交的多个Hadoop作业,主节点的作业服务进程将作业放入作业队列中,并等待主节点的作业调度器进行作业调度;
(2)主节点等待从节点发来的任务请求,并在接收到任务请求后,主节点的作业调度器优先调度本地化任务,如果在发出任务请求的从节点上没有本地化任务,则根据Hadoop作业的任务类型进行预测调度,针对计算型任务直接对该Hadoop作业进行调度,针对传输型任务则延迟一定间隔,当总延迟时间间隔达到延迟阈值时才对该Hadoop作业进行调度,其中,计算型任务是指任务的计算时间在Map任务的全部处理过程里占主要部分的任务,传输型任务是指任务的数据传输时间在Map任务的全部处理过程中占主要部分的任务;
其中,步骤(2)具体包括以下子步骤:
(2-1)主节点上的作业服务进程监控并等待从节点上的任务服务进程发送来的心跳信息,该心跳信息包括当前从节点的运行信息,具体包括总槽数和当前正在运行的槽数;
(2-2)主节点在接收到从节点发来的心跳信息后,根据该心跳信息计算当前从节点的空闲槽数和整个Hadoop集群***的平均运行槽数,根据计算的结果判断是否需要向当前从节点分配该作业的任务,如果不需要分配任务,则返回步骤(2-1),否则执行步骤(2-3);
(2-3)设置计数器i=0;
(2-4)判断第i个Hadoop作业是否在当前从节点有本地化任务,即当前从节点是否存储有第i个Hadoop作业的输入数据分片(Split),若没有则转入步骤(2-5),若有则转入步骤(2-11);
(2-5)设置i=i+1,并判断i是否等于Hadoop作业的个数,若等于则进入步骤(2-7),否则返回步骤(2-4);
(2-6)设置计数器j=0;
(2-7)判断第j个Hadoop作业的任务类型是计算型任务还是传输型任务,若为计算型任务,则进入步骤(2-11),若为传输型任务,则进入步骤(2-8);
(2-8)将第j个Hadoop作业的任务调度延迟一个心跳时间;
(2-9)判断第j个Hadoop作业任务调度的总延迟时间是否达到一个阈值,若达到,则转入步骤(2-11),否则转入步骤(2-10);
(2-10)设置j=j+1,并判断j是否等于Hadoop作业的个数,若等于则进入步骤(2-12),否则返回步骤(2-1);
(2-11)将第i个Hadoop作业的本地化任务调度到当前从节点,然后过程结束;
(2-12)对第j个Hadoop作业的任务调度到当前从节点,然后过程结束;
(3)从节点在接收到主节点调度的Hadoop作业的任务后,判断Hadoop作业类型进行不同处理,作业类型分为迭代型和非迭代型两种,针对非迭代型作业按照Hadoop的常规处理方式进行处理,针对迭代型作业,在Map阶段之前增加Map端混洗过程,用于为Map任务读取动态数据,在Reduce阶段,将动态数据进行本地缓存并交由从节点的动态数据缓存组件管理,并在作业处理完毕后将最终的处理结果保存在HDFS中。
2.根据权利要求1所述的MapReduce优化方法,其特征在于,步骤(2-2)具体为,当前从节点的空闲槽数等于总槽数减去当前正在运行的槽数,整个Hadoop集群***的平均运行槽数为跟踪进程监控到的所有从节点正在运行的槽数的和除以所有从节点的槽数,如果当前节点的空闲槽数等于0,则不需要分配任务,同时如果当前从节点正在运行的槽数大于整个Hadoop集群***的平均运行槽数,则不需要分配任务。
3.根据权利要求1所述的MapReduce优化方法,其特征在于,步骤(3)具体包括以下子步骤:
(3-1)接收主节点调度的Hadoop作业的任务;
(3-2)判断任务的作业类型是迭代型作业还是非迭代型作业,如果是迭代型作业则转入步骤(3-3),如果是非迭代型作业则转入步骤(3-4);
(3-3)判断该迭代型作业的任务类型是Map任务还是Reduce任务,如果是Map任务则转入步骤(3-5),如果是Reduce任务则转入步骤(3-9);
(3-4)判断该非迭代型作业的任务类型是Map任务还是Reduce任务,如果是Map任务则转入步骤(3-8),如果是Reduce任务则转入步骤(3-9);
(3-5)判断该迭代型作业是否是第一次运行,如果不是则转入步骤(3-6),如果是则转入步骤(3-7);
(3-6)Map任务进程(Mapper)所在从节点的任务服务进程启动多个数据拷贝线程,通过HTTP方式请求Reduce任务进程所在从节点获取Reduce任务进程计算得到的动态数据文件,然后转入步骤(3-8);
(3-7)Map任务进程读取动态数据初始化值,然后转入步骤(3-8);
(3-8)Hadoop集群***将作业的输入文件分解成一个个的分片,Map任务进程对分片进行处理,然后转入步骤(3-14);
(3-9)从节点上的Reducer任务进程启动数据拷贝线程,通过HTTP方式请求Map任务进程所在从节点获取Map任务进程的中间输出文件,中间输出文件存储在从节点的本地磁盘中,拷贝过来的文件会先放在内存缓冲区中,多个拷贝文件会根据会合并成最终的大文件,这个大文件按照key排序,然后转入步骤(3-10);
(3-10)Reduce任务进程从得到的大文件中以<key,iterator>形式读取记录,并执行Reduce()方法,然后转入步骤(3-11);
(3-11)判断作业类型是迭代型还是非迭代型,如果是迭代型作业,则转入步骤(3-12),如果是非迭代型作业,则转入步骤(3-13);
(3-12)从节点的动态数据缓存组件将Reduce任务进程执行后的结果缓存在内存当中,当缓冲区满时溢出到本地磁盘文件中,然后转入步骤(3-14);
(3-13)Reduce任务进程将执行后的结果写入到HDFS中,然后转入步骤(3-14);
(3-14)任务执行结束,然后返回步骤(3-1)。
4.根据权利要求3所述的MapReduce优化方法,其特征在于,步骤(3-6)中的动态数据文件由从节点的动态数据缓存组件管理,保存在内存和本地磁盘中;拷贝过来的动态数据也由动态数据缓存组件来管理,同一从节点的多个Map任务进程从从节点本地请求动态数据文件,这些数据将作为Map任务进程需要的动态数据输入。
5.根据权利要求3所述的MapReduce优化方法,其特征在于,步骤(3-8)中,分片的大小默认为HDFS块大小,块大小通过配置文件配置,Map任务进程将分片分解成Map任务进程需要的<key,value>形式的记录,执行Map()方法,将执行的结果缓存在内存当中,当缓冲区满时会溢出到磁盘当中,溢出的文件会记录分区的信息,单个溢出文件首先按照分区排序,然后按照key排序;如果有多个溢出文件需要合并成一个大文件,这个过程对多个溢出文件进行归并排序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310600745.7A CN103617087B (zh) | 2013-11-25 | 2013-11-25 | 一种适合迭代计算的MapReduce优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310600745.7A CN103617087B (zh) | 2013-11-25 | 2013-11-25 | 一种适合迭代计算的MapReduce优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103617087A CN103617087A (zh) | 2014-03-05 |
CN103617087B true CN103617087B (zh) | 2017-04-26 |
Family
ID=50167790
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310600745.7A Active CN103617087B (zh) | 2013-11-25 | 2013-11-25 | 一种适合迭代计算的MapReduce优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103617087B (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105204920B (zh) * | 2014-06-18 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 一种基于映射聚合的分布式计算作业的实现方法及装置 |
CN104270412A (zh) * | 2014-06-24 | 2015-01-07 | 南京邮电大学 | 一种基于Hadoop分布式文件***的三级缓存方法 |
CN104158860B (zh) * | 2014-07-31 | 2017-09-29 | 国家超级计算深圳中心(深圳云计算中心) | 一种作业调度方法及作业调度*** |
CN104503820B (zh) * | 2014-12-10 | 2018-07-24 | 华南师范大学 | 一种基于异步启动的Hadoop优化方法 |
US10033570B2 (en) * | 2015-01-15 | 2018-07-24 | International Business Machines Corporation | Distributed map reduce network |
CN106528288A (zh) * | 2015-09-10 | 2017-03-22 | 中兴通讯股份有限公司 | 一种资源管理方法、装置和*** |
CN106547609B (zh) * | 2015-09-18 | 2020-09-18 | 阿里巴巴集团控股有限公司 | 一种事件处理方法和设备 |
CN105117286B (zh) * | 2015-09-22 | 2018-06-12 | 北京大学 | MapReduce中任务的调度方法和流水化执行方法 |
CN106354563B (zh) * | 2016-08-29 | 2020-05-22 | 广州市香港科大***研究院 | 用于3d重建的分布式计算***以及3d重建方法 |
CN106506255B (zh) * | 2016-09-21 | 2019-11-05 | 微梦创科网络科技(中国)有限公司 | 一种压力测试的方法、装置及*** |
CN108153583B (zh) * | 2016-12-06 | 2022-05-13 | 阿里巴巴集团控股有限公司 | 任务分配方法及装置、实时计算框架*** |
CN108270634B (zh) * | 2016-12-30 | 2021-08-24 | 中移(苏州)软件技术有限公司 | 一种心跳探测的方法及*** |
CN106897133B (zh) * | 2017-02-27 | 2020-09-29 | 苏州浪潮智能科技有限公司 | 一种基于pbs作业调度管理集群负载的实现方法 |
CN107122238B (zh) * | 2017-04-25 | 2018-05-25 | 郑州轻工业学院 | 基于Hadoop云计算框架的高效迭代机制设计方法 |
CN107316124B (zh) * | 2017-05-10 | 2018-08-31 | 中国航天***科学与工程研究院 | 大数据环境下大规模事务型作业调度与处理通用*** |
CN107391250B (zh) * | 2017-08-11 | 2021-02-05 | 成都优易数据有限公司 | 一种提高Mapreduce任务Shuffle性能的控制器调度方法 |
CN107562926B (zh) * | 2017-09-14 | 2023-09-26 | 丙申南京网络技术有限公司 | 针对大数据分析的多hadoop分布式文件*** |
CN107807983B (zh) * | 2017-10-30 | 2021-08-24 | 辽宁大学 | 一种支持大规模动态图数据查询的并行处理框架的设计方法 |
CN108376104B (zh) * | 2018-02-12 | 2020-10-27 | 上海帝联网络科技有限公司 | 节点调度方法及装置、计算机可读存储介质 |
CN108563497B (zh) * | 2018-04-11 | 2022-03-29 | 中译语通科技股份有限公司 | 一种高效的多维度算法调度方法、任务服务器 |
CN109117285B (zh) * | 2018-07-27 | 2021-12-28 | 高新兴科技集团股份有限公司 | 支持高并发的分布式内存计算集群*** |
CN110297714B (zh) * | 2019-06-19 | 2023-05-30 | 上海冰鉴信息科技有限公司 | 基于大规模图数据集获取PageRank的方法及装置 |
CN112148202B (zh) * | 2019-06-26 | 2023-05-26 | 杭州海康威视数字技术股份有限公司 | 训练样本读取方法及装置 |
CN110908796B (zh) * | 2019-11-04 | 2022-03-18 | 北京理工大学 | 一种Gaia***中的多作业合并与优化***及方法 |
CN111813527B (zh) * | 2020-07-15 | 2022-06-14 | 江苏方天电力技术有限公司 | 一种数据感知的任务调度方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737114A (zh) * | 2012-05-18 | 2012-10-17 | 北京大学 | 基于MapReduce的大图上距离连接查询方法 |
CN103279328A (zh) * | 2013-04-08 | 2013-09-04 | 河海大学 | 基于Haloop的BlogRank算法并行化处理的构建方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120304186A1 (en) * | 2011-05-26 | 2012-11-29 | International Business Machines Corporation | Scheduling Mapreduce Jobs in the Presence of Priority Classes |
-
2013
- 2013-11-25 CN CN201310600745.7A patent/CN103617087B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737114A (zh) * | 2012-05-18 | 2012-10-17 | 北京大学 | 基于MapReduce的大图上距离连接查询方法 |
CN103279328A (zh) * | 2013-04-08 | 2013-09-04 | 河海大学 | 基于Haloop的BlogRank算法并行化处理的构建方法 |
Non-Patent Citations (2)
Title |
---|
HPMR:Prefetching and Pre-shuffling in Shared MapReduce Computation Environment;Sangwon Seo等;《IEEE International Conference on Cluster Computing and Workshops,2009》;20091231;第1和4页 * |
基于MapReduce的迭代型分布式数据处理研究;冯新建;《中国优秀硕士学位论文全文数据库信息科技辑》;20131015(第10期);第I137-20页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103617087A (zh) | 2014-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103617087B (zh) | 一种适合迭代计算的MapReduce优化方法 | |
Kalia et al. | Analysis of hadoop MapReduce scheduling in heterogeneous environment | |
CN105117286B (zh) | MapReduce中任务的调度方法和流水化执行方法 | |
CN101359333B (zh) | 一种基于隐含狄利克雷分配模型的并行数据处理方法 | |
CN108469988A (zh) | 一种基于异构Hadoop集群的任务调度方法 | |
CN103595780A (zh) | 基于消重的云计算资源调度方法 | |
CN106547627A (zh) | 一种Spark MLlib数据处理加速的方法及*** | |
Liu et al. | Heterps: Distributed deep learning with reinforcement learning based scheduling in heterogeneous environments | |
Arfat et al. | Big data for smart infrastructure design: Opportunities and challenges | |
Huynh et al. | An efficient approach for mining sequential patterns using multiple threads on very large databases | |
Laccetti et al. | Performance enhancement of a dynamic K-means algorithm through a parallel adaptive strategy on multicore CPUs | |
Kim et al. | Load-balancing in distributed selective search | |
CN108170861B (zh) | 一种基于动态规划的分布式数据库***协同优化方法 | |
Escobar et al. | Parallel high-dimensional multi-objective feature selection for EEG classification with dynamic workload balancing on CPU–GPU architectures | |
Shi et al. | MapReduce short jobs optimization based on resource reuse | |
CN113255165A (zh) | 一种基于动态任务分配的实验方案并行推演*** | |
CN104778088B (zh) | 一种基于减少进程间通信开销的并行i/o优化方法与*** | |
CN101073069A (zh) | 用于企业软件***的高速缓存 | |
Shanker et al. | ACTIVE-a real time commit protocol | |
CN108509259A (zh) | 获取多方数据源的方法以及风控*** | |
US8027996B2 (en) | Commitment control for less than an entire record in an in-memory database in a parallel computer system | |
CN115688906A (zh) | 一种面向超参训练的数据自动编排加载方法和*** | |
Lee et al. | ARLS: A MapReduce-based output analysis tool for large-scale simulations | |
Xu et al. | EdgeMesh: A hybrid distributed training mechanism for heterogeneous edge devices | |
CN106033434A (zh) | 基于数据规模和流行程度的虚拟资产数据副本处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |