基于映射规约模型分布式文件系统作业的运行方法与流程

文档序号:14719030发布日期:2018-06-17 00:22阅读:166来源:国知局

本发明涉及分布式文件系统技术领域,具体涉及一种基于映射规约模型分布式文件系统作业的运行方法。



背景技术:

分布式文件系统是指文件系统管理的物理存储资源不直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。作业是指用户通过客户端提交给分布式文件系统的程序,是分布式文件系统运行的基本单位。

现有分布式文件系统上作业运行方法主要是使用Linux操作系统的crontab定时命令以及命令脚本。这种方法虽然简单,但是作业的运行过程完全是通过程序进行控制的,作业的运行过程需要程序员手动编写每一步的代码,这样不但需要消耗大量的人力资源,而且效率低下。



技术实现要素:

针对现有技术中作业的运行过程需要程序员手动编写每一步的代码效率低下的缺陷,本发明提供了一种基于映射规约模型分布式文件系统作业的运行方法。

一方面,本发明提供的一种基于映射规约模型分布式文件系统作业的运行方法,包括:

通过作业客户端将作业提交到作业追踪器上;

作业追踪器接收到作业后调用作业初始化模块对所述作业初始化得到多个任务,并通知任务调度器将所述任务分配给任务追踪器;

任务追踪器为接收到的任务准备运行环境,然后启动执行任务,并将资源使用情况和任务运行进度汇报给作业追踪器;

作业追踪器监控资源使用情况以及任务运行进度,并根据资源使用情况进行任务调度。

进一步地,所述通过作业客户端将作业提交到作业追踪器之前还包括:

获取作业ID(Identity,标识码),生成分片文件以及将作业配置文件、数据分片元信息文件上传到创建的分布式文件系统目录下。

进一步地,所述通过作业客户端将作业提交到作业追踪器上的步骤,包括:

所述作业客户端通过RPC(RemoteProcedureCall,远程过程调用)接口向作业追踪器提交作业。

进一步地,所述对作业初始包括:

根据输入数据量和作业配置参数将作业分解成多个安装任务、映射任务、归约任务和清理任务;

为作业创建一个作业进程对象,作业进程对象为每个任务创建一个任务进程对象用于维护对应任务的运行信息。

进一步地,所述安装任务,为作业初始化标识性任务,用于进行一些非常简单的作业初始化工作;

所述映射任务,为映射阶段处理数据的任务;

所述归约任务,为归约阶段处理数据的任务;

所述清理任务,为作业结束标志性任务,用于完成作业清理。

进一步地,所述任务追踪器为接收到的任务准备运行环境包括:

所述任务追踪器为每个任务启动一个独立的进程,并通过进程实现资源隔离。

进一步地,所述启动执行任务的步骤,包括:

映射任务执行过程:将对应的数据分片迭代解析成多个键/值对,依次调用映射函数map进行处理,将处理得到的中间结果存放到本地磁盘上;

归约任务执行过程:从远程节点上读取映射任务的中间结果,按照键对键/值对进行排序,依次读取<键,值列表>,调用归约函数处理,将最终结果存到分布式文件系统上。

进一步地,所述任务追踪器通过心跳周期性地将资源使用情况和任务运行进度汇报给作业追踪器;作业追踪器将任务列表以心跳应答的形式返回给对应的任务追踪器。

进一步地,所述作业追踪器根据资源使用情况进行任务调度的步骤,包括:

作业追踪器接收到任务追踪器上有空闲资源的心跳信息后,则调用任务调度器为该任务追踪器分配任务;

作业追踪器将新分配的任务封装成一个或多个登陆任务动作对象,将其添加到心跳应答中返回给任务追踪器;

任务追踪器收到心跳应答后,解析出登陆任务动作对象,并创建进程启动任务。

进一步地,所述任务调度器根据接收到任务的执行进度以及资源使用情况,选择合适的任务使用空闲的资源。

本发明提供的一种基于映射规约模型分布式文件系统作业的运行方法,基于映射归约模型分布式文件系统作业运行方法通过客户端将作业提交到作业追踪器上,然后由作业追踪器将作业分解成若干个任务,并对这些任务进行调度和监控,以保障这些程序运行成功,而任务追踪器则启动作业追踪器发来的任务,并向作业追踪器汇报这些任务的运行状态和本节点上资源的使用情况。采用上述方法作业运行所需的程序只需要编写映射和规约函数,之后通过调用就可以实现自动运行作业,极大的减少了人力成本而且提高了运行效率。

