流处理方法及装置与流程

文档序号:15744046发布日期:2018-10-23 22:46阅读:108来源:国知局

本发明涉及信息技术领域,特别涉及一种流处理方法及装置。



背景技术:

工作流(Work flow)是对工作流程及工作流程中各业务之间如何前后组织在一起的逻辑规则的抽象、概括、描述。工作流概念起源于生产组织和办公自动化领域,是针对日常工作中具有固定程序活动而提出的一个概念,目的是通过将工作分解成定义良好的流程或角色,按照一定的规则和过程来执行这些流程并对其进行监控,达到提高工作效率、更好的控制过程、增强对客户的服务、有效管理业务流程等目的。工作流建模,即将工作流在计算机中以恰当的模型进行表示并对其实施计算。通过工作流建模,工作流可以通过工作流系统来管理。

流处理系统的主要功能是通过计算机技术的支持去定义、执行和管理工作流,协调工作流执行过程中流程之间以及群体成员之间的信息交互。流处理系统通常由工作流程设计工具、工作流程管理工具组成,工作流程设计工具供用户设计自己的工作流程定义,工作流程管理工具负责管理工作流程的执行。在工作流系统工作过程中,工作流程实例包括一个或多个业务(Task),每个业务代表需要进行的某项工作。

Apache Storm是现有技术中典型的流处理系统,由Master-Slave(主-从)架构组成,Nimbus是主进程,Supervisor是运行业务的从进程。流处理系统Storm与分布式文件系统建立网络连接,分布式文件系统存放需要流处理系统Storm进行处理的数据,分布式文件系统包括Master Server(主服务器)和Data Server(数据服务器),Master Server是元数据管理节点,管理数据块的分布情况,Data Server是数据存储节点点,存储数据块数据,Storm与数据存储节点点设置在不同服务器上。

在Storm的流处理作业中,Storm首先需要从数据服务器获取需要进行流处理的数据。具体地,数据服务器提供数据查询接口,Storm通过网络输入参数至数据查询接口,通过网络从数据服务器获取数据,然后将获取到的数据加载到Supervisor中。

由于在现有技术中,流处理系统需要通过网络从数据存储节点获取数据,因此获取数据的速度受网络性能限制,会导致整个流处理的性能受限于网络,在流处理系统与数据存储节点之间的网络传输速度较低时,会极大地影响流处理的速度。



技术实现要素:

为解决现有技术的问题,本发明实施例提供一种流处理方法及装置,可克服因流处理系统与数据存储节点之间的网络传输速度较低而影响流处理的速度的技术问题。

第一方面,本发明实施例提供一种流处理方法,该方法应用于流处理系统,流处理系统包括流处理管理单元以及流处理计算单元,该方法包括:

流处理管理单元接收客户端发送的流处理任务,其中流处理任务包括流处理逻辑和待处理文件在分布式文件系统的路径,分布式文件系统包括元数据管理节点和多个数据存储节点,每一数据存储节点设置有流处理计算单元;

流处理管理单元从元数据管理节点获取待处理文件的路径对应的各个块的块号,以及各个块所在的数据存储节点的网络地址;

流处理管理单元分别将流处理逻辑和各个块的块号发送至各个块所在的数据存储节点的流处理单元;

流处理计算单元从所在的数据存储节点获取接收到的块号对应的块数据,针对接收到的块号对应的块数据执行流处理逻辑。

由于本发明实施例将流处理计算单元分布设置在各数据存储节点上,并由流处理管理单元根据待处理文件的路径将流处理任务发送到对应的数据存储节点,由对应的数据存储节点上的流处理计算单元直接在本地读取待处理文件对应的块数据,并将读取到的块数据运行流处理逻辑,由于流处理计算单元本地读取待处理文件,因此可克服因流处理系统与数据存储节点之间的网络传输速度较低而影响流处理的速度的技术问题。

并且,由于待处理文件被分散为块数据,分别在不同的流处理计算单元并行执行流处理逻辑,因此可以进一步加快流处理速度,提高处理效率。

在本发明实施例的一种实现方式中,数据存储节点设置有数据管理单元,流处理计算单元设置为程序库,数据管理单元通过加载程序库执行流处理计算单元的功能。

由于将流处理计算单元通过程序库设置在数据管理单元中,而数据管理单元可直接读取块数据,在数据管理单元可读取块数据之后,即可执行流处理逻辑,可加快流处理速度。

在本发明实施例的另一种实现方式中,该方法还包括:

流处理计算单元将执行流处理逻辑获取的处理结果发送至流处理管理单元。

