CN104915260B - 一种Hadoop集群管理任务的分发方法和系统 - Google Patents

一种Hadoop集群管理任务的分发方法和系统 Download PDF

Info

Publication number
CN104915260B
CN104915260B CN201510347803.9A CN201510347803A CN104915260B CN 104915260 B CN104915260 B CN 104915260B CN 201510347803 A CN201510347803 A CN 201510347803A CN 104915260 B CN104915260 B CN 104915260B
Authority
CN
China
Prior art keywords
stage
management
sub
management role
dag
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
Application number
CN201510347803.9A
Other languages
English (en)
Other versions
CN104915260A (zh
Inventor
彭毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Sohu New Media Information Technology Co Ltd
Original Assignee
Beijing Sohu New Media Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Sohu New Media Information Technology Co Ltd filed Critical Beijing Sohu New Media Information Technology Co Ltd
Priority to CN201510347803.9A priority Critical patent/CN104915260B/zh
Publication of CN104915260A publication Critical patent/CN104915260A/zh
Application granted granted Critical
Publication of CN104915260B publication Critical patent/CN104915260B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种Hadoop集群管理任务的分发方法及装置。所述方法首先根据Hadoop组件的依赖关系对管理任务进行阶段规划,然后依次处理每一阶段中的管理任务,将同一阶段内配往同一组件节点的管理任务规划为一个子阶段;然后当进入一个调度周期后,扫描当前待调度的所有子阶段,并对其进行排序。最后根据预设筛选条件按照排序后的子阶段从前到后的顺序依次判断当前子阶段是否适合在当前调度周期内进行任务分发。在该分发方法中,子阶段作为最小的调度单元,并且同一个子阶段内部以及同一父阶段内的子阶段之间能够并行执行。本发明能够实现在更细粒度上并行分发任务。而且,本发明提供的方法能够提高任务分发的吞吐量,进而提高Hadoop集群管理的效率。

Description

一种Hadoop集群管理任务的分发方法和系统
技术领域
本发明涉及计算机集群技术领域,尤其涉及一种Hadoop集群管理任务的分发方法和系统。
背景技术
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。Hadoop主要包括HDFS、MapReduce2、YARN、Hbase等核心服务,每个服务又包括多个服务组件,如HBase服务包括HBaseMaster、Region Server等组件。
Hadoop集群是指部署有Hadoop相关服务组件的一组计算机,这些计算机通过组件间的相互协作对外提供服务。
Hadoop集群包括HDFS、MapReduce2、YARN、Hbase等核心服务,每个服务又包括多个服务组件,如HBase服务包括HBaseMaster、Region Server等组件。这些组件离散分布于集群节点中,如此,就为多个组件的并发管理提供了可能,然而,由于Hadoop组件间存在一定的依赖关系,因此就要求针对部分组件的并发管理具有一定的时序安排。如何在保证组件依赖关系的基础上最大限度地并发管理集群中的组件,是Hadoop集群领域中的研究热点。
目前,Hadoop集群管理任务分发方法大多基于组件的依赖关系定义多个管理任务进行阶段规划,即<管理操作、阶段>二级定义,阶段在逻辑上保证组件依赖关系的有效性,同时也是最小的调度单元。其判别条件为:只要待筛选的阶段中存在某个任务其所派发的目的节点已有其它阶段中的任务,即放弃该阶段在本次调度周期内的调度。因此,在使用该判别条件筛选时,阶段间互斥率较高,导致每个调度周期可并发的阶段数量较少,进而导致任务并发吞吐不高。
发明内容
有鉴于此,本发明提供了一种Hadoop集群管理任务的分发方法和系统,以提高任务分发的吞吐量。
为了解决上述技术问题,本发明采用了如下技术方案:
一种Hadoop集群管理任务的分发方法,包括:
接收来自用户的管理操作命令,并验证所述管理操作命令的有效性;
当所述管理操作命令有效时,解析所述管理操作命令,以生成管理任务集合;所述管理任务集合至少包括一个管理任务;
根据预先定义的Hadoop组件的依赖关系对所述管理任务集合内的管理任务进行阶段规划;其中,在阶段规划中,将能够并行执行的管理任务规划到同一阶段,将执行有先后顺序的管理任务规划到不同阶段;
依次处理每一阶段中的管理任务,将同一阶段内配往同一目标组件节点的管理任务规划为一个子阶段,形成<管理操作、阶段、子阶段>的三级层级的规划数据;
当进入一个调度周期后,扫描当前待调度的子阶段,并依据<管理操作、阶段、子阶段>的层级对所有待调度的子阶段进行排序;
根据预设筛选条件按照排序后的子阶段从前到后的顺序依次判断当前子阶段是否适合在当前调度周期内进行任务分发;如果当前子阶段适合在当前调度周期内进行任务分发,并且该当前子阶段所属管理操作之前分发的管理任务没有失败,则将当前子阶段中的所有管理任务进行分发;
所述预设筛选条件为:当前子阶段的调度不会破坏其所属管理操作各阶段执行的有序性;当前子阶段中任务配往的目标组件节点在当前调度周期内没有任务安排。
可选地,如果当前子阶段适合在当前调度周期内进行任务分发,并且该子阶段所述管理操作之前分发的任务存在失败,则取消该管理操作的后续子阶段的任务分发,并标记失败。
可选地,所述根据预先定义的Hadoop组件的依赖关系对所述管理任务集合内的管理任务进行阶段规划,具体包括:
根据所述管理任务集合内的管理任务生成每个管理任务对应的初始DAG节点,所述DAG节点包括管理任务属性、入度属性和被依赖集属性;所述初始DAG节点的入度为0,被依赖集为空集;
根据预先定义的Hadoop组件的依赖关系赋予所述管理任务集合内的每一管理任务对应的被依赖集和入度属性,生成有向无环图节点即DAG节点,以得到DAG图;所述入度属性表示管理任务所依赖的其它管理任务的数量,所述被依赖集内含有直接依赖当前管理任务的那些管理任务;
将DAG图中入度为0的DAG节点对应的管理任务划入第一阶段;删除属于第一阶段的DAG节点,并修改DAG图中的剩余DAG节点的入度属性,以完成DAG图的更新;将更新后的DAG图中入度为0的DAG节点对应的管理任务划入第二阶段;依次类推直至所有DAG节点对应的管理任务均规划到相应的阶段。
可选地,所述预先定义的Hadoop组件的依赖关系为二维Hadoop组件的依赖关系,所述二维Hadoop组件的依赖关系不仅定义了组件之间的依赖关系,还定义了组件在操作类型上的依赖关系。
可选地,任务分发后,还包括:
获取来自组件节点的心跳信息;根据所述心跳信息更新规划数据;
其中,所述心跳信息包括当前组件节点、组件节点上服务以及服务组件的状态信息,所述心跳信息还包括该当前组件节点的任务执行情况。
一种Hadoop集群管理任务的分发装置,包括:
接收验证单元,用于接收来自用户的管理操作命令,并验证所述管理操作命令的有效性;
命令解析单元,用于当所述管理操作命令有效时,解析所述管理操作命令,以生成管理任务集合;所述管理任务集合至少包括一个管理任务;
阶段规划单元,用于根据预先定义的Hadoop组件的依赖关系对所述管理任务集合内的管理任务进行阶段规划;其中,在阶段规划中,将能够并行执行的管理任务规划到同一阶段,将执行有先后顺序的管理任务规划到不同阶段;
子阶段规划单元,用于依次处理每一阶段中的管理任务,将同一阶段内配往同一目标组件节点的管理任务规划为一个子阶段,形成<管理操作、阶段、子阶段>的三级层级的规划数据;
子阶段排序单元,用于当进入一个调度周期后,扫描当前待调度的子阶段,并依据<管理操作、阶段、子阶段>的层级对所有待调度的子阶段进行排序;
判断单元,用于根据预设筛选条件按照排序后的子阶段从前到后的顺序依次判断当前子阶段是否适合在当前调度周期内进行任务分发;所述预设筛选条件为:当前子阶段的调度不会破坏其所属管理操作各阶段执行的有序性;当前子阶段中任务配往的目标组件节点在当前调度周期内没有任务安排;
任务分发单元,用于当当前子阶段适合在当前调度周期内进行任务分发,并且该当前子阶段所属管理操作之前分发的管理任务没有失败时,将当前子阶段中的所有管理任务进行分发。
可选地,所述装置还包括:
取消任务分发和标记失败单元,用于当当前子阶段适合在当前调度周期内进行任务分发,并且该子阶段所述管理操作之前分发的任务存在失败时,取消该管理操作的后续子阶段的任务分发,并标记失败。
可选地,所述阶段规划单元包括:
初始DAG节点生成子单元,用于根据所述管理任务集合内的管理任务生成每个管理任务对应的初始DAG节点,所述DAG节点包括管理任务属性、入度属性和被依赖集属性;所述初始DAG节点的入度为0,被依赖集为空集;
DAG节点生成子单元,用于根据预先定义的Hadoop组件的依赖关系赋予所述管理任务集合内的每一管理任务对应的被依赖集和入度属性,生成有向无环图节点即DAG节点,以得到DAG图;所述入度属性表示管理任务所依赖的其它管理任务的数量,所述被依赖集内含有直接依赖当前管理任务的那些管理任务;
阶段规划子单元,用于将DAG图中入度为0的DAG节点对应的管理任务划入第一阶段;删除属于第一阶段的DAG节点,并修改DAG图中的剩余DAG节点的入度属性,以完成DAG图的更新;将更新后的DAG图中入度为0的DAG节点对应的管理任务划入第二阶段;依次类推直至所有DAG节点对应的管理任务均规划到相应的阶段。
可选地,所述预先定义的Hadoop组件的依赖关系为二维Hadoop组件的依赖关系,所述二维Hadoop组件的依赖关系不仅定义了组件之间的依赖关系,还定义了组件在操作类型上的依赖关系。
可选地,所述装置还包括:
获取单元,用于在任务分发后或者取消任务分发后,获取来自组件节点的心跳信息;根据所述心跳信息更新规划数据;
其中,所述心跳信息包括当前组件节点、组件节点上服务以及服务组件的状态信息,所述心跳信息还包括该当前组件节点的任务执行情况。
相较于现有技术,本发明具有以下有益效果:
本发明提供的Hadoop集群管理任务的分发方法,在阶段规划中,将同一阶段内配往同一目标组件节点的管理任务规划为同一个子阶段。因此,在该分发方法中,形成了<管理操作、阶段、子阶段>的三级层次结构,而且在该分发方法中,子阶段作为最小的调度单元,并且同一个子阶段内部以及同一父阶段内的子阶段之间能够并行执行。相较于现有技术,本发明能够实现在更细粒度上并行分发任务。而且,本发明在任务分发时采用的预设筛选条件允许属于不同管理操作命令且配发目的为不同节点的多个子阶段并行分发,因此,本发明提供的方法能够提高任务分发的吞吐量,进而提高Hadoop集群管理的效率。
附图说明
为了清楚地理解本发明的技术方案,下面将在描述本发明的具体实施方式时用到的附图做一简要说明。显而易见地,这些附图仅是本发明的部分实施例,本领域普通技术人员在未付出创造性劳动的前提下,还可以获得其它附图。
图1是本发明实施例提供的Hadoop集群管理任务的分发方法的流程示意图;
图2是本发明实施例提供的阶段规划方法的流程示意图;
图3是本发明实施例提供的原始有向无环图的示意图;
图4是本发明实施例提供的更新后的有向无环图的示意图;
图5是本发明实施例提供的二维Hadoop组件依赖关系结构示意图;
图6是本发明实施例提供的Hadoop集群管理任务的分发装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和技术效果更加清楚、完整,下面结合附图对本发明的具体实施方式进行详细说明。
在介绍本发明实施例之前,首先介绍描述本发明实施例时需要用到的技术术语。
由于在本发明实施例中主要涉及Hadoop集群,所以本发明提及的集群管理即为Hadoop集群管理,所谓Hadoop集群管理是实现Hadoop集群中服务以及组件的安装、启动、停止、检查以及更新等管理操作。
集群管理任务是为完成特定的集群管理操作,下发到相关集群节点即计算机的一条命令。例如,执行启动HBase服务管理操作时,启动某一节点的HBase Masrer组件即为一个管理任务。
任务分发是指将任务在特定的时间发送给特定的组件节点。一个集群管理操作包括多个集群管理任务。如启动HBase服务的集群管理操作,就包括启动HBase Master、启动Region Server等任务。
图1是本发明实施例提供的Hadoop集群管理任务的分发方法的流程示意图。如图1所示,该方法包括以下步骤:
S101、接收来自用户的管理操作命令:
需要说明的是,用户输入的管理操作命令分为基本管理操作命令和非基本管理操作命令,其中,非基本管理操作由多个基本管理操作构成。其中,非基本管理操作例如为启动所有服务,基本管理操作例如为(Start,HDFS,DataNode,[Host1,Host2]),该基本管理操作表示启动Host1和Host2节点上HDFS服务的DataNode组件。
S102、验证所述管理操作命令的有效性:
采用本领域惯用的技术手段通过读取存储在数据库中的服务、服务组件以及节点等的状态信息来验证所述管理操作命令的有效性。
S103、当所述管理操作命令有效时,解析所述管理操作命令,以生成管理任务集合,所述管理任务集合内至少包括一个管理任务:
具体地说,当所述管理操作命令有效时,解析所述管理操作命令,以生成管理任务集合。在该管理任务集合内包括所述管理操作命令对应的管理任务。由于一个管理操作命令对应至少一个管理任务,则生成的管理任务集合内至少包括一个管理任务。
S104、根据预先定义的Hadoop组件的依赖关系对所述管理任务集合内的管理任务进行阶段规划;其中,在阶段规划中,将能够并行执行的管理任务规划到同一阶段,将执行有先后顺序的管理任务规划到不同阶段:
需要说明的是,本发明实施例定义了Hadoop组件的依赖关系。该Hadoop组件的依赖关系能够表示不同管理任务之间的依赖关系。因此,根据该预先定义的Hadoop组件的依赖关系对所述管理任务集合内的管理任务进行阶段规划。其中,在阶段规划中,将能够并行执行的管理任务规划到同一阶段,将执行有先后顺序的管理任务规划到不同阶段。另外,由于阶段是根据Hadoop组件的依赖关系进行规划的,所以阶段在逻辑上能够保证管理任务之间的依赖关系的有效性。
需要说明的是,在本发明实施例中,Hadoop组件的依赖关系是根据组件的直接依赖关系拓展传递依赖形成的。为了较为清楚地理解直接依赖关系和传递依赖关系,下面举例说明。例如,管理任务1依赖管理任务2,管理任务2依赖管理任务3,则管理任务1与管理任务2之间是直接依赖关系,管理任务1与管理任务3之间是传递依赖关系。
作为本发明的一个具体实施例,步骤S104可以通过有向无环图即DAG图的方式来完成。其具体实现过程如图2所示。其包括以下步骤:
S201、根据预先定义的Hadoop组件依赖关系赋予所述管理任务集合内的每一管理任务对应的被依赖集和入度属性,生成有向无环图节点即DAG节点,以得到DAG图;所述入度属性表示当前管理任务所依赖的其它管理任务的数量,所述被依赖集内含有直接依赖当前管理任务的那些管理任务:
首先举例说明DAG节点中的入度属性和被依赖集属性。设定DAG节点中的管理任务为管理任务1,被依赖集中包括管理任务3和管理任务4,入度为1,则DAG节点表示的具体含义如下:管理任务1为当前管理任务,管理任务1依赖1个其它管理任务,直接依赖管理任务1的管理任务包括管理任务3和管理任务4。
步骤S201可以通过以下方式实现:首先,根据管理任务集合内的管理任务生成每个管理任务对应的初始DAG节点,进而生成初始DAG节点集合,每一个所述DAG节点包括管理任务属性、入度属性和被依赖集属性;所述初始DAG节点的入度为0,被依赖集为空集,其中,如上所述,管理任务的数据结构为(节点、组件、操作类型),因此,根据管理任务可以获知组件名称。
然后,使用两层循环遍历所有初始DAG节点,当两层循环获得的两个初始DAG节点(为了方便描述,将这两个初始DAG节点分别定义为第一DAG初始节点和第二DAG初始节点)对应的组件名称不相同时,依据Hadoop组件的依赖关系确定第一DAG初始节点和第二DAG初始节点的依赖关系,设定第二DAG初始节点依赖第一DAG节点,根据该两DAG初始节点的依赖关系,在被依赖的第一DAG初始节点的被依赖集中添加第二DAG节点对应的管理任务。并将第二DAG初始节点的入度加1。
举例说明,上述步骤S201的实现过程:
设定初始DAG节点集合如下表示:{(管理任务1,空,0)、(管理任务2,空,0)、(管理任务3,空,0)、(管理任务4,空,0)、(管理任务5,空,0)、(管理任务6,空,0)}。首先将(管理任务1,空,0)和(管理任务2,空,0)比较,判断是否存在依赖关系,发现没有,则继续将(管理任务1,空,0)和(管理任务3,空,0)进行判断,发现管理任务3依赖管理任务1,就将管理任务3添加到管理任务1的被依赖集中,并给管理任务3的入度加1,这样管理任务1的被依赖集就不再为空,而是包含了管理任务3。依次类推处理(管理任务1,[管理任务3的DAG节点],0)和(管理任务4,空,0),(管理任务1,[管理任务3的DAG节点],0)和(管理任务5,空,0),(管理任务1,[管理任务3的DAG节点],0)和(管理任务6,空,0)、(管理任务2,空,0)和(管理任务3,空,1)、(管理任务2,空,0)和(管理任务4,空,0)等等。将具有直接依赖关系的两个DAG节点之间均分别用线连接起来,以表示两者之间的依赖关系,构成的网络图即为原始DAG图。上述例子得到的原始有向无环图如图3所示。
S202、将原始DAG图中入度为0的DAG节点对应的管理任务划入第一阶段:
采用拓扑算法将原始DAG图中入度为0的DAG节点对应的管理任务划入第一阶段。针对图3来说,将管理任务1、管理任务2以及管理任务6划入第一阶段。
S203、删除管理任务属于第一阶段的DAG节点,并修改原始DAG图中的剩余DAG节点的入度属性,以完成DAG图的更新;将更新后的DAG图中入度为0的DAG节点对应的管理任务划入第二阶段;
针对图3来说,删除DAG节点I、II以及VI,并修改DAG节点III、IV和V的入度属性,其修改后的入度属性依次分别为0、0和2。更新后的DAG图如图4所示。将图4中,入度为0的DAG节点对应的管理任务3和管理任务4划入第二阶段。
S204、删除管理任务属于第二阶段的DAG节点,并修改有向无环图中的剩余DAG节点的入度属性,以再次完成DAG图的更新;将再次更新后的DAG图中入度为0的DAG节点对应的管理任务划入第三阶段:
针对图4来说,删除DAG节点III和IV,更新后的DAG图中仅包括DAG节点V,所以,DAG节点V的入度属性更新为0。将DAG节点V对应的管理任务5划入第三阶段。
通过步骤S201至步骤S204能够将管理任务集合内的所有的管理任务规划到相应的阶段。
需要说明的是,上述步骤S201至步骤S204所述的阶段规划方法流程是以图3所示的DAG图为例说明的。然而,实际上,一个管理操作命令对应的管理任务可以更多或更少,规划的阶段也可能更多或更少。因此,本发明提供的阶段规划方法不限于图2所示的步骤。作为本发明实施例的扩展,实际上,不管管理任务的数量以及可能规划的阶段的数量有多少,按照规划第一阶段、第二阶段、第三阶段的方法依次类推,直到将所有管理任务均规划到相应的阶段中。
S105、依次处理每一阶段中的管理任务,将同一阶段内配往同一目标组件节点的管理任务规划为一个子阶段,最终形成<管理操作、阶段、子阶段>的三级层级的规划数据:
需要结合组件在节点上的分布情况在阶段内进行任务优化,即将同一阶段内配往同一目标组件节点的管理任务规划为同一个子阶段。由于阶段内部的管理任务可以并行执行,所以,一个子阶段内部以及同一父阶段内的子阶段之间也能够并行执行。
在本发明实施例中,定义子阶段的作用在于优化管理任务的分发,能够在子阶段级别上进行任务分发,从而使得在更细粒度上实现任务的并行分发。
另外,本发明实施例所述的Hadoop组件依赖关系可以为本领域传统的组件依赖关系,也就是说,在Hadoop组件依赖关系中仅定义组件对象级别之间的依赖关系,该依赖关系是一维的,即仅包括组件维。然而这种一维的依赖关系导致针对不同的管理操作所使用的判断依据单一,当出现因操作类型不同导致组件依赖有所不同的情形时,该传统的依赖关系只能定义组件可能涉及的所有管理操作类型所依赖集合的并集。这种对管理类型的依赖关系是模糊的,笼统的,使得集群管理不灵活。
为了提高集群管理的灵活性,本发明实施例创新定义了二维Hadoop组件依赖关系。该二维Hadoop组件依赖关系不仅定义了组件之间的依赖关系,还定义了组件在操作类型上的依赖关系。其中,操作类型包括安装、启动、停止、检查以及更新五种类型。所以,组件在操作类型上的依赖关系具体包括Hadoop服务组件在安装、启动、停止、检查以及更新五种操作类型上的依赖关系。
这种二维的Hadoop组件的依赖关系的结构示意图如图5所示,在该依赖关系中包括组件维项、管理类型维项以及直接依赖集。其中,组件维囊括了Hadoop集群中的所有组件,管理类型维包括安装、启动、停止、检查以及更新五种类型。
通过本发明创新定义的二维的Hadoop组件的依赖关系,可以采用(组件、管理类型、直接依赖组集)多元组的结构形式表示组件在某种管理类型上所直接依赖的(组件、管理类型)二元组集合。所述直接依赖组集是某一二元组所直接依赖的其它二元组集合,其不包括传递依赖的二元组。
作为示例,表1示例出DataNode Stop的二维依赖关系。
表1
需要说明的是,在本发明实施例中,定义基本管理操作的数据结构为(操作类型、服务、组件、节点集),管理任务的数据结构为(节点、组件、操作类型)。
需要说明的是,经过阶段规划后形成的规划数据存储到数据库中,以在一个调度周期内进行调度和扫描。
S106、当进入一个调度周期后,扫描当前待调度的子阶段,并依据<管理操作、阶段、子阶段>的层级对所有待调度的子阶段进行排序;
每隔第一时间间隔如10s进入一个调度周期,当进入一个调度周期后,扫描当前所有待调度的子阶段,并按照<管理操作、阶段、子阶段>的层级对所有待调度的子阶段进行排序。
按照<管理操作、阶段、子阶段>的层级对所有待调度的子阶段进行排序的目的是为了使得先发起的管理操作优先处理,同一管理操作内的不同阶段顺序执行,同一阶段内的不同子阶段按照组件节点的顺序先后有序。
S107、获取排序后排在最靠前的子阶段,将该子阶段作为当前子阶段:
S108、根据预设筛选条件判断当前子阶段是否适合在当前调度周期内进行任务分发:如果是,执行步骤S109,如果否,执行步骤S110:
所述预设筛选条件为:当前子阶段的调度不会破坏其所属管理操作各阶段执行的有序性;当前子阶段中任务配往的目标组件节点在当前调度周期内没有任务安排。上述所述的预设筛选条件拒绝属于同一管理操作的不同阶段内的子阶段被同时或乱序执行,因此,根据该预设筛选条件能够保证管理任务的依赖关系;同时允许数据不同管理操作且配发节点为不同组件节点的多个子阶段并行分发,因此,该预设筛选条件为提高任务分发的吞吐量提供了可能。
若当前子阶段满足预设筛选条件,则确认该当前子阶段适合在当前调度周期内进行任务分发,此时执行步骤S109。若当前子阶段不满足预设筛选条件,则确认该当前子阶段不适合在当前调度周期内进行任务分发,则执行步骤S110。
S109、判断当前子阶段所属管理操作之前分发的管理任务是否有执行失败的情形,如果否,执行步骤S111。如果是,执行步骤S112。
S110、按照排序后子阶段从前到后的顺序获取所述当前子阶段的下一子阶段,将该下一子阶段作为当前子阶段,返回执行步骤S108。
S111、将当前子阶段中的所有管理任务进行分发,并返回执行步骤S110:
S112、取消该管理操作的所有后续子阶段调度,并标记失败,然后返回执行步骤S110:
在步骤S111之后还可以包括以下步骤:
S113、获取来自组件节点的心跳信息,根据所述心跳信息更新规划数据:
每隔第二时间间隔获取来自组件节点的心跳信息,根据所述心跳信息更新数据库内的规划数据。需要说明的是,第二时间间隔的时长大于第一时间间隔的时长。
所述心跳信息包括当前组件节点、组件节点上服务以及服务组件的状态信息,所述心跳信息还包括该当前组件节点的任务执行情况。
以上为本发明实施例提供的Hadoop集群管理任务的分发方法的具体实施方式。在该分发方法中,将子阶段作为最小调度单元,而子阶段是在阶段的层级上进一步下分的层级,所以,本发明提供的分发方法能够在更细粒度上实现任务的并行分发。而且,子阶段内部以及同一父阶段的子阶段间没有顺序定义,也就是说,子阶段内部以及同一父阶段内的子阶段之间的管理任务能够并行执行,而且本发明在任务分发时采用的预设筛选条件允许属于不同管理操作命令且配发目的为不同节点的多个子阶段并行分发,因此,本发明提供的方法能够提高任务分发的吞吐量,进而提高Hadoop集群管理的效率。
另外,本发明定义了二维的Hadoop组件的依赖关系,不仅对组件的依赖关系作了明确定义,还对管理类型的依赖关系做了明确定义,所以,基于该二维的Hadoop组件的依赖关系能够使Hadoop集群管理更加灵活。
基于上述实施例提供的Hadoop集群管理任务的分发方法,本发明还提供了一种Hadoop集群管理任务的分发装置。
图6是本发明实施例提供的Hadoop集群管理任务的分发装置的结构示意图。
作为本发明实施例提供的Hadoop集群管理任务的分发装置的第一种结构,如图6所示,该装置包括以下单元:
接收验证单元601,用于接收来自用户的管理操作命令,并验证所述管理操作命令的有效性;
命令解析单元602,用于当所述管理操作命令有效时,解析所述管理操作命令,以生成管理任务集合;所述管理任务集合至少包括一个管理任务;
阶段规划单元603,用于根据预先定义的Hadoop组件的依赖关系对所述管理任务集合内的管理任务进行阶段规划;其中,在阶段规划中,将能够并行执行的管理任务规划到同一阶段,将执行有先后顺序的管理任务规划到不同阶段;
子阶段规划单元604,用于依次处理每一阶段中的管理任务,将同一阶段内配往同一目标组件节点的管理任务规划为一个子阶段,形成<管理操作、阶段、子阶段>的三级层级的规划数据;
子阶段排序单元605,用于当进入一个调度周期后,扫描当前待调度的子阶段,并依据<管理操作、阶段、子阶段>的层级对所有待调度的子阶段进行排序;
判断单元606,用于根据预设筛选条件按照排序后的子阶段从前到后的顺序依次判断当前子阶段是否适合在当前调度周期内进行任务分发;所述预设筛选条件为:当前子阶段的调度不会破坏其所属管理操作各阶段执行的有序性;当前子阶段中任务配往的目标组件节点在当前调度周期内没有任务安排;
任务分发单元607,用于当当前子阶段适合在当前调度周期内进行任务分发,并且该当前子阶段所属管理操作之前分发的管理任务没有失败时,将当前子阶段中的所有管理任务进行分发。
通过本发明实施例提供的Hadoop集群管理任务的分发装置的第一种结构,更够在更细粒度上实现任务的并行分发。而且本发明在任务分发时采用的预设筛选条件允许属于不同管理操作命令且配发目的为不同节点的多个子阶段并行分发,因此,本发明提供的装置能够提高任务分发的吞吐量,进而提高Hadoop集群管理的效率。
进一步地,在分发装置的第一种结构的基础上,对分发装置进行改进,得到分发装置的第二种结构。其第二种结构除了包括第一种结构的各个单元以外,还可以包括:
取消任务分发和标记失败单元608,用于当当前子阶段适合在当前调度周期内进行任务分发,并且该子阶段所述管理操作之前分发的任务存在失败时,取消该管理操作的后续子阶段的任务分发,并标记失败。
进一步地,在第一种结构或第二种结构的基础上,所述装置还可以进一步包括:获取单元609,从而形成分发装置的第三种结构。在第三种结构中,获取单元609用于在任务分发后或者取消任务分发后,获取来自组件节点的心跳信息;根据所述心跳信息更新规划数据;
其中,所述心跳信息包括当前组件节点、组件节点上服务以及服务组件的状态信息,所述心跳信息还包括该当前组件节点的任务执行情况。
作为本发明的一个具体实施例,所述阶段规划单元603包括:
初始DAG节点生成子单元6031,用于根据所述管理任务集合内的管理任务生成每个管理任务对应的初始DAG节点,所述DAG节点包括管理任务属性、入度属性和被依赖集属性;所述初始DAG节点的入度为0,被依赖集为空集;
DAG节点生成子单元6032,用于根据预先定义的Hadoop组件的依赖关系赋予所述管理任务集合内的每一管理任务对应的被依赖集和入度属性,生成有向无环图节点即DAG节点,以得到DAG图;所述入度属性表示管理任务所依赖的其它管理任务的数量,所述被依赖集内含有直接依赖当前管理任务的那些管理任务;
阶段规划子单元6033,用于将DAG图中入度为0的DAG节点对应的管理任务划入第一阶段;删除属于第一阶段的DAG节点,并修改DAG图中的剩余DAG节点的入度属性,以完成DAG图的更新;将更新后的DAG图中入度为0的DAG节点对应的管理任务划入第二阶段;依次类推直至所有DAG节点对应的管理任务均规划到相应的阶段。
进一步地,为了提高管理的灵活性,所述预先定义的Hadoop组件的依赖关系为二维Hadoop组件的依赖关系,所述二维Hadoop组件的依赖关系不仅定义了组件之间的依赖关系,还定义了组件在操作类型上的依赖关系。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种Hadoop集群管理任务的分发方法,其特征在于,包括:
接收来自用户的管理操作命令,并验证所述管理操作命令的有效性;
当所述管理操作命令有效时,解析所述管理操作命令,以生成管理任务集合;所述管理任务集合至少包括一个管理任务;
根据预先定义的Hadoop组件的依赖关系对所述管理任务集合内的管理任务进行阶段规划;其中,在阶段规划中,将能够并行执行的管理任务规划到同一阶段,将执行有先后顺序的管理任务规划到不同阶段;
依次处理每一阶段中的管理任务,将同一阶段内配往同一目标组件节点的管理任务规划为一个子阶段,形成<管理操作、阶段、子阶段>的三级层级的规划数据;
当进入一个调度周期后,扫描当前待调度的子阶段,并依据<管理操作、阶段、子阶段>的层级对所有待调度的子阶段进行排序;
根据预设筛选条件按照排序后的子阶段从前到后的顺序依次判断当前子阶段是否适合在当前调度周期内进行任务分发;如果当前子阶段适合在当前调度周期内进行任务分发,并且该当前子阶段所属管理操作之前分发的管理任务没有失败,则将当前子阶段中的所有管理任务进行分发;
所述预设筛选条件为:当前子阶段的调度不会破坏其所属管理操作各阶段执行的有序性;当前子阶段中任务配往的目标组件节点在当前调度周期内没有任务安排。
2.根据权利要求1所述的方法,其特征在于,如果当前子阶段适合在当前调度周期内进行任务分发,并且该子阶段所述管理操作之前分发的任务存在失败,则取消该管理操作的后续子阶段的任务分发,并标记失败。
3.根据权利要求1或2所述的方法,其特征在于,所述根据预先定义的Hadoop组件的依赖关系对所述管理任务集合内的管理任务进行阶段规划,具体包括:
根据所述管理任务集合内的管理任务生成每个管理任务对应的初始DAG节点,所述DAG节点包括管理任务属性、入度属性和被依赖集属性;所述初始DAG节点的入度为0,被依赖集为空集;
根据预先定义的Hadoop组件的依赖关系赋予所述管理任务集合内的每一管理任务对应的被依赖集和入度属性,生成有向无环图节点即DAG节点,以得到DAG图;所述入度属性表示管理任务所依赖的其它管理任务的数量,所述被依赖集内含有直接依赖当前管理任务的那些管理任务;
将DAG图中入度为0的DAG节点对应的管理任务划入第一阶段;删除属于第一阶段的DAG节点,并修改DAG图中的剩余DAG节点的入度属性,以完成DAG图的更新;将更新后的DAG图中入度为0的DAG节点对应的管理任务划入第二阶段;依次类推直至所有DAG节点对应的管理任务均规划到相应的阶段。
4.根据权利要求1或2所述的方法,其特征在于,所述预先定义的Hadoop组件的依赖关系为二维Hadoop组件的依赖关系,所述二维Hadoop组件的依赖关系不仅定义了组件之间的依赖关系,还定义了组件在操作类型上的依赖关系。
5.根据权利要求1或2所述的方法,其特征在于,任务分发后,还包括:
获取来自组件节点的心跳信息;根据所述心跳信息更新规划数据;
其中,所述心跳信息包括当前组件节点、组件节点上服务以及服务组件的状态信息,所述心跳信息还包括该当前组件节点的任务执行情况。
6.一种Hadoop集群管理任务的分发装置,其特征在于,包括:
接收验证单元,用于接收来自用户的管理操作命令,并验证所述管理操作命令的有效性;
命令解析单元,用于当所述管理操作命令有效时,解析所述管理操作命令,以生成管理任务集合;所述管理任务集合至少包括一个管理任务;
阶段规划单元,用于根据预先定义的Hadoop组件的依赖关系对所述管理任务集合内的管理任务进行阶段规划;其中,在阶段规划中,将能够并行执行的管理任务规划到同一阶段,将执行有先后顺序的管理任务规划到不同阶段;
子阶段规划单元,用于依次处理每一阶段中的管理任务,将同一阶段内配往同一目标组件节点的管理任务规划为一个子阶段,形成<管理操作、阶段、子阶段>的三级层级的规划数据;
子阶段排序单元,用于当进入一个调度周期后,扫描当前待调度的子阶段,并依据<管理操作、阶段、子阶段>的层级对所有待调度的子阶段进行排序;
判断单元,用于根据预设筛选条件按照排序后的子阶段从前到后的顺序依次判断当前子阶段是否适合在当前调度周期内进行任务分发;所述预设筛选条件为:当前子阶段的调度不会破坏其所属管理操作各阶段执行的有序性;当前子阶段中任务配往的目标组件节点在当前调度周期内没有任务安排;
任务分发单元,用于当当前子阶段适合在当前调度周期内进行任务分发,并且该当前子阶段所属管理操作之前分发的管理任务没有失败时,将当前子阶段中的所有管理任务进行分发。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
取消任务分发和标记失败单元,用于当当前子阶段适合在当前调度周期内进行任务分发,并且该子阶段所述管理操作之前分发的任务存在失败时,取消该管理操作的后续子阶段的任务分发,并标记失败。
8.根据权利要求6或7所述的装置,其特征在于,所述阶段规划单元包括:
初始DAG节点生成子单元,用于根据所述管理任务集合内的管理任务生成每个管理任务对应的初始DAG节点,所述DAG节点包括管理任务属性、入度属性和被依赖集属性;所述初始DAG节点的入度为0,被依赖集为空集;
DAG节点生成子单元,用于根据预先定义的Hadoop组件的依赖关系赋予所述管理任务集合内的每一管理任务对应的被依赖集和入度属性,生成有向无环图节点即DAG节点,以得到DAG图;所述入度属性表示管理任务所依赖的其它管理任务的数量,所述被依赖集内含有直接依赖当前管理任务的那些管理任务;
阶段规划子单元,用于将DAG图中入度为0的DAG节点对应的管理任务划入第一阶段;删除属于第一阶段的DAG节点,并修改DAG图中的剩余DAG节点的入度属性,以完成DAG图的更新;将更新后的DAG图中入度为0的DAG节点对应的管理任务划入第二阶段;依次类推直至所有DAG节点对应的管理任务均规划到相应的阶段。
9.根据权利要求6或7所述的装置,其特征在于,所述预先定义的Hadoop组件的依赖关系为二维Hadoop组件的依赖关系,所述二维Hadoop组件的依赖关系不仅定义了组件之间的依赖关系,还定义了组件在操作类型上的依赖关系。
10.根据权利要求6或7所述的装置,其特征在于,所述装置还包括:
获取单元,用于在任务分发后或者取消任务分发后,获取来自组件节点的心跳信息;根据所述心跳信息更新规划数据;
其中,所述心跳信息包括当前组件节点、组件节点上服务以及服务组件的状态信息,所述心跳信息还包括该当前组件节点的任务执行情况。
CN201510347803.9A 2015-06-19 2015-06-19 一种Hadoop集群管理任务的分发方法和系统 Active CN104915260B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510347803.9A CN104915260B (zh) 2015-06-19 2015-06-19 一种Hadoop集群管理任务的分发方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510347803.9A CN104915260B (zh) 2015-06-19 2015-06-19 一种Hadoop集群管理任务的分发方法和系统

Publications (2)

Publication Number Publication Date
CN104915260A CN104915260A (zh) 2015-09-16
CN104915260B true CN104915260B (zh) 2018-05-25

Family

ID=54084341

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510347803.9A Active CN104915260B (zh) 2015-06-19 2015-06-19 一种Hadoop集群管理任务的分发方法和系统

Country Status (1)

Country Link
CN (1) CN104915260B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105404553A (zh) * 2015-12-01 2016-03-16 安徽瑞信软件有限公司 采集装置的任务分配方法
CN107015853B (zh) * 2016-10-10 2021-03-23 创新先进技术有限公司 多阶段任务的实现方法和装置
CN106648859A (zh) * 2016-12-01 2017-05-10 北京奇虎科技有限公司 一种任务调度方法和装置
CN107370808B (zh) * 2017-07-13 2020-06-12 盐城工学院 一种用于对大数据任务进行分布式处理的方法
CN109697070B (zh) * 2017-10-23 2022-02-18 中移(苏州)软件技术有限公司 一种基于Ambari的集群管理方法、装置和介质
CN108280123B (zh) * 2017-12-11 2021-12-21 西安烽火软件科技有限公司 一种HBase的列聚合方法
CN108628675A (zh) * 2018-05-14 2018-10-09 五八有限公司 一种数据处理方法、装置、设备及计算机可读存储介质
CN108763482B (zh) * 2018-05-25 2022-05-31 联想(北京)有限公司 用于数据分析流程调度的方法、装置和服务器集群
CN109871270B (zh) * 2019-01-22 2021-04-02 深圳大学 调度方案生成方法及装置
CN110096345B (zh) * 2019-03-16 2024-04-12 平安科技(深圳)有限公司 智能任务调度方法、装置、设备及存储介质
CN112256444B (zh) * 2019-07-22 2023-08-01 腾讯科技(深圳)有限公司 基于dag的业务处理方法、装置、服务器及存储介质
CN113296902A (zh) * 2020-06-28 2021-08-24 阿里巴巴集团控股有限公司 任务编排方法、设备、装置及系统、计算机可读存储介质
CN111782341B (zh) * 2020-06-30 2024-04-05 北京百度网讯科技有限公司 用于管理集群的方法和装置
CN111782147B (zh) * 2020-06-30 2024-07-26 北京百度网讯科技有限公司 用于集群扩缩容的方法和装置
CN112269648B (zh) * 2020-11-13 2024-05-31 北京轩宇信息技术有限公司 一种多阶段程序分析的并行任务分配方法及装置
CN112801546A (zh) * 2021-03-18 2021-05-14 中国工商银行股份有限公司 一种任务调度方法、装置及存储介质
CN113238838B (zh) * 2021-04-22 2023-01-24 中国银联股份有限公司 一种任务调度方法、装置及计算机可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7921416B2 (en) * 2006-10-20 2011-04-05 Yahoo! Inc. Formal language and translator for parallel processing of data
US8484649B2 (en) * 2011-01-05 2013-07-09 International Business Machines Corporation Amortizing costs of shared scans
CN103440167A (zh) * 2013-09-04 2013-12-11 福州大学 Hadoop多作业环境下自学习反馈的任务调度方法
CN103605576A (zh) * 2013-11-25 2014-02-26 华中科技大学 一种基于多线程的MapReduce执行系统
CN104461502A (zh) * 2014-11-03 2015-03-25 广州汇讯营销咨询有限公司 基于Hadoop的任务管理方法和系统
CN104503844A (zh) * 2014-12-29 2015-04-08 中国科学院深圳先进技术研究院 一种基于多阶段特征的MapReduce作业细粒度分类方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9063790B2 (en) * 2011-06-13 2015-06-23 Accenture Global Services Limited System and method for performing distributed parallel processing tasks in a spot market

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7921416B2 (en) * 2006-10-20 2011-04-05 Yahoo! Inc. Formal language and translator for parallel processing of data
US8484649B2 (en) * 2011-01-05 2013-07-09 International Business Machines Corporation Amortizing costs of shared scans
CN103440167A (zh) * 2013-09-04 2013-12-11 福州大学 Hadoop多作业环境下自学习反馈的任务调度方法
CN103605576A (zh) * 2013-11-25 2014-02-26 华中科技大学 一种基于多线程的MapReduce执行系统
CN104461502A (zh) * 2014-11-03 2015-03-25 广州汇讯营销咨询有限公司 基于Hadoop的任务管理方法和系统
CN104503844A (zh) * 2014-12-29 2015-04-08 中国科学院深圳先进技术研究院 一种基于多阶段特征的MapReduce作业细粒度分类方法

Also Published As

Publication number Publication date
CN104915260A (zh) 2015-09-16

Similar Documents

Publication Publication Date Title
CN104915260B (zh) 一种Hadoop集群管理任务的分发方法和系统
CN110018893A (zh) 一种基于数据处理的任务调度方法及相关设备
US8615768B2 (en) Dependency-ordered resource synchronization across multiple environments using change list created based on dependency-ordered graphs of the multiple environments
CN107015856A (zh) 云环境下科学工作流中的任务调度方案生成方法及装置
US20020091559A1 (en) Work flow management method and work flow management system of controlling a work flow
CN105719126B (zh) 一种基于生命周期模型的互联网大数据任务调度的系统及方法
JP5550654B2 (ja) データベースにおいて大量の更新をリアルタイムで統合する方法
US20080215409A1 (en) Iterative resource scheduling
JP5872677B2 (ja) 生産計画立案決定方法、生産計画立案装置およびプログラム
CN107239468B (zh) 任务节点管理方法及装置
JP2002505987A (ja) コンピュータ化されたサプライチェーン計画の方法
CN103645909A (zh) 定时任务的处理方法及装置
Gabrel et al. Optimal and automatic transactional web service composition with dependency graph and 0-1 linear programming
CN110727687A (zh) 一种物料清单转换方法及其系统
CN113298503A (zh) 一种面向政务的工作流管理系统及其分库分表方法
CN106687919A (zh) 管理用于控制任务的状态
CN112416456B (zh) 配置文件处理方法、装置、设备、存储介质和系统
CN102662650A (zh) 一种基于动态业务流程引擎实现方法和系统
CN106605209A (zh) 控制数据处理任务
US9934307B2 (en) Apparatus and method for managing job flows in an information processing system
CN105809302A (zh) 一种基于cep推理引擎的产线调度方法和系统
CN102087665B (zh) 支持持续查询的自动服务组合方法与系统
CN107943561B (zh) 一种面向云计算平台的科学工作流任务调度方法
CN108574718A (zh) 一种云主机创建方法及装置
CN108536447A (zh) 运维管理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP02 Change in the address of a patent holder

Address after: 100086 12, 1201, 3 building, 2 South Road, Haidian District Academy of Sciences, Beijing.

Patentee after: Beijing Sohu New Media Information Technology Co., Ltd.

Address before: 100084 Beijing Haidian District Zhongguancun East Road 1 hospital 9 building Sohu cyber Building 8 floor

Patentee before: Beijing Sohu New Media Information Technology Co., Ltd.

CP02 Change in the address of a patent holder