附图说明

通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:

图1是本发明一个实施例中基于映射规约模型分布式文件系统作业的运行方法的流程示意图;

图2是本发明一个实施例中数据分片与数据块对应关系示意图;

图3是本发明一个实施例中作业运行过程示意图。

具体实施方式

现结合附图和实施例对本发明技术方案作进一步详细阐述。

图1示出了本实施例中一种基于映射规约模型分布式文件系统作业的运行方法的流程示意图,如图1所示,本实施例提供的一种基于映射规约模型分布式文件系统作业的运行方法,包括:

S1,通过作业客户端将作业提交到作业追踪器上;

S2,作业追踪器接收到作业后调用作业初始化模块对所述作业初始化得到多个任务,并通知任务调度器将所述任务分配给任务追踪器;

S3,任务追踪器为接收到的任务准备运行环境,然后启动执行任务,并将资源使用情况和任务运行进度汇报给作业追踪器;

S4,作业追踪器监控资源使用情况以及任务运行进度,并根据资源使用情况进行任务调度。

用户通过作业客户端进行作业提交,在将作业提交到作业追踪器之前作业客户端获取作业ID,生成分片文件以及将作业配置文件、数据分片元信息文件上传到创建的分布式文件系统目录下。其中,数据分片元信息文件记录了每个输入分片的逻辑位置信息。

对于分布式文件系统而言,以固定大小的数据块为基本单位存储数据,而对于任务而言,其处理单位是数据分片。一个数据分片一般是由多个数据块组成。如图2数据分片与数据块的对应关系所示,本实施例中以分布式文件系统文件包含6个数据块为例,而数据分片的大小是数据块的1.5倍。每个数据块冗余存储在3个数据节点中,例如,数据块1存储在数据节点1、2和3上;数据快2存储在数据节点4、5和6上。

数据分片是一个逻辑概念,它只包含一些元数据信息,比如数据起始位置、数据长度、数据所在节点等。它的划分方法完全由用户自己决定。分片的多少决定了映射任务的数目,因为每个分片会交由一个映射任务处理。

进而,作业客户端通过远程过程调用RPC接口向作业追踪器提交作业。

作业追踪器接收到作业后调用作业初始化模块对所述作业进行初始化。根据输入数据量和作业配置参数将作业分解成多个安装任务、映射任务、归约任务和清理任务;为作业创建一个作业进程对象,作业进程对象为每个任务创建一个任务进程对象用于维护对应任务的运行信息。

其中,安装任务:作业初始化标识性任务。它进行一些非常简单的作业初始化工作。映射任务:映射阶段处理数据的任务。其数目及对应的处理数据分片由应用程序中的输入格式化组件确定。归约任务:归约阶段处理数据的任务。考虑到归约任务能够运行依赖于映射任务的输出结果,因此,刚开始只会调度映射任务,直到映射任务完成数据达到一定比例。清理任务:作业结束标志性任务,主要完成一些作业清理工作,比如删除作业运行过程中用到的一些临时目录。一旦该任务运行成功后,作业由运行状态变为成功状态。

作业追踪器对接收到的作业初始化完成后,通过调用任务调度器,根据接收到任务的执行进度以及资源使用情况,选择合适的任务使用空闲的资源,将任务分配给对应的任务追踪器。

任务追踪器接收到任务之后,首先为该任务准备运行环境。运行环境准备包括进程启动和资源隔离。任务追踪器为每个任务启动一个独立的进程以避免不同任务在运行过程中相互影响;同时,任务追踪器使用进程实现资源隔离以防止任务滥用资源。

任务追踪器为接收到的任务准备好运行环境之后便会启动执行任务。

映射任务执行过程:将对应的数据分片迭代解析成多个键/值对,依次调用映射函数map进行处理,将处理得到的中间结果存放到本地磁盘上;

归约任务执行过程:从远程节点上读取映射任务的中间结果,按照键对键/值对进行排序,依次读取<键,值列表>,调用归约函数处理,将最终结果存到分布式文件系统上。

由于映射任务和归约任务运行时使用了不同种类的资源,且这两种资源之间不能混用,因此任务调度器分别对映射任务和归约任务单独进行调度。而对于同一个作业而言,归约任务和映射任务之间存在数据依赖关系,默认情况下,当映射任务完成数目达到总数的5%后,才开始启动归约任务。