在本发明实施例的另一种实现方式中,元数据管理节点记录有待处理文件在分布式文件系统的路径与各个块的块号的第一对应关系,流处理管理单元从元数据管理节点获取路径对应的各个块的块号,以及各个块的块号所在的数据存储节点的网络地址具体包括:

流处理管理单元根据待处理文件在分布式文件系统的路径从第一对应关系获取各个块的块号。

在本发明实施例的另一种实现方式中,元数据管理节点记录有各个块的块号与各个块的块号所在的数据存储节点的网络地址的第二对应关系,流处理管理单元从元数据管理节点获取路径对应的各个块的块号,以及各个块的块号所在的数据存储节点的网络地址具体包括:

流处理管理单元根据各块号从第二对应关系获取各块号所在的数据存储节点的网络地址。

第二方面,本发明实施例提供一种流处理系统,包括流处理管理单元以及流处理计算单元,

流处理管理单元,用于接收客户端发送的流处理任务,其中流处理任务包括流处理逻辑和待处理文件在分布式文件系统的路径,分布式文件系统包括元数据管理节点和多个数据存储节点,每一数据存储节点设置有流处理计算单元;

流处理管理单元,还用于从元数据管理节点获取路径对应的各块号,以及各块号所在的数据存储节点的网络地址;

流处理管理单元,还用于分别将流处理逻辑和与各网络地址对应的块号发送至对应的数据存储节点的流处理单元;

流处理计算单元,用于从所在的数据存储节点获取接收到的块号对应的块数据,针对接收到的块号对应的块数据执行流处理逻辑。

在本发明实施例的一种实现方式中,数据存储节点设置有数据管理单元,流处理计算单元设置为程序库,数据管理单元通过加载程序库执行流处理计算单元的功能。

在本发明实施例的另一种实现方式中,流处理计算单元,还用于将执行流处理逻辑获取的处理结果发送至流处理管理单元。

在本发明实施例的另一种实现方式中,元数据管理节点记录有待处理文件在分布式文件系统的路径与各个块的块号的第一对应关系,流处理管理单元具体用于:

根据待处理文件在分布式文件系统的路径从第一对应关系获取各个块的块号。

在本发明实施例的另一种实现方式中,元数据管理节点记录有各个块的块号与各个块的块号所在的数据存储节点的网络地址的第二对应关系,流处理管理单元具体用于:

根据各个块的块号从第二对应关系获取各块号所在的数据存储节点的网络地址。

第三方面,本发明实施例提供一种流处理管理单元,执行上述流处理系统中的流处理管理单元的功能。

第四方面,本发明实施例提供一种主机,包括存储器、处理器和总线,存储器、处理器与总线连接,存储器存储有程序指令,处理器执行程序指令以实现上述流处理系统中的流处理管理单元的功能。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据本发明实施例的流处理系统的结构示意图;

图2是根据本发明实施例的流处理系统的另一结构示意图;

图3是根据本发明实施例的流处理方法的数据交互图;

图4是根据本发明实施例的流处理系统的装置结构示意图;

图5是根据本发明实施例的主机的装置结构示意图。

具体实施方式

首先请参见图1,图1是根据本发明实施例的流处理系统与分布式文件系统和客户端的连接示意图,如图1所示,流处理系统包括流处理管理单元302以及多个流处理计算单元1011、1021、……、及1031,分布式文件系统包括元数据管理节点201和多个数据存储节点101、102、……、及103。

在本发明实施例中,客户端301与流处理管理单元302连接,流处理管理单元302分别与元数据管理节点201和多个数据存储节点101、102、……、103连接。

客户端301用于接收用户提交的流处理作业,在本发明实施例中,用户提交流处理作业时指明待处理数据在分布式文件系统的路径,并规定要对待处理数据进行何种处理。

流处理任务待处理文件在分布式文件系统的路径举例而言可以是URL(Universal Resource Locator的缩写,统一资源定位符),URL为分布式文件系统的存储标识,通过URL可在元数据管理节点201查找到待处理文件对应的各个块的块号。

客户端301根据用户提交的流处理作业产生流处理任务,流处理任务包括流处理逻辑和待处理数据在分布式文件系统的路径,其中流处理逻辑定义了对待处理数据进行何种处理,举例而言,流处理逻辑可规定在待处理数据中搜索异常事件。

客户端301向流处理管理单元302发送流处理任务,流处理管理单元302根据流处理任务进行调度,选择流处理计算单元从分布式文件系统获取待处理文件,并以流处理逻辑对待处理文件进行处理。

