在集群中调度运行分布式计算框架的方法和系统的制作方法

文档序号:6489412阅读:216来源:国知局
在集群中调度运行分布式计算框架的方法和系统的制作方法
【专利摘要】一种在集群中调度运行分布式计算框架的方法,包括以下步骤:集群调度器获取提交的封装了框架控制器的第一作业;集群调度器根据第一作业生成包含框架控制器的第一任务,将第一任务下发到集群执行器;接收到第一任务的集群执行器启动框架控制器运行;集群调度器获取提交的封装了与框架控制器对应的框架工作器的第二作业;集群调度器根据第二作业生成包含框架控制器标识以及框架工作器的第二任务,并将第二任务下发到集群执行器;接收到第二任务的集群执行器根据框架控制器标识启动框架工作器运行。上述方法可将多个分布式计算框架可部署到同一集群中,从而可提高集群的资源利用率。此外,还提供一种在集群中调度运行分布式计算框架的系统。
【专利说明】在集群中调度运行分布式计算框架的方法和系统
【【技术领域】】
[0001]本发明涉及数据处理【技术领域】,特别涉及一种在集群中调度运行分布式计算框架的方法和系统。
【【背景技术】】
[0002]集群是由两台或多台服务器构成的计算节点集合。集群中的服务器(也称为节点或节点服务器)相互连接,彼此之间可相互通信。集群中的服务器协同工作,向用户提供网络应用服务,对于用户来说集群就像是一个单一系统。集群中的服务器资源类似于应用程序中的资源池中的资源,用户无需关心资源的分配情况,最大化了硬件资源的使用价值。集群的优点在于可以利用各档次的服务器作为节点,实现很高的运算速度,完成大运算量的计算,不但能满足当今日益增长的信息服务的需求,而且系统造价低。
[0003]分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。分布式计算框架即调度集群服务器协同工作以实现分布式计算的系统。在分布式计算框架中,用户无需关心如何将工作拆分成多个任务,并将具体的任务将由哪一台机器执行,执行后由谁来汇总,这些都由分布式框架自行抉择,而用户只需将待处理数据的相关信息以及数据的逻辑处理流程提供给分布式计算框架作为输入,就可以得到分布式计算后的结果。
[0004]分布式计算框架一般可以分为三个部分:客户端,控制器(Master)和工作器(Worker) ο客户端用于向分布式计算框架提交作业(Job),查询作业执行情况。Master为分布式计算框架的控制中心,其接收客户端提交的作业,将`作业拆分成多个任务(Task),并将任务分配给Worker。Worker为分布式计算框架的任务执行者,启动由Master下发的Task,并进行Task运行控制。
[0005]部署于集群中的分布式计算框架可调度集群中的服务器协同工作,并行处理大运算量的计算,提高了集群的资源利用率,并大大提高了大运算量计算的处理速度。
[0006]然而,如果采用静态资源分配,也就是每个分布式计算框架分配一个集群,往往由于作业自身的特点或者作业提交频率等原因,集群资源利用率很低。因此,需要提供一种将多种分布式计算框架部署到同一集群中的方法,以提高集群资源利用率。

【发明内容】

[0007]基于此,有必要提供一种可在集群中调度运行多个分布式计算框架,从而提高集群资源利用率的在集群中调度运行分布式计算框架的方法。
[0008]一种在集群中调度运行分布式计算框架的方法,包括以下步骤:
[0009]集群调度器获取提交的封装了框架控制器的第一作业;
[0010]所述集群调度器根据所述第一作业生成包含所述框架控制器的第一任务,将所述第一任务下发到集群执行器;[0011]接收到所述第一任务的集群执行器启动所述框架控制器运行;
[0012]所述集群调度器获取提交的封装了与所述框架控制器对应的框架工作器的第二作业;
[0013]所述集群调度器根据所述第二作业生成包含所述框架控制器标识以及所述框架工作器的第二任务,并将所述第二任务下发到集群执行器;
[0014]接收到所述第二任务的集群执行器根据所述框架控制器标识启动所述框架工作器运行。
[0015]基于此,有必要提供一种可在集群中调度运行多个分布式计算框架,从而提高集群资源利用率的在集群中调度运行分布式计算框架的系统。
[0016]一种在集群中调度运行分布式计算框架的系统,包括集群调度器和多个集群执行器,其中:
[0017]所述集群调度器用于获取提交的封装了框架控制器的第一作业;
[0018]所述集群调度器还用于根据所述第一作业生成包含所述框架控制器的第一任务,将所述第一任务下发到某一所述集群执行器;
[0019]所述集群执行器用于接收到所述第一任务后,启动所述框架控制器运行;
[0020]所述集群调度器还用于获取提交的封装了与所述框架控制器对应的框架工作器的第二作业;
[0021]所述集群调度器还用于根据所述第二作业生成包含所述框架控制器标识以及所述框架工作器的第二任务,·并将所述第二任务下发到某一所述集群执行器;
[0022]所述集群执行器还用于接收到所述第二任务后,根据所述框架控制器标识启动所述框架工作器运行。
[0023]上述在集群中调度运行分布式计算框架的方法和系统中,集群调度器可将多个分布式计算框架的框架控制器和框架工作器调度到集群执行器上运行,从而可将多个分布式计算框架可部署到同一集群中。在同一集群中部署多个分布式计算框架,可使得集群中作业的提交频率大幅度升高,各种分布式计算框架共享集群资源,从而可提高集群的资源利用率。
【【专利附图】

【附图说明】】
[0024]图1为一个实施例中的在集群中调度运行分布式计算框架的方法的流程示意图;
[0025]图2为一个实施例中资源管理器向集群调度器提交第二作业的流程示意图;
[0026]图3为一个实施例中集群调度器抢占资源的流程示意图;
[0027]图4为一个实施例中集群调度器调度运行作业的示意图;
[0028]图5为一个实施例中分布式计算框架中的作业从提交到执行的过程示意图。
[0029]图6为一个实施例中的在集群中调度运行分布式计算框架的系统的结构示意图;
[0030]图7为另一实施例中的在集群中调度运行分布式计算框架的系统的结构示意图。
【【具体实施方式】】
[0031]本发明中,集群调度器(Scheduler)与多个集群执行器(Executor)交互,集群调度器与集群执行器部署于相同的集群中。优选的,集群调度器与集群执行器部署于集群中不同的节点服务器上。进一步优选的,每一个集群执行器单独部署于一台节点服务器上。
[0032]本发明中,分布式计算框架的控制器(Master)记为框架控制器,工作器(Worker)记为框架工作器,客户端(Client)记为框架客户端。
[0033]如图1所示,在一个实施例中,一种在集群中调度运行分布式计算框架的方法,包括以下步骤:
[0034]步骤S101,集群调度器获取提交的封装了框架控制器的第一作业。
[0035]具体的,在步骤S101之前,集群客户端可向集群调度器提交封装了框架控制器的第一作业。
[0036]在一个实施例中,第一作业中包含框架控制器的程序数据包和启动框架控制器的命令。框架控制器的程序数据包中包含表示框架控制器逻辑处理流程的程序代码。在一个实施例中,启动框架控制器的命令中包含预设参数,则第一作业中还包含启动框架控制器的命令中所包含的预设参数的值。在一个实施例中,第一作业中还包含运行框架控制器所需第一资源信息。第一资源信息包括CPU信息、内存信息、磁盘空间信息、磁盘传输速度和网络传输速度中的至少一种。第一作业中包含的上述信息可由用户配置。
[0037]步骤S102,集群调度器根据第一作业生成包含框架控制器的第一任务,将第一任务下发到集群执行器。
[0038]具体的,集群调度器生成的任务为提交的作业的一个运行实例。将作业的逻辑处理流程在一个节点服务器上运行的一个实例就是一个任务。因此,在一个实施例中,生成的第一任务中也包含框架控制器的程序数据包和启动框架控制器的命令以及运行框架控制
器所需第一资源信息。
[0039]在一个实施例中,第一作业还包含需增加的框架控制器的数量。集群调度器生成的第一任务的数量为第一作业中包含的需增加的框架控制器的数量。由于分布式计算框架中框架控制器只需一个,因此集群调度器生成的第一任务的数量为一。
[0040]在一个实施例中,集群调度器生成的任务还可包含任务的输入数据信息和输出数据信息等。任务中包含的上述信息可由用户在提交作业时预先配置。集群执行器启动任务时,可根据任务的输入数据信息获取相关数据传输给启动任务的函数。进一步的,集群执行器还可将任务的输出存储到上述预先配置的输出数据信息指定的存储路径等等。
[0041]在一个实施例中,集群调度器将第一任务下发到与第一资源信息匹配的集群执行器。具体的,集群调度器可在存储集群中节点服务器资源信息的资源信息表中查找所具有的资源大于等于第一资源信息所表示的资源的节点服务器,进一步的,将第一任务下发给查找到的节点服务器上的集群执行器。
[0042]步骤S103,接收到第一任务的集群执行器启动框架控制器运行。
[0043]具体的,集群执行器可根据第一任务中包含的第一资源信息为第一任务分配相应的资源,为第一任务分配工作目录,并根据第一任务中包含的启动框架控制器的命令来启动框架控制器。
[0044]上述步骤S101?S103将分布式计算框架的框架控制器调度到集群中的节点服务器运行,下述步骤S104?S106将分布式计算框架的框架工作器调度到集群中的节点服务器运行。
[0045]步骤S104,集群调度器获取提交的封装了与框架控制器对应的框架工作器的第二作业。
[0046]在一个实施例中,第二作业中包含框架工作器的程序数据包和启动框架工作器的命令。框架工作器的程序数据包中包含表示框架工作器逻辑处理流程的程序代码。在一个实施例中,第二作业中还包含运行框架控制器所需第二资源信息。第二资源信息与第一资源信息包含的资源信息类型相同。
[0047]在一个实施例中,启动框架工作器的命令中包含预设参数,则第二作业中还需包含这些预设参数的值。具体的,框架工作器启动后需要与框架控制器建立通信,因此启动框架工作器的命令中包含表示框架控制器标识的参数。本实施例中,提交的第二作业中还包含框架控制器标识。在一个实施例中,框架控制器标识包括框架控制器所在节点服务器IP地址和框架控制器端口号。具体的,框架控制器所在节点服务器即启动框架控制器运行的集群执行器所在的节点服务器。因此,本实施例中,第二作业包含由步骤S103中接收第一任务的集群执行器所在的节点服务器IP地址和框架控制器端口号组成的框架控制器标识。
[0048]步骤S105,集群调度器根据第二作业生成包含框架控制器标识以及框架工作器的第二任务,并将第二任务下发到集群执行器;
[0049]具体的,集群调度器可将第二作业中包含的框架控制器标识封装到第二任务中。在一个实施例中,生成的第二任务中还包含框架工作器的程序数据包和启动框架工作器的命令以及运行框架工作器所需第二资源信息。
[0050]在一个实施例中,第二作业中还包含需增加的框架工作器的数量。集群调度器生成的第二任务的数量等于第二作业中包含的需增加的框架工作器的数量。
[0051]在一个实施例中,集群调度器将第二任务下发到与第二资源信息匹配的集群执行器。具体的,集群调度器可在上述资源信息表中查找所具有的资源大于等于第二资源信息所表示的资源的节点服务器,进一步的,将第二任务下发给查找到的节点服务器上的集群执行器。
[0052]步骤S106,接收到第二任务的集群执行器根据框架控制器标识启动框架工作器运行。
[0053]具体的,集群执行器可根据第二任务中包含的第二资源信息为第二任务分配相应的资源,为第二任务分配工作目录,并执行第二任务中包含的启动框架工作器的命令,执行的命令中的表示框架控制器标识的参数用第二任务中包含的框架控制器标识替代。
[0054]框架工作器被启动后,与框架控制器标识对应的框架控制器建立通信,框架控制器向框架工作器下发任务,框架工作器运行任务,从而完成向分布式计算框架提交的作业。
[0055]在一个实施例中,上述在集群中调度运行分布式计算框架的方法还包括步骤:集群执行器向集群调度器汇报任务执行情况。
[0056]上述在集群中调度运行分布式计算框架的方法中,集群调度器可将多个分布式计算框架的框架控制器和框架工作器调度到集群执行器上运行,从而可将多个分布式计算框架可部署到同一集群中。在同一集群中部署多个分布式计算框架,可使得集群中作业的提交频率大幅度升高,各种分布式计算框架共享集群资源,从而可提高集群的资源利用率。
[0057]如图2所示,在一个实施例中,在步骤S104之前,上述在集群中调度运行分布式计算框架的方法还包括资源管理器向集群调度器提交第二作业的过程,包括以下步骤:[0058]步骤S201,资源管理器获取框架控制器等待处理的任务数量。
[0059]在一个实施例中,框架控制器被启动运行后,框架客户端向框架控制器提交作业。框架控制器按照预设方法将作业拆分成多个任务。例如,提交的作业中待处理的数据一般为分布式存储数据,框架控制器可根据数据的存储分布拆分任务,将存储在一起的数据块作为一个任务待处理的数据,等等。框架控制器生成的还未分配给框架工作器执行的任务即为等待处理的任务。
[0060]步骤S202,资源管理器根据等待处理的任务数量、等待处理的任务所需的运行资源以及运行与框架控制器对应的框架工作器所需资源计算需增加的框架控制器的数量。
[0061]任务所需的运行资源由用户提交作业时配置。运行资源包括CPU、内存、磁盘空间、磁盘传输速度和网络传输速度中的至少一种。运行与框架控制器对应的框架工作器所需资源也由用户预先配置。在一个实施例中,任务所需的运行资源与上述第一资源信息和第二资源所包括的资源类型相同。
[0062]步骤S203,资源管理器向集群调度器提交封装了与框架控制器对应的框架工作器以及计算得到的需增加的框架控制器的数量的第二作业。
[0063]在一个实施例中,资源管理器可将框架工作器的相关数据以及计算得到的需增加的框架控制器的数量封装为第二作业,并向集群调度器提交第二作业。在一个实施例中,与上文相应的,框架工作器的相关数据包括:框架工作器的程序数据包、启动框架工作器的命令、命令中包含的预设参数的值、运行框架控制器所需第二资源信息。其中,命令中包含的预设参数包括框架控制器标识。
[0064]在一个实施例中,步骤S201中资源管理器可定期(每隔预设时间)获取框架控制器等待处理的任务数量。
[0065]步骤S202中资源管理器可根据定期获取的等待处理的任务数量以及等待处理的任务所需的运行资源和运行框架工作器所需资源计算需增加的框架工作器的数量。具体的,可计算一个框架工作器可运行`的任务数量,进一步的,计算需增加的框架工作器的数量为等待处理的任务数量与一个框架工作器可运行的任务数量的比值。
[0066]在一个实施例中,可计算一个框架工作器可运行的任务数量等于运行框架工作器所需资源包含的各资源分量与对应的任务所需的运行资源包含的各资源分量的比值中的最小值,其中比值取整数。例如,运行框架工作器所需资源为(Rl,R2,…),R1、R2等表示运行框架工作器所需资源的各资源分量,例如CPU、内存等。任务所需的运行资源为(rl,r2…),rl、rl等表示任务所需的运行资源的各资源分量。则一个框架工作器可运行的任务数量为mm (…)。
[0067]在一个实施例中,上述等待处理的任务数量为框架控制器还未分配给框架工作器执行的任务数量。在另一个实施例中,可计算等待处理的任务数量为框架控制器还未分配给框架工作执行的任务数量减去正在执行的任务的完成率的和。例如,正在运行的任务包括任务1、…、任务1、…和任务η。任务i已经运行的时间为Ti,估计的需运行的时间为Ci,其中i=l,…,η。记框架控制器还未分配给框架工作执行的任务数量为Ν,则等待处理
π Τ
的任务数量可计算为Ef。
N /=i〔
[0068]一旦当框架工作器上的任务运行完毕后,框架控制器可分配新的任务给框架工作? τ.器执行,上述Σ#可近似的看作框架工作器即将完成的任务数量,也即框架控制器即将可
?=1 '-1
分配出去的任务数量,因此,本实施例中,将等待处理的任务数量计算为还未分配出去的任务数量减去即将分配出去的任务数量,可更加精确的得到需增加框架工作器来处理的任务数量,从而可更精确的计算出需增加的框架工作器的数量,可进一步避免集群资源浪费,提高集群资源利用率。
[0069]定期计算得到需增加的框架工作器的数量后,步骤S203中资源管理器可判断当前需增加的框架工作器的数量。具体的,可判断计算得到的需增加的框架工作器的数量是否大于预设值,若是,则当前需增加的框架工作器的数量值为该预设值,若否,则当前需增加的框架工作器的数量值为计算得到的需增加的框架工作器的数量值。进一步的,步骤S203中资源管理器可将框架工作器的相关数据以及当前需增加的框架控制器的数量封装为第二作业,并向集群调度器提交第二作业。集群调度器根据第二作业中当前需增加的框架工作器的数量生成第二任务。
[0070]本实施例中,资源管理器循环获取等待处理的任务数量,每轮向集群调度器提交的作业的需增加的框架工作器的数量不大于预设值,集群调度器无需一次调度较多的框架工作器运行,可避免对集群调度器产生压力或导致集群资源不足的情况。
[0071]在一个实施例中,上述在集群中调度运行分布式计算框架的方法还包括步骤:资源管理器获取框架工作器的工作状态;若框架工作器处于空闲状态超过预设时长,则资源管理器向框架工作器发送退出指令,以获取框架工作器退出后释放的资源。
[0072]具体的,框架 工作器与框架控制器建立通信后,框架控制器向框架工作器下发任务,按照一定的频率向框架控制器发送心跳包,汇报任务的执行情况。框架控制器记录各框架工作器的工作状态,若框架工作器超过预设时长未向框架控制器汇报任务执行情况,则标记框架工作器处于空闲状态。
[0073]在一个实施例中,资源管理器可定期查询框架控制器记录的各框架工作器的状态,以判断框架工作器处理忙碌状态还是处于空闲状态。框架工作器接收到资源管理器发送的退出指令后,主动退出,释放所占用的资源。本实施例中,定期查询处于空闲状态的框架工作器,并及时关闭处理空闲状态的框架工作器,可提高集群资源的利用率。
[0074]如图3所示,在一个实施例中,上述在集群中调度运行分布式计算框架的方法还包括集群调度器抢占资源的过程,具体包括以下步骤:
[0075]步骤S301,集群调度器向资源管理器发送资源抢占命令。
[0076]步骤S302,资源管理器查找占用资源与资源抢占命令要求抢占的资源匹配的框架工作器。
[0077]具体的,框架工作器所占用资源为上述运行框架工作器所需第二资源信息标识的资源。因为,集群调度器将包含框架工作器的第二任务下发到与第二资源信息匹配的集群执行器,而集群执行器启动框架工作器运行之前,根据第二资源信息为框架工作器分配其所需的相应资源。
[0078]在一个实施例中,在步骤S105之前,集群调度器可生成第二任务中包含的框架工作器的框架工作器标识,并记录框架工作器标识与运行框架工作器所需第二资源信息的对应关系。框架工作器标识可由与框架工作器对应的框架控制器标识、框架工作器待下发到的集群服务器标识(或节点服务器标识)以及唯一序列号组成。步骤S105中生成的第二任务中包含框架工作器标识。框架工作器启动运行后,与框架控制器通信时可附带其框架工作器标识。
[0079]资源管理器可查询集群调度器记录的框架工作器标识与运行框架工作器所需第二资源信息的对应关系,获取对应的第二资源信息标识的资源满足(大于等于)资源抢占命令要求抢占的资源的框架工作器标识。
[0080]步骤S303,资源管理器获取查找到的框架工作器执行的任务的完成状态信息。
[0081]在一个实施例中,框架工作器按照一定的频率向框架控制器汇报执行的任务的完成状态信息,框架控制器记录各框架工作器上的任务的完成状态信息。在一个实施例中,资源管理器可从框架控制器记录的任务的完成状态信息中获取各框架工作器执行的任务的完成状态信息。
[0082]步骤S304,资源管理器根据上述框架工作器上任务的完成状态信息向框架工作器发送退出指令。
[0083]在一个实施例中,资源管理器可向已经完成分配的所有任务的框架工作器发送退出指令。本实施例中,可及时获取抢占资源命令要求的资源,提高集群的资源利用率。
[0084]在另一个实施例中,资源管理器可向正在执行的任务的完成进度不大于预设比率(例如,10%)的框架工作器发送退出指令。进一步的,将框架工作器未完成的任务信息发送给框架控制器,框架控制器可重新分配这些任务。例如,有些任务框架工作器开始执行不久,而任务的所需的执行时间可能很长,若让任务执行完毕需要等待很长的时间,则可向这些框架工作器发出退出指令,获取其释放的资源。
[0085]本实施例中,可向正在执行的任务的完成进度较小的框架工作器发送退出指令,从而即可及时地获取到抢占指令要求的资源,又可最大限度地降低框架工作器工作的浪费。
[0086]下面以一个具体的实施例说明上述在集群中调度运行分布式计算框架的方法。
[0087]图4为集群调度器调度运行作业的示意图。集群调度器调度运行作业包括以下步骤:
[0088](1)集群调度器获取作业提交端提交的作业。作业提交端可为集群客户端或上述的资源管理器。作业中包含的信息包括:待处理数据信息、作业程序数据包、运行作业的命令、命令中包含的预设参数的值、运行作业所需资源信息和待生成任务数量。作业程序数据包中包含表示处理数据的逻辑处理流程的程序代码。
[0089](2)集群调度器根据提交的作业生成任务。将作业的逻辑处理流程在一个节点服务器上运行的一个实例就是一个任务。集群调度器生成的任务数量即为作业中包含的待生成任务数量。
[0090](3)将任务下发到集群执行器。具体的,将任务下发到与运行作业所需资源信息匹配的集群执行器。
[0091](4)接收到任务的集群执行器启动任务运行。具体的,集群执行器可将作业程序包部署到指定位置,为任务分配与运行作业所需资源信息匹配的资源,为任务分配工作目录,执行上述运行作业的命令,命令中包含的预设参数用作业中包含的上述预设参数的值替代。[0092](5)集群执行器向集群调度器汇报任务执行情况。
[0093]上述在集群中调度运行分布式计算框架的方法包括集群调度器将框架控制器调度到集群中的节点服务器运行的步骤和将框架工作器调度到集群中的节点服务器运行的步骤。
[0094]集群调度器将框架控制器调度到集群中的节点服务器运行的步骤包括以下步骤:
[0095](1)集群调度器获取提交的封装了框架控制器的第一作业。第一作业中包含框架控制器的程序数据包、启动框架控制器的命令、命令中包含的预设参数的值、运行框架控制器所需第一资源信息和需增加的框架控制器的数量。
[0096](2)集群调度器根据第一作业生成包含框架控制器的第一任务。
[0097]具体的,集群调度器在存储集群中节点服务器资源信息的资源信息表中查找所具有的资源大于等于第一资源信息所表示的资源的节点服务器,进一步的,将第一任务下发给查找到的节点服务器上的集群执行器。
[0098](3)接收到第一任务的集群执行器启动框架控制器运行。具体的,集群执行器可部署框架控制器的程序数据包到指定位置,根据第一任务中包含的第一资源信息为第一任务分配相应的资源,为第一任务分配工作目录,并根据第一任务中包含的启动框架控制器的命令来启动框架控制器。
[0099]框架控制器被启动运行后,框架客户端即可向框架控制器提交作业。
[0100]图5为一个实施例中分布式计算框架中的作业从提交到执行的过程示意图。分布式计算框架中的作业从提交到执行的过程包括以下步骤,其中,步骤(3)、(4)、(5)、(6)、(7)和(8)为集群调度器将框架工作器调度到集群中的节点服务器运行的步骤:
[0101]( 1)框架客户端向框架控制器提交作业。
[0102](2)框架控制器按照预设方法将作业拆分成多个任务。
[0103](3)资源管理器获取任务所需的运行资源以及运行与框架控制器对应的框架工作器所需资源,并定期获取框架控制器等待处理的任务数量以及任务。
[0104](4)资源管理器生成封装了与所述框架控制器对应的框架工作器的第二作业,具体包括以下步骤(4.1)?(4.3):
[0105](4.1)资源管理器可根据定期获取的等待处理的任务数量以及等待处理的任务所需的运行资源和运行与框架控制器对应的框架工作器所需资源计算需增加的框架工作器的数量。
[0106]等待处理的任务所需的运行资源由用户在向框架客户端提交作业时配置,运行框架工作器所需资源也由用户预先配置。
[0107]具体的,可计算等待处理的任务数量为框架控制器还未分配给框架工作执行的任务数量减去正在执行的任务的完成率的和。
[0108]进一步的,计算一个框架工作器可运行的任务数量等于运行框架工作器所需资源包含的各资源分量与对应的任务所需的运行资源包含的各资源分量的比值中的最小值,其中比值取整数。
[0109]进一步的,计算需增加的框架工作器的数量为等待处理的任务数量与一个框架工作器可运行的任务数量的比值。[0110](4.2)资源管理器判断当前需增加的框架工作器的数量。具体的,可判断计算得到的需增加的框架工作器的数量是否大于预设值,若是,则当前需增加的框架工作器的数量值为该预设值,若否,则当前需增加的框架工作器的数量值为计算得到的需增加的框架工作器的数量值。
[0111](4.3)资源管理器将框架工作器的相关数据以及当前需增加的框架控制器的数量封装为第二作业。
[0112]框架工作器的相关数据包括:框架工作器的程序数据包、启动框架工作器的命令、命令中包含的预设参数的值、运行框架工作器所需第一资源信息。其中命令中包含的预设参数包括:框架控制器标识。具体的,框架控制器标识包括框架控制器所在节点服务器IP地址和框架控制器端口号。具体的,框架控制器所在节点服务器即启动框架控制器运行的集群执行器所在的节点服务器。
[0113](5)资源管理器向集群调度器提交第二作业。
[0114](6)集群调度器根据第二作业生成包含框架控制器标识以及框架工作器的第二任务,包括以下步骤(6.1)?(6.3)
[0115](6.1)集群调度器在上述资源信息表中查找所具有的资源大于等于第二资源信息所表示的资源的节点服务器,选择其中某一节点服务器为第二任务待下发的节点服务器。
[0116](6.2)生成框架控制器标识。具体的,框架工作器标识可由与框架工作器对应的框架控制器标识、框架工作器待下发的(即第二任务待下发的)节点服务器标识以及唯一序列号组成,节点服务器标识也可由节点服务器上运行的集群服务器标识替代。
[0117]进一步的,可记录框架工作器标识与运行框架工作器所需第二资源信息的对应关系,便于后续抢占资源时查询框架工作器所占用的资源情况。
[0118]框架工作器启动运行后,与框架控制器通信时可附带其框架工作器标识。
[0119](6.3)生成第二任务,生成的第二任务数量等于第二作业中包含的需增加的框架工作器的数量。
[0120]具体的,可将框架工作器的程序数据包、启动框架工作器的命令、命令中包含的预设参数的值、运行框架工作器所需第一资源信息、框架工作器标识封装为第二任务。其中命令中包含的预设参数包括:框架控制器标识。
[0121](7)集群调度器将第二任务下发到(6.1)中选择的待下发的节点服务器上的集群执行器。
[0122](8)接收到第二任务的集群执行器启动框架工作器运行。
[0123]具体的,集群执行器可部署框架工作器的程序数据包到指定位置,根据第二任务中包含的第二资源信息为第二任务分配相应的资源,为第二任务分配工作目录,并执行第二任务中包含的启动框架工作器的命令,执行的命令中的表示框架控制器标识的参数用第二任务中包含的框架控制器标识替代。
[0124](9)框架工作器被启动后,向框架控制器标识对应的框架控制器注册,并按照一定的频率发送心跳包。
[0125](10)按照一定的调度策略选择等待处理的任务,并确定任务待下发到的框架工作器。
[0126](11)向框架工作器下发任务。[0127](12)框架工作器运行任务。
[0128](13)框架工作器向框架控制器汇报任务的完成状态信息。
[0129]在一个实施例中,上述在集群中调度运行分布式计算框架的方法还包括强制框架工作器退出以释放资源的过程,包括以下步骤:
[0130](1)资源管理器定期查询框架控制器记录的各框架工作器的状态,以判断框架工作器处理忙碌状态还是处于空闲状态。
[0131](2)若框架工作器处于空闲状态超过预设时长,则资源管理器向框架工作器发送退出指令。框架工作器接收到资源管理器发送的退出指令后,主动退出,释放所占用的资源。
[0132](3)集群调度器向资源管理器发送资源抢占命令。
[0133](4)资源管理器接收到资源抢占命令后,查找占用资源与资源抢占命令要求抢占的资源匹配的框架工作器。
[0134]框架工作器所占用资源为上述运行框架工作器所需第二资源信息标识的资源。在一个实施例中,资源管理器在上述框架工作器标识与运行框架工作器所需第二资源信息的对应关系中查找对应的第二资源信息标识的资源满足(大于等于)资源抢占命令要求抢占的资源的框架工作器标识。
[0135](5)资源管理器获取查找到的框架工作器执行的任务的完成状态信息。在一个实施例中,资源管理器可从框架控制器记录的任务的完成状态信息中获取各框架工作器执行的任务的完成状态信息。
[0136](6)资源管理器根据上述框架工作器上任务的完成状态信息向框架工作器发送退出指令。框架工作器接收到资源管理器发送的退出指令后,主动退出,释放所占用的资源。
[0137]在一个实施例中,上述的资源管理器与框架控制器实现在相同的进程中。即将资源管理器的程序数据包等相关数据和框架控制器的程序数据包等相关数据编译到相同的二进制包中。集群中一个框架控制器对应一个资源管理器。本实施例中,资源管理器通过函数调用即可获取框架控制器的相关信息,并且资源管理器与框架工作器的交互过程可直接利用框架控制器与框架工作器的交互过程,通信效率更高。
[0138]在另一个实施例中,资源管理器与框架控制器实现在不同的进程中。即将资源管理器的程序数据包等相关数据和框架控制器的程序数据包等相关数据编译到不同的二进制包中。集群中多个框架控制器对应一个资源管理器。本实施例中,对资源管理器的修改和升级不会影响到框架控制器的运行,资源管理器出现故障也不会影响框架控制器,从而可提高分布式计算框架的运行安全性和稳定性。
[0139]如图6所示,在一个实施例中,一种在集群中调度运行分布式计算框架的系统,包括集群调度器20和多个集群执行器40,其中:
[0140]集群调度器20用于获取提交的封装了框架控制器的第一作业。
[0141]在一个实施例中,在集群中调度运行分布式计算框架的系统还包括集群客户端(图中未示出),用于向集群调度器20提交封装了框架控制器的第一作业。
[0142]在一个实施例中,第一作业中包含框架控制器的程序数据包和启动框架控制器的命令。框架控制器的程序数据包中包含表示框架控制器逻辑处理流程的程序代码。在一个实施例中,启动框架控制器的命令中包含预设参数,则第一作业中还包含启动框架控制器的命令中所包含的预设参数的值。在一个实施例中,第一作业中还包含运行框架控制器所需第一资源信息。第一资源信息包括CPU信息、内存信息、磁盘空间信息、磁盘传输速度和网络传输速度中的至少一种。第一作业中包含的上述信息可由用户配置。
[0143]集群调度器20还用于根据第一作业生成包含框架控制器的第一任务,将第一任务下发到某一集群执行器40。
[0144]具体的,集群调度器20生成的任务为提交的作业的一个运行实例。将作业的逻辑处理流程在一个节点服务器上运行的一个实例就是一个任务。因此,在一个实施例中,生成的第一任务中也包含框架控制器的程序数据包和启动框架控制器的命令以及运行框架控制器所需第一资源信息。
[0145]在一个实施例中,第一作业还包含需增加的框架控制器的数量。集群调度器20生成的第一任务的数量为第一作业中包含的需增加的框架控制器的数量。由于分布式计算框架中框架控制器只需一个,因此集群调度器20生成的第一任务的数量为一。
[0146]在一个实施例中,集群调度器20生成的任务还可包含任务的输入数据信息和输出数据信息等。任务中包含的上述信息可由用户在提交作业时预先配置。集群执行器40启动任务时,可根据任务的输入数据信息获取相关数据传输给启动任务的函数。进一步的,集群执行器40还可将任务的输出存储到上述预先配置的输出数据信息指定的存储路径等
坐寸。
[0147]在一个实施例中,集群调度器20用于将第一任务下发到与第一资源信息匹配的集群执行器40。具体的,集群调度器20可在存储集群中节点服务器资源信息的资源信息表中查找所具有的资源大于等于第一资源信息所表示的资源的节点服务器,进一步的,将第一任务下发给查找到的节点服务器上的集群执行器40。
[0148]集群执行器40用于接收到第一任务后,启动框架控制器运行。
[0149]具体的,集群执行器40可根据第一任务中包含的第一资源信息为第一任务分配相应的资源,为第一任务分配工作目录,并根据第一任务中包含的启动框架控制器的命令来启动框架控制器。
[0150]集群调度器20还用于获取提交的封装了与框架控制器对应的框架工作器的第二作业。
[0151]在一个实施例中,第二作业中包含框架工作器的程序数据包和启动框架工作器的命令。框架工作器的程序数据包中包含表示框架工作器逻辑处理流程的程序代码。在一个实施例中,第二作业中还包含运行框架控制器所需第二资源信息。第二资源信息与第一资源信息包含的资源信息类型相同。
[0152]在一个实施例中,启动框架工作器的命令中包含预设参数,则第二作业中还需包含这些预设参数的值。具体的,框架工作器启动后需要与框架控制器建立通信,因此启动框架工作器的命令中包含表示框架控制器标识的参数。本实施例中,提交的第二作业中还包含框架控制器标识。在一个实施例中,框架控制器标识包括框架控制器所在节点服务器IP地址和框架控制器端口号。具体的,框架控制器所在节点服务器即启动框架控制器运行的集群执行器40所在的节点服务器。因此,本实施例中,第二作业包含由接收第一任务的集群执行器40所在的节点服务器IP地址和框架控制器端口号组成的框架控制器标识。
[0153]集群调度器20还用于根据第二作业生成包含框架控制器标识以及框架工作器的第二任务,并将第二任务下发到集群执行器40 ;
[0154]具体的,集群调度器20可将第二作业中包含的框架控制器标识封装到第二任务中。在一个实施例中,生成的第二任务中还包含框架工作器的程序数据包和启动框架工作器的命令以及运行框架工作器所需第二资源信息。
[0155]在一个实施例中,第二作业中还包含需增加的框架工作器的数量。集群调度器20生成的第二任务的数量等于第二作业中包含的需增加的框架工作器的数量。
[0156]在一个实施例中,集群调度器20用于将第二任务下发到与第二资源信息匹配的集群执行器40。具体的,集群调度器20可在上述资源信息表中查找所具有的资源大于等于第二资源信息所表示的资源的节点服务器,进一步的,将第二任务下发给查找到的节点服务器上的集群执行器40。
[0157]集群执行器40还用于接收到第二任务后,根据框架控制器标识启动框架工作器运行。
[0158]具体的,集群执行器40可根据第二任务中包含的第二资源信息为第二任务分配相应的资源,为第二任务分配工作目录,并执行第二任务中包含的启动框架工作器的命令,执行的命令中的表示框架控制器标识的参数用第二任务中包含的框架控制器标识替代。
[0159]框架工作器被启动后,与框架控制器标识对应的框架控制器建立通信,框架控制器向框架工作器下发任务,框架工作器运行任务,从而完成向分布式计算框架提交的作业。
[0160]在一个实施例中,集群执行器40还用于向集群调度器20汇报任务执行情况。
[0161]上述在集群中调度运行分布式计算框架的系统中,集群调度器20可将多个分布式计算框架的框架控制器和框架工作器调度到集群执行器40上运行,从而可将多个分布式计算框架可部署到同一集群中。在同一集群中部署多个分布式计算框架,可使得集群中作业的提交频率大幅度升高,各种分布式计算框架共享集群资源,从而可提高集群的资源利用率。
[0162]如图7所示,在一个实施例中,上述在集群中调度运行分布式计算框架的系统还包括资源管理器60,用于获取框架控制器等待处理的任务数量。
[0163]在一个实施例中,框架控制器被启动运行后,框架客户端向框架控制器提交作业。框架控制器按照预设方法将作业拆分成多个任务。例如,提交的作业中待处理的数据一般为分布式存储数据,框架控制器可根据数据的存储分布拆分任务,将存储在一起的数据块作为一个任务待处理的数据,等等。框架控制器生成的还未分配给框架工作器执行的任务即为等待处理的任务。
[0164]资源管理器60还用于根据等待处理的任务数量、等待处理的任务所需的运行资源以及运行与框架控制器对应的框架工作器所需资源计算需增加的框架控制器的数量。
[0165]任务所需的运行资源由用户提交作业时配置。运行资源包括CPU、内存、磁盘空间、磁盘传输速度和网络传输速度中的至少一种。运行与框架控制器对应的框架工作器所需资源也由用户预先配置。在一个实施例中,任务所需的运行资源与上述第一资源信息和第二资源所包括的资源类型相同。
[0166]资源管理器60还用于向集群调度器20提交封装了与框架控制器对应的框架工作器以及计算得到的需增加的框架控制器的数量的第二作业。
[0167]在一个实施例中,资源管理器60可将框架工作器的相关数据以及计算得到的需增加的框架控制器的数量封装为第二作业,并向集群调度器20提交第二作业。在一个实施例中,与上文相应的,框架工作器的相关数据包括:框架工作器的程序数据包、启动框架工作器的命令、命令中包含的预设参数的值、运行框架控制器所需第二资源信息。其中,命令中包含的预设参数包括框架控制器标识。
[0168]在一个实施例中,资源管理器60可定期(每隔预设时间)获取框架控制器等待处理的任务数量。
[0169]资源管理器60可根据定期获取的等待处理的任务数量以及等待处理的任务所需的运行资源和运行框架工作器所需资源计算需增加的框架工作器的数量。具体的,可计算一个框架工作器可运行的任务数量,进一步的,计算需增加的框架工作器的数量为等待处理的任务数量与一个框架工作器可运行的任务数量的比值。
[0170]在一个实施例中,资源管理器60可计算一个框架工作器可运行的任务数量等于运行框架工作器所需资源包含的各资源分量与对应的任务所需的运行资源包含的各资源分量的比值中的最小值,其中比值取整数。例如,运行框架工作器所需资源为(R1,R2,…),Rl、R2等表示运行框架工作器所需资源的各资源分量,例如CPU、内存等。任务所需的运行资源为(rl,r2…),rl、rl等表示任务所需的运行资源的各资源分量。则一个框架工作器可运行的任务数量为min ( |_片/rj , [R2/r2j,…)。
[0171]在一个实施例中,上述等待处理的任务数量为框架控制器还未分配给框架工作器执行的任务数量。在另一个实施例中,资源管理器60可计算等待处理的任务数量为框架控制器还未分配给框架工作执行的任务数量减去正在执行的任务的完成率的和。例如,正在运行的任务包括任务1、…、任务1、…和任务η。任务i已经运行的时间为Ti,估计的需运行的时间为Ci,其中i=l,…,η。记框架控制器还未分配给框架工作执行的任务数量为
ν,则等待处理的任务数量可计算为
【权利要求】
1.一种在集群中调度运行分布式计算框架的方法,包括以下步骤:集群调度器获取提交的封装了框架控制器的第一作业;所述集群调度器根据所述第一作业生成包含所述框架控制器的第一任务,将所述第一任务下发到集群执行器;接收到所述第一任务的集群执行器启动所述框架控制器运行;所述集群调度器获取提交的封装了与所述框架控制器对应的框架工作器的第二作业;所述集群调度器根据所述第二作业生成包含所述框架控制器标识以及所述框架工作器的第二任务,并将所述第二任务下发到集群执行器;接收到所述第二任务的集群执行器根据所述框架控制器标识启动所述框架工作器运行。
2.根据权利要求1所述的在集群中调度运行分布式计算框架的方法,其特征在于,所述第一作业中包含运行所述框架控制器所需第一资源信息,所述第二作业中包含运行所述框架工作器所需第二资源信息;所述集群调度器将所述第一任务下发到与所述第一资源信息匹配的集群执行器;所述集群调度器将所述第二任务下发到与所述第二资源信息匹配的集群执行器。
3.根据权利要求2所述的 在集群中调度运行分布式计算框架的方法,其特征在于,所述第二作业中还包含需增加的所述框架控制器的数量;所述集群调度器生成的第二任务的数量等于所述需增加的所述框架控制器数量。
4.根据权利要求3所述的在集群中调度运行分布式计算框架的方法,其特征在于,在所述集群调度器获取提交的封装了与所述框架控制器对应的框架工作器的第二作业的步骤之前,所述方法还包括步骤:资源管理器获取所述框架控制器等待处理的任务数量;所述资源管理器根据所述等待处理的任务数量、等待处理的任务所需的运行资源以及运行与所述框架控制器对应的框架工作器所需资源计算需增加的所述框架控制器的数量;资源管理器向所述集群调度器提交封装了所述框架工作器以及计算得到的需增加的所述框架控制器的数量的第二作业。
5.根据权利要求3所述的在集群中调度运行分布式计算框架的方法,其特征在于,所述方法还包括步骤:所述资源管理器获取框架工作器的工作状态;若框架工作器处于空闲状态超过预设时长,则所述资源管理器向框架工作器发送退出指令,以获取框架工作器退出后释放的资源。
6.根据权利要求5所述的在集群中调度运行分布式计算框架的方法,其特征在于,所述方法还包括步骤:所述集群调度器向所述资源管理器发送资源抢占命令;所述资源管理器查找占用资源与所述资源抢占命令要求抢占的资源匹配的框架工作器;所述资源管理器获取查找到的框架工作器执行的任务的完成状态信息;根据所述框架工作器上任务的完成状态信息向所述框架工作器发送退出指令。
7.—种在集群中调度运行分布式计算框架的系统,其特征在于,包括集群调度器和多个集群执行器,其中:所述集群调度器用于获取提交的封装了框架控制器的第一作业;所述集群调度器还用于根据所述第一作业生成包含所述框架控制器的第一任务,将所述第一任务下发到某一所述集群执行器;所述集群执行器用于接收到所述第一任务后,启动所述框架控制器运行;所述集群调度器还用于获取提交的封装了与所述框架控制器对应的框架工作器的第二作业;所述集群调度器还用于根据所述第二作业生成包含所述框架控制器标识以及所述框架工作器的第二任务,并将所述第二任务下发到某一所述集群执行器;所述集群执行器还用于接收到所述第二任务后,根据所述框架控制器标识启动所述框架工作器运行。
8.根据权利要求7所述的在集群中调度运行分布式计算框架的系统,其特征在于,所述第一作业中包含运行所述框架控制器所需第一资源信息,所述第二作业中包含运行所述框架工作器所需第二资源信息;所述集群调度器用于将所述第一任务下发到与所述第一资源信息匹配的集群执行器; 所述集群调度器用于将所述第二任务下发到与所述第二资源信息匹配的集群执行器。
9.根据权利要求8所述的在集群中调度运行分布式计算框架的系统,其特征在于,所述第二作业中还包含需增加的所述框架控制器的数量;所述集群调度器生成的第二任务的数量等于所述需增加的所述框架控制器数量。
10.根据权利要求9所述的在集群中调度运行分布式计算框架的系统,其特征在于,所述系统还包括:资源管理器,用于获取所述框架控制器等待处理的任务数量;所述资源管理器还用于根据所述等待处理的任务数量、等待处理的任务所需的运行资源以及运行与所述框架控制器对应的框架工作器所需资源计算需增加的所述框架控制器的数量;资源管理器还用于向所述集群调度器提交封装了所述框架工作器以及计算得到的需增加的所述框架控制器的数量的第二作业。
11.根据权利要求9所述的在集群中调度运行分布式计算框架的系统,其特征在于,所述资源管理器还用于获取框架工作器的工作状态,若框架工作器处于空闲状态超过预设时长,则向框架工作器发送退出指令,以获取框架工作器退出后释放的资源。
12.根据权利要求11所述的在集群中调度运行分布式计算框架的系统,其特征在于,所述集群调度器还用于向所述资源管理器发送资源抢占命令;所述资源管理器还用于查找占用资源与所述资源抢占命令要求抢占的资源匹配的框架工作器;所述资源管理器还用于获取查找到的框架工作器执行的任务的完成状态信息,根据所述框架工作器上任务的完成状态信息向所述框架工作器发送退出指令。
【文档编号】G06F9/46GK103713942SQ201210370666
【公开日】2014年4月9日 申请日期:2012年9月28日 优先权日:2012年9月28日
【发明者】董元元, 罗韩梅, 林恬, 彭亮, 陈卓, 金涬 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1