在任务执行过程中,每个任务的最新进度首先由任务通过RPC汇报给任务追踪器,然后任务追踪器通过心跳周期性地将资源使用情况和任务运行进度汇报给作业追踪器。作业追踪器监控资源使用情况以及任务运行进度,并根据资源使用情况进行任务调度。

作业追踪器跟踪作业的整个运行过程,并为作业的成功运行提供全方位的保障。首先,当任务追踪器或者任务失败时,转移计算任务;其次,当某个任务运行进度远落后于同一作业的其他任务时,则重新并行启动一个相同任务,并选取两个相同任务计算快的任务结果作为最终结果。

作业追踪器接收到任务追踪器上有空闲资源的心跳信息后,则调用任务调度器为该任务追踪器分配任务;作业追踪器将新分配的任务封装成一个或多个登陆任务动作对象,将其添加到心跳应答中返回给任务追踪器;任务追踪器收到心跳应答后,解析出登陆任务动作对象,并创建进程启动任务。

所述任务调度器根据接收到任务的执行进度以及资源使用情况,选择合适的任务使用空闲的资源。任务调度器是一个可插拔的独立模块,且为双层架构,用户可以根据自己的需要设计相应的调度器。任务调度器进行任务分配时首先选择作业,然后从该作业中选择任务,其中,选择任务时需要重点考虑数据本地性。

举例来说,映射归约模型的主要思想是将大数据集分解为成百上千的小数据集,每个或多个数据集分别由分布式文件系统中的一个节点进行处理并生成中间结果,然后这些中间结果又由大量的节点进行合并,形成最终结果。计算模型的核心是映射和归约两个函数,这两个函数由用户负责实现,功能是按一定的映射规则将输入的<键,值>对转换成另一个或一批<键,值>对输出。

如图3所示,用户使用Shell命令提交作业,采用Java语言编写作业程序,并将其打包成为job.jar,然后通过命令提交submitjob.jar作业。

作业配置信息记录在文件job.xml中。该文件记录了作业运行需要的全部文件的基本信息,例如程序包的名字、作业使用到的数据文件名和这些文件所在的目录。作业客户端首先加载作业配置文件job.xml,然后读取文件job.xml中的配置信息,将作业用到的所有文件传送到作业追踪器文件系统的某个目录下。

作业客户端调用RPC接口向作业追踪器提交作业。作业客户端最终调用RPC方法submitJob将作业提交到作业追踪器端。作业追踪器会为每个作业创建一个作业进程对象,该对象维护了作业的运行时信息,它在作业运行过程中一直存在,主要用于跟踪正在运行作业的运行状态和进度。以队列为单位管理作业和资源,每个队列分配有一定量的资源,每个用户属于一个或多个队列且只能使用所属队列中的资源,检查作业配置的内存使用量是否合理。作业进程对象为每个任务创建一个任务进程对象用于维护对应的映射任务、规约任务、安装任务以及清除任务的运行信息。

任务的执行过程具体包括:映射任务执行过程:先将对应的分片迭代解析成一个个键/值对。依次调用用户自定义的映射函数map进行处理。最终将临时结果存放到本地磁盘上,其中临时数据被分成若干个分区,每个分区将被一个归约任务处理。归约任务执行过程:从远程节点上读取映射任务中间结果,称为混洗阶段。按照键对键/值对进行排序,称为排序阶段。依次读取<键,值列表>,调用用户自定义的归约函数处理。将最终结果存到分布式文件系统上,称为归约阶段。

在任务执行过程中,每个任务的最新进度首先由任务通过RPC汇报给任务追踪器,然后任务追踪器通过心跳周期性地将资源使用情况和任务运行进度汇报给作业追踪器。作业追踪器监控资源使用情况以及任务运行进度,并根据资源使用情况进行任务调度。

待所有任务执行完成后,整个作业执行成功。作业执行结果保存在分布式文件系统中,文件名为part-0000和part-0001。

本实施例提供的一种基于映射规约模型分布式文件系统作业的运行方法,基于映射归约模型分布式文件系统作业运行方法通过客户端将作业提交到作业追踪器上,然后由作业追踪器将作业分解成若干个任务,并对这些任务进行调度和监控,以保障这些程序运行成功,而任务追踪器则启动作业追踪器发来的任务,并向作业追踪器汇报这些任务的运行状态和本节点上资源的使用情况。采用上述方法作业运行所需的程序只需要编写映射和规约函数,之后通过调用就可以实现自动运行作业,极大的减少了人力成本而且提高了运行效率。

虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1