举例而言,流处理系统可基于apache flink架构实现,客户端301为apache flink的client(客户端)进程,流处理管理单元302为apache flink的job manager(工作管理器)进程,流处理计算单元为apache flink的task manager(作业管理器)进程。

元数据管理节点201设置有元数据管理单元2011和数据库2012,元数据管理单元2011提供接口,外部设备可通过接口查询数据库2012。数据库2012记录了分布式文件系统中的待处理文件在分布式文件系统的路径与各个块的块号的第一对应关系,以及各个块的块号与各个块所在的数据存储节点的网络地址的第二对应关系。

在分布式存储系统中,待处理文件以碎片形式存储在数据存储节点的数据库中,其中碎片指不同的块数据,每一块数据对应一块号,元数据管理节点记录分布式存储系统中所有文件的路径与各个块的块号之间的对应关系,以及每一块号分别对应存储于哪一数据存储节点的数据库。

数据存储节点101设置有流处理计算单元1011和数据库1012,数据库1012记录有块数据以及块号与块数据之间的对应关系,流处理计算单元1011可访问数据库1012,通过块号从数据库1012获取对应的块数据。

在图1中,数据存储节点102和103与数据存储节点101具有类似结构,区别在于自身数据库记录的块数据不相同,于此不作赘述。

举例而言,分布式文件系统可通过Hadoop实现,数据库2012、数据库1012、数据库1022……以及数据库1032可通过Hbase(Hadoop Database,Hadoop数据库)实现,元数据管理单元2011可为Hbase数据库的hmaster进程。

在本发明实施例中,客户端301和流处理管理单元302可设置在同一主机上,并通过网络与元数据管理节点201和数据存储节点101、102……103分别建立数据连接。

在一些示例中,客户端301和流处理管理单元302也可设置在不同主机上,本发明实施例对此不作限定。

为了便于理解,可参见图2,图2是根据本发明实施例的流处理系统的另一结构示意图,如图2所示,客户端301和流处理管理单元302设置在主机10上,主机10还包括操作系统303和硬件304,硬件304用于承载操作系统303的运行,硬件304包括物理网卡3041,客户端301和流处理管理单元302分别以进程的形式运行在操作系统303上,并通过物理网卡3041访问网络50。

并且,元数据管理节点201包括数据库2012、元数据管理单元2011、操作系统2013和硬件2014,数据库2012和元数据管理单元2011分别以进程的形式运行在操作系统2013上,硬件2014用于承载操作系统2013的运行,硬件2014包括物理网卡20141,物理网卡20141接入网络50,元数据管理单元2011提供接口,外部设备可通过接口来访问数据库2012。

并且,数据存储节点101包括数据1012、流处理计算单元1011、操作系统1013以及硬件1014,数据库1012和流处理计算单元1011分别以进程的形式运行在操作系统1013上,硬件1014用于承载操作系统2013的运行,硬件1014包括物理网卡10141,物理网卡10141接入网络50,在本发明实施例中,流处理计算单元1011可访问数据库1012。

数据存储节点102和103的结构与数据存储节点101类似,于此不作赘述。

举例而言,流处理管理单元302与客户端301、元数据管理单元2011和各流处理计算单元101、1021、……、以及1031之间可通过RPC(Remote Procedure Call Protocol,远程过程调用协议)实现通信。

基于以上架构,在本发明实施例提供一种流处理方法,流处理管理单元302接收客户端301发送的流处理任务,其中流处理任务包括流处理逻辑和待处理文件在分布式文件系统的路径;流处理管理单元302从元数据管理节点201获取路径对应的各个块的块号,以及各个块的块号所在的数据存储节点的网络地址;流处理管理单元302分别将流处理逻辑和与各网络地址对应的块号发送至对应的数据存储节点的流处理单元;流处理计算单元从所在的数据存储节点获取接收到的块号对应的块数据,针对接收到的块号对应的块数据执行流处理逻辑。

由于本发明实施例将流处理计算单元分布设置在各数据存储节点上,并由流处理管理单元根据待处理文件的路径将流处理任务发送到对应的数据存储节点,由对应的数据存储节点上的流处理计算单元直接在本地读取待处理文件对应的块数据,并将读取到的块数据运行流处理逻辑,由于流处理计算单元本地读取待处理文件,因此可克服因流处理系统与数据存储节点之间的网络传输速度较低而影响流处理的速度的技术问题。

为了进一步清楚说明,以下请参见图3,图3是根据本发明实施例的流处理方法的数据交互图,如图3所示,流处理方法包括以下步骤:

步骤401:流处理管理单元302接收客户端301发送的流处理任务,其中流处理任务包括流处理逻辑和待处理文件在分布式文件系统的路径。

举例而言,客户端301可为apache flink系统中的client进程,流处理管理单元302可为apache flink系统中的job manager进程。

步骤402:流处理管理单元302向元数据管理节点201发送查询请求,其中,查询请求携带有待处理文件在分布式文件系统的路径。

举例而言,查询请求包括输入参数和查询指令,流处理管理单元302以待处理文件在分布式文件系统的路径为输入参数,并将输入参数及控制指令发送至元数据管理节点201的元数据管理单元2011提供的用于访问数据库2012的接口中。

步骤403:元数据管理节点201根据查询请求返回路径对应的各个块的块号以及各个块对应的数据存储节点的网络地址至流处理管理单元302。

承上可知,元数据管理节点201的数据库2012记录有待处理文件在分布式文件系统的路径与各个块的块号的第一对应关系和各个块的块号与各个块所在的数据存储节点的网络地址的第二对应关系,因此,元数据管理节点201的流处理管理单元302根据待处理文件在分布式文件系统的路径从第一对应关系获取各个块的块号,并根据各个块的块号从第二对应关系获取各个块所在的数据存储节点的网络地址。

假设流处理管理单元302获取的块号分别为块号1和块号2,值得注意的是,在实际应用中,块号包括多个,于此为简要说明,仅以两个块号为例进行说明,流处理管理单元302根据块号1查询到数据存储节点101的网络地址A,根据块号2查询到数据存储节点102的网络地址B。

步骤404:流处理管理单元302将流处理逻辑和块号1发送至流处理计算单元1011。

在本步骤中,流处理管理单元302根据块号1查询到数据存储节点101的网络地址A之后,将流处理任务和网络地址A对应的块号1发送至数据存储节点101的流处理计算单元1011。

步骤405:流处理管理单元302将流处理逻辑和块号2发送至流处理计算单元1021。

在本步骤中,流处理管理单元302根据块号2查询到数据存储节点102的网络地址B之后,将流处理任务和网络地址B对应的块号2发送至数据存储节点102的流处理计算单元1021。

在步骤404和405中,流处理计算单元1011可例如为apache flink系统中的一个task manager进程,流处理计算单元1021可例如为apache flink系统中的另一个task manager进程。

步骤406:流处理计算单元1011从所在的数据存储节点101获取接收到的块号1对应的块数据,针对接收到的块号1对应的块数据执行流处理逻辑。

在本步骤中,流处理计算单元1011从所在的数据存储节点101的数据库1012获取从流处理管理单元302接收到的块号1对应的块数据,并针对块号1对应的块数据执行流处理逻辑。

在一些示例中,数据存储节点101进一步设置有数据管理单元,数据管理单元用于访问数据库1012以管理数据库1012中的块数据。

举例而言,分布式文件系统可为Hadoop,Hadoop的数据库通过Hbase数据库实现,元数据管理单元2011为Hbase数据库的Hmaster进程,流处理计算单元设置为程序库,数据管理单元通过加载程序库执行流处理计算单元的功能。

进一步,数据管理单元例如为Hbase数据库的HReigonServer进程,HReigonServer进程将task manager进程嵌入到HReigonServer进程中,task manager进程可设置为格式是jar包或so文件的程序库,并提供启动接口,HReigonServer进程在加载程序库之后通过运行启动接口即可实现task manager进程的功能。

由于在本发明实施例中,实现task manager进程的功能的HReigonServer进程可在本地读取数据库1012的块数据,因此获取块数据的过程可避免受到外部网络性能的影响,且由于HReigonServer进程在进程内直接访问数据库1012,即直接从内存读取块数据,因此获取块数据的速度更快,可有效提高流处理的效率。

在另一些示例中,数据管理单元与流处理计算单元1011可同时运行在操作系统1013,流处理计算单元1011通过数据管理单元提供的接口访问数据库1012,在该些示例中,虽然不是通过HReigonServer进程在进程内直接访问数据库1012,但流处理计算单元1011可在本地访问数据库1012,亦可避免到外部网络性能的影响。

步骤407:流处理计算单元1021从所在的数据存储节点102获取接收到的块号2对应的块数据,针对接收到的块号2对应的块数据执行流处理逻辑。

与上一步骤类似,在一些示例中,数据存储节点102设置有数据管理单元,数据管理单元用于访问数据库1022以管理块数据。分布式文件系统可为Hadoop,Hadoop的数据库通过Hbase数据库实现,元数据管理单元2011为Hbase数据库的Hmaster进程,流处理计算单元1011设置为程序库,数据管理单元通过加载程序库执行流处理计算单元的功能。

进一步,数据管理单元例如为Hbase数据库的HReigonServer进程,HReigonServer进程将task manager进程嵌入到HReigonServer进程中,task manager进程可设置为格式是jar包或so文件的程序库,并提供启动接口,HReigonServer进程在加载程序库之后通过运行启动接口即可实现task manager进程的功能。

由于在本发明实施例中,实现task manager进程的功能的HReigonServer进程可在本地读取数据库1022的块数据,因此获取块数据的过程可避免受到外部网络性能的影响,且由于HReigonServer进程在进程内直接访问数据库1022,因此获取块数据的速度更快,可有效提高流处理的效率。

在另一些示例中,数据管理单元与流处理计算单元1021可同时运行在操作系统1023,流处理计算单元1021通过数据管理单元提供的接口访问数据库1022,在该些示例中,虽然不是通过HReigonServer进程在进程内直接访问数据库1012,但流处理计算单元1021可在本地访问数据库1022,亦可避免到外部网络性能的影响。

步骤408:流处理计算单元将对块号1对应的块数据执行流处理逻辑获取的第一处理结果发送至流处理管理单元302。

步骤409:流处理计算单元将对块号2对应的块数据执行流处理逻辑获取的第二处理结果发送至流处理管理单元302。

综上,由于本发明实施例将流处理计算单元分布设置在各数据存储节点上,并由流处理管理单元根据待处理文件的路径将流处理任务发送到对应的数据存储节点,由对应的数据存储节点上的流处理计算单元直接在本地读取待处理文件对应的块数据,并将读取到的块数据运行流处理逻辑,由于流处理计算单元本地读取待处理文件,因此可克服因流处理系统与数据存储节点之间的网络传输速度较低而影响流处理的速度的技术问题。

并且,由于待处理文件被分散为块数据,分别在不同的流处理计算单元并行执行流处理逻辑,因此可以进一步加快流处理速度,提高处理效率。

值得注意的是,在本发明的可选实施例中,流处理系统90还可以基于Storm、Spark或Samza架构实现。

以下请参见图4,图4是根据本发明实施例的流处理管理单元的装置结构示意图,如图4所示,流处理管理单元302包括:

接收模块601,用于接收客户端发送的流处理任务,其中流处理任务包括流处理逻辑和待处理文件在分布式文件系统的路径,分布式文件系统包括元数据管理节点和多个数据存储节点,每一数据存储节点设置有流处理计算单元;

查询模块602,用于从元数据管理节点获取路径对应的各个块的块号,以及各个块所在的数据存储节点的网络地址;

发送模块603,用于分别将流处理逻辑和各个块的块号发送至各个块所在的数据存储节点的流处理单元。

可选地,接收单元601还用于接收流处理计算单元发送的执行流处理逻辑获取的处理结果。

可选地,元数据管理节点记录有待处理文件在分布式文件系统的路径与各个块的块号的第一对应关系,各个块的块号与各个块所在的数据存储节点的网络地址的第二对应关系,查询模块602具体用于:

根据待处理文件在分布式文件系统的路径从第一对应关系获取各个块的块号;

根据各个块的块号从第二对应关系获取各个块所在的数据存储节点的网络地址。

以下请参见图5,图5是根据本发明实施例的主机的装置结构示意图,如图5所示,主机50包括存储器502、处理器501和总线503,存储器502、处理器501与总线503连接,存储器502存储有程序指令,处理器501执行程序指令以实现上述流处理系统中的流处理管理单元302的功能。

由于本发明实施例将流处理计算单元分布设置在各数据存储节点上,并由流处理管理单元根据待处理文件的路径将流处理任务发送到对应的数据存储节点,由对应的数据存储节点上的流处理计算单元直接在本地读取待处理文件对应的块数据,并将读取到的块数据运行流处理逻辑,由于流处理计算单元本地读取待处理文件,因此可克服因流处理系统与数据存储节点之间的网络传输速度较低而影响流处理的速度的技术问题。

并且,由于待处理文件被分散为块数据,分别在不同的流处理计算单元并行执行流处理逻辑,因此可以进一步加快流处理速度,提高处理效率。

需说明的是,以上描述的任意装置实施例都仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部进程来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,进程之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

所属领域的技术人员可以清楚地了解到,上述描述的系统、装置或单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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