CN110704536A - 分布式数据处理方法、装置、系统及电子设备 - Google Patents
分布式数据处理方法、装置、系统及电子设备 Download PDFInfo
- Publication number
- CN110704536A CN110704536A CN201910926425.8A CN201910926425A CN110704536A CN 110704536 A CN110704536 A CN 110704536A CN 201910926425 A CN201910926425 A CN 201910926425A CN 110704536 A CN110704536 A CN 110704536A
- Authority
- CN
- China
- Prior art keywords
- data
- sub
- node
- fragment data
- processing
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种分布式数据处理方法、装置、系统及电子设备,涉及信息处理技术领域。包括:主控节点获取待处理的非结构化数据的相关信息,将非结构化数据的相关信息划分为各分片数据,发送给至少一个读写节点,每个读写节点将接收到的每个分片数据划分为至少两个子分片数据,并发送给至少一个工作节点,每个工作节点对接收到的每个子分片数据进行相应的处理。本申请通过设置不同处理任务的主控节点、读写节点、工作节点,实现了对非结构化数据的相关信息的分布式处理;将非结构化数据的相关信息分配到不同节点进行并行处理,或者将非结构化数据的相关信息通过节点的不同进程进行并行处理,从而实现了对大规模非结构化数据的高效处理。
Description
技术领域
本申请涉及数据处理技术领域,具体而言,本申请涉及一种分布式数据处理方法、装置、系统及电子设备。
背景技术
深度学习时代,符合要求的训练数据是好的模型产出的基础,在机器视觉领域更是如此。但是如何对超大规模的非结构化数据进行高效的处理,以达到训练的要求一直是个难题。
在计算机视觉数据清洗领域里有两个难点:一个如何对大规模的数据进行处理,一个是如何对非结构化数据进行处理。现有技术中的一些开源的框架要么解决了前者,如Hadoop,Spark,Flink等,但它们侧重文本处理,无法对输入格式复杂多变的非结构化的图片、视频等数据进行处理;要么解决了后者,如TensorFlow,Caffee等,但是这些框架偏重模型训练,无法处理大规模的输入数据集。
发明内容
本申请提供了一种分布式数据处理方法、装置、系统及电子设备,用于解决现有技术中无法实现的对于大规模非结构化输入数据进行处理的问题。
第一方面,本申请提供了一种分布式数据处理方法,该方法包括:
获取待处理的非结构化数据的相关信息,将非结构化数据的相关信息进行分片处理,得到各分片数据;
将各分片数据发送给至少一个读写节点,以使每个读写节点将接收到的每个分片数据读取为至少两个子分片数据,并将各子分片数据发送给至少一个工作节点,以使每个工作节点对接收到的每个子分片数据进行相应的处理;
其中,若一个工作节点接收到至少两个子分片数据,则工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。
第二方面,本申请提供了一种分布式数据处理方法,该方法包括:
接收主控节点发送的分片数据,将接收到的每个分片数据读取为至少两个子分片数据;
将各子分片数据发送给至少一个工作节点,以使每个工作节点对接收到的每个子分片数据进行相应的处理;
其中,若一个工作节点接收到至少两个子分片数据,则工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。
第三方面,本申请提供了一种分布式数据处理方法,该方法包括:
主控节点获取待处理的非结构化数据的相关信息,将非结构化数据的相关信息进行分片处理,得到各分片数据,并将各分片数据发送给至少一个读写节点;
每个读写节点将接收到的每个分片数据划分为至少两个子分片数据,并将各子分片数据发送给至少一个工作节点;
每个工作节点对接收到的每个子分片数据进行相应的处理;
其中,若一个工作节点接收到至少两个子分片数据,则工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。
第四方面,本申请提供了一种分布式数据处理装置,该装置包括:
获取模块,用于获取待处理的非结构化数据的相关信息,将非结构化数据的相关信息进行分片处理,得到各分片数据;
第一发送模块,用于将各分片数据发送给至少一个读写节点,以使每个读写节点将接收到的每个分片数据读取为至少两个子分片数据,并将各子分片数据发送给至少一个工作节点,以使每个工作节点对接收到的每个子分片数据进行相应的处理;
其中,若一个工作节点接收到至少两个子分片数据,则工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。
第五方面,本申请提供了一种分布式数据处理装置,该装置包括:
接收模块,用于接收主控节点发送的分片数据,将接收到的每个分片数据读取为至少两个子分片数据;
第二发送模块,用于将各子分片数据发送给至少一个工作节点,以使每个工作节点对接收到的每个子分片数据进行相应的处理;
其中,若一个工作节点接收到至少两个子分片数据,则工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。
第六方面,本申请提供了一种分布式数据处理系统,该系统包括:主控节点、读写节点、工作节点;
主控节点,用于获取待处理的非结构化数据的相关信息,将非结构化数据的相关信息进行分片处理,得到各分片数据,并将各分片数据发送给至少一个读写节点;
读写节点,用于将接收到的每个分片数据读取为至少两个子分片数据,并将各子分片数据发送给至少一个工作节点;
工作节点,用于对接收到的每个子分片数据进行相应的处理;
其中,若一个工作节点接收到至少两个子分片数据,则工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。
第七方面,本申请提供了一种电子设备,该电子设备包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中一个或多个应用程序被存储在存储器中并被配置为由一个或多个处理器执行,一个或多个程序配置用于:执行如本申请的第一方面所示的分布式数据处理方法对应的操作或者第二方面所示的分布式数据处理方法对应的操作或者第三方面所示的分布式数据处理方法对应的操作。
本申请提供的技术方案带来的有益效果是:
本申请提供的分布式数据处理方法、装置、系统及电子设备,主控节点获取待处理的非结构化数据,将非结构化数据进行分片处理,得到各分片数据,并将各分片数据发送给至少一个读写节点;每个读写节点将接收到的每个分片数据读取为至少两个子分片数据,并将各子分片数据发送给至少一个工作节点;每个工作节点对接收到的每个子分片数据进行相应的处理;其中,若一个工作节点接收到至少两个子分片数据,则工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。本申请通过设置不同处理任务的主控节点、读写节点、工作节点,实现了对非结构化数据的分布式处理;将非结构化数据的相关信息分配到不同节点进行并行处理,或者将非结构化数据的相关信息通过节点的不同进程进行并行处理,从而实现了对大规模非结构化数据的高效处理。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的分布式数据处理方法的流程图;
图2为本申请实施例提供的分布式数据处理方法的流程图;
图3为本申请实施例提供的分布式数据处理方法的流程图;
图4为本申请实施例提供的分布式数据处理装置的示意图;
图5为本申请实施例提供的分布式数据处理装置的示意图;
图6为本申请实施例提供的分布式数据处理系统的示意图;
图7为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
为使本申请的目的、技术方案和优点更加清楚,下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
本申请技术方案中的非结构化数据可以为数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表现的数据。包括所有格式的办公文档、文本、图片、XML、HTML、各类报表、图像和音频/视频信息等。
本申请技术方案中的主控节点为管理节点,读写节点、工作节点分别向主控节点进行注册之后,主控节点可以与读写节点、工作节点进行通信。
图1为本申请实施例提供的一种分布式数据处理方法的流程示意图,如图1所示,该方法可以包括:
步骤S101,主控节点获取待处理的非结构化数据的相关信息,将非结构化数据的相关信息进行分片处理,得到各分片数据;将各分片数据发送给至少一个读写节点;
其中,非结构化数据的相关信息可以为非结构化数据本身,也可以为非结构化数据的路径信息或者非结构化数据的属性信息等。属性信息可以包括数据格式、数据类型、数据量等。主控节点接收用户终端发送的待处理的非结构化数据的相关信息组成的数据集,将非结构化数据的相关信息划分为至少一个分片数据,划分的依据可以包括文件数量、文件大小、文件类型等。可以理解的是,在读写节点为多个时,每个读写节点接收到的分片数据不同,以实现由多个读写节点对不同的分片数据的读取,由多个读写节点实现对待处理数据的并行处理。
具体的,主控节点向多少个读写节点发送分片数据,本申请实施例不做限定,是可以是根据实际需求配置的,如可以根据分片数据的数量确定所用的读写节点的个数,根据各读写节点的数据处理能力,确定向每个读写节点发送多少个分片数据。
主控节点将划分之后得到的分片数据发送给至少一个读写节点,主控节点在进行分片数据发送时,可以按照分片数据的数据量确定接收分片数据的读写节点的数量,当分片数据的数量较多时,为了提高数据处理速度,主控节点将各个分片数据依次分配到多个读写节点进行并行处理。
在一种可能的实现方式中,将非结构化数据的相关信息进行分片处理,得到各分片数据,包括:
通过调用分片函数将非结构化数据的相关信息进行分片处理,得到各分片数据。
在实际应用中,分片函数(slice_reader)由用户自定义,负责具体的分片逻辑;主控节点在运行到分片逻辑时,会调用此函数,对用户指定数据进行分片。通过回调函数的方式进行调用。也可以通过其他方式进行调用,本申请实施例对此不做限定。
在一种可能的实现方式中,分片函数是通过以下方式确定的:
接收用户的分片函数配置操作,基于分片函数配置操作确定分片函数。
在实际应用中,可以通过用户自定义的方式配置分片函数,从而将非结构化数据的相关信息划分为分片数据。
本申请技术方案中的分片函数可以用户自定义,通过自定义的方式使得用户能够对复杂的非结构化数据的相关信息进行合理的并行粒度划分。
步骤S102,读写节点将接收到的每个分片数据读取为至少两个子分片数据,并将各子分片数据发送给至少一个工作节点;
具体的,读写节点接收到主控节点发送的分片数据之后,通过读取的方式将每个分片数据读取为至少两个子分片数据,其中,子分片数据可以为工作节点能够处理的最小数据处理单位。
具体的,读写节点向多少个工作节点发送子分片数据,本申请实施例不做限定,是可以是根据实际需求配置的,如可以根据子分片数据的数量确定所用的工作节点的个数,根据各工作节点的数据处理能力,确定向每个工作节点发送多少个子分片数据。
读写节点将读取之后得到的子分片数据发送给至少一个工作节点,读写节点在进行分片数据发送时,可以按照子分片数据的数据量确定接收子分片数据的工作节点的数量,当子分片数据的数量较多时,为了提高数据处理速度,读写节点将各个子分片数据依次分配到多个工作节点进行并行处理。
其中,每个读写节点每次只能处理一个分片数据,如果需要处理多个分片数据,则可以设置每个分片数据的处理顺序,按照处理顺序,依次进行处理。例如,可以按照读写节点接收到分片数据的时间先后顺序进行处理。
在一示例中,主控节点将接收到的非结构化数据进行分片处理,得到8个分片数据,读写节点的数量为4,各个读写节点对应的设备的处理能力相同,则将8个分片数据平均分配到4个读写节点,每个读写节点接收到2个分片数据,4个读写节点进行并行处理。
在一种可能的实现方式中,将接收到的分片数据读取为至少两个子分片数据,包括:
通过调用读取函数将非结构化数据的相关信息进行分片处理,得到各子分片数据。
在实际应用中,读写节点启动时会加载主控节点传送过来的用户注册类,并在接收到分片数据时,调用该注册类,将分片数据读取为子分片数据。
在一种可能的实现方式中,读取函数是通过以下方式确定的:
接收主控节点发送的读取函数配置信息,基于读取函数配置信息确定读取函数,读取函数配置信息是主控节点根据用户针对读取函数的配置操作生成的。
在实际应用中,可以通过用户自定义的方式配置读取函数,从而将分片数据读取为子分片数据。具体的,用户从主控节点处针对读取函数进行配置操作,主控节点根据用户的读取函数配置操作生成读取函数配置信息,读写节点接收到主控节点发送的读取函数配置信息之后,根据读取函数配置信息调用读取函数。
本申请技术方案中的读取函数,通过自定义的方式使得用户能够对复杂的非结构化数据的相关信息进行合理的并行粒度划分。
步骤S103,工作节点对接收到的每个子分片数据进行相应的处理;
其中,若一个工作节点接收到至少两个子分片数据,则工作节点开启相应数量的进程,由相应数量的进程对接收到至少两个子分片数据进行并行处理。工作节点的每个进程每次只能处理一个子分片数据,如果需要一个进程处理多个子分片数据,则可以设置每个子分片数据的处理顺序,按照处理顺序,依次进行处理。例如,可以按照进程接收到子分片数据的时间先后顺序进行处理。
在一示例中,读写节点将接收到的分片数据读取为10个子分片数据,当前读写节点对应的工作节点的数量为3,分别为:工作节点A1、工作节点A2、工作节点A3,读写节点根据各个工作节点的处理能力不同,将4个子分片数据发送给工作节点B1、将3个子分片数据发送给工作节点B2、将3个子分片数据发送给工作节点B3,工作节点B1开启4个进程,工作节点B2开启3个进程,工作节点B3开启3个进程,工作节点A1、工作节点A2、工作节点A3同时进行并行处理,每个工作节点对应的进程也同时进行并行处理。
每个工作节点收到子分片数据之后,可以通过回调函数的方式调用相应的处理函数进行处理,并将处理结果返回给工作节点对应的读写节点或者与读写节点进行共享存储。其中,回调函数调用的处理函数可以预先根据不同的处理需要进行配置。
在一示例中,主控节点获取的非结构化数据为图片数据或者视频数据中的一帧画面,将这些数据划分多个分片数据,分配到多个读写节点进行读取,各个读写节点读取出子分片数据后,分配到多个工作节点进行处理,各个工作节点将接收到的各子分片数据根据对应的处理函数提取出图片数据或者视频数据中的人脸图像。
在一种可能的实现方式中,该方法还包括:获取各子分片数据的处理结果;根据各子分片数据所对应的分片标识,将各子分片数据的处理结果进行汇总,并将汇总后的数据存储到指定存储空间。
在实际应用中,读写节点接收所有工作节点发送的子分片数据的处理结果,或者根据子分片数据对应的分片标识在与工作节点共享的存储空间读取各子分片数据的处理结果,读写节点可以按照不同的分片标识将子分片数据的处理结果进行汇总,并将汇总后的处理结果存储到与主控节点共享的存储空间。
在一种可能的实现方式中,该方法还包括:获取各分片数据的处理结果,其中,各分片数据的处理结果是读写节点根据相应的工作节点返回的子分片数据的处理结果进行汇总得到的;根据各分片数据所对应的分片标识,将各分片数据的处理结果进行汇总,并将汇总后的数据进行存储。
在实际应用中,主控节点可以接收所有读写节点发送的分片数据的处理结果,或者根据分片数据对应的分片标识在与读写节点共享的存储空间读取各分片数据的处理结果,主控节点可以按照不同的分片标识将分片数据的处理结果进行汇总,并将汇总后的处理结果进行存储。主控节点可以通过post_handler函数将各个读写节点返回的处理结果进行汇总。
在一种可能的实现方式中,该方法还包括:接收每个读写节点或者工作节点发送的心跳信号,心跳信号中携带有各节点的状态信息;其中,状态信息包括以下至少一项:存活状态信息、处理进度信息、处理异常信息。
在实际应用中,主控节点接收所有读写节点和工作节点发送的心跳信号,通过心跳信息了解各个读写节点、工作节点运行的状态信息,包括:存活状态信息、处理进度信息、处理异常信息。存活状态信息即该节点当前是否存活,只有存活的节点才有可能执行对应的工作任务;处理进度信息即该节点执行当前任务的执行进度信息;处理异常信息即该节点执行当前工作任务是否发生异常,以及相关的异常信息等。
在一种可能的实现方式中,该方法还包括:当读写节点的状态信息满足第一预设条件时,将状态信息满足第一预设条件的读写节点所对应的分片数据发送至其他读写节点;当工作节点的状态信息满足第二预设条件时,向状态信息满足第二预设条件的工作节点对应的读写节点发送通知消息,以使对应的读写节点将通知消息所对应的工作节点所对应的子分片数据发送至其他工作节点,通知消息中携带有状态信息满足第二预设条件的工作节点的节点标识。
在实际应用中,当读写节点运行出现故障,无法正常工作时,例如,运行速度太慢、无法运行等;主控节点将出现问题的读写节点执行的工作任务分配到其他能够正常运行的读写节点。当工作节点运行出现故障,无法正常工作时,主控节点通知对应的读写节点,读写节点将出现故障的工作节点的工作任务分配到其他能够正常运行的工作节点。其中,第一预设条件具体可以包括读写节点的运行速度达不到预设的速度阈值、读写节点停止运行需要重新启动、读写节点的硬盘存储出现问题、读写节点网络连接不畅等;第二预设条件具体可以包括工作节点的运行速度达不到预设的速度阈值、工作节点停止运行需要重新启动、工作节点的硬盘存储出现问题、工作节点网络连接不畅等。其中,第一预设条件、第二预设条件可以根据具体需要进行设置,第一预设条件、第二预设条件对应的故障问题为主控节点能够处理的,不需要用户侧终端参与的故障问题。
在一示例中,读写节点C1的状态信息显示该节点处理数据的速度太慢,当前处理的分片数据为D1,则主控节点则将分片数据D1分配到读写节点C2,此时,读写节点C1和读写节点C2同时处理分片数据D1,如果读写节点C2先处理完成,则直接进行下一步处理,将分片数据D1的处理结果发送至工作节点,读写节点C1停止处理分片数据D1。
本申请提供的分布式数据处理方法,主控节点获取待处理的非结构化数据的相关信息,将非结构化数据的相关信息进行分片处理,得到各分片数据,并将各分片数据发送给至少一个读写节点;每个读写节点将接收到的每个分片数据读取为至少两个子分片数据,并将各子分片数据发送给至少一个工作节点;每个工作节点对接收到的每个子分片数据进行相应的处理;其中,若一个工作节点接收到至少两个子分片数据,则工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。本申请通过设置不同处理任务的主控节点、读写节点、工作节点,实现了对非结构化数据的相关信息的分布式处理;将非结构化数据的相关信息分配到不同节点进行并行处理,或者将非结构化数据的相关信息通过节点的不同进程进行并行处理,从而实现了对大规模非结构化数据的高效处理。
图2为本申请实施例提供的一种分布式数据处理方法的流程图,如图2所示,该方法由主控节点执行,该方法可以包括:
步骤S201,获取待处理的非结构化数据的相关信息,将非结构化数据的相关信息进行分片处理,得到各分片数据;
步骤S202,将各分片数据发送给至少一个读写节点,以使每个读写节点将接收到的每个分片数据读取为至少两个子分片数据,并将各子分片数据发送给至少一个工作节点,以使每个工作节点对接收到的每个子分片数据进行相应的处理;
其中,若一个工作节点接收到至少两个子分片数据,则工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。在一种可能的实现方式中,该方法还包括:
接收每个读写节点或者工作节点发送的心跳信号,心跳信号中携带有各节点的状态信息;
其中,状态信息包括以下至少一项:
存活状态信息、处理进度信息、处理异常信息。
在一种可能的实现方式中,该方法还包括:
当读写节点的状态信息满足第一预设条件时,将状态信息满足第一预设条件的读写节点所对应的分片数据发送至其他读写节点;
当工作节点的状态信息满足第二预设条件时,向状态信息满足第二预设条件的工作节点对应的读写节点发送通知消息,以使对应的读写节点将通知消息所对应的工作节点所对应的子分片数据发送至其他工作节点,通知消息中携带有状态信息满足第二预设条件的工作节点的节点标识。
在一种可能的实现方式中,该方法还包括:
获取各分片数据的处理结果,其中,各分片数据的处理结果是读写节点根据相应的工作节点返回的子分片数据的处理结果进行汇总得到的;
根据各分片数据所对应的分片标识,将各分片数据的处理结果进行汇总,并将汇总后的数据进行存储。
在一种可能的实现方式中,将非结构化数据的相关信息进行分片处理,得到各分片数据,包括:
通过调用分片函数将非结构化数据的相关信息进行分片处理,得到各分片数据。
在一种可能的实现方式中,分片函数是通过以下方式确定的:
接收用户的分片函数配置操作,基于分片函数配置操作确定分片函数。
本实施例是以主控节点为执行主体的实施例,本实施例中各个步骤的具体实现过程已在图1对应的方法实施例进行了详细描述,此处不再赘述。
图3为本申请实施例提供的一种分布式数据处理方法的流程图,如图3所示,该方法由读写节点执行,该方法可以包括:
步骤S301,接收主控节点发送的分片数据,将接收到的每个分片数据读取为至少两个子分片数据;
步骤S302,将各子分片数据发送给至少一个工作节点,以使每个工作节点对接收到的每个子分片数据进行相应的处理;
其中,若一个工作节点接收到至少两个子分片数据,则工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。
在一种可能的实现方式中,该方法还包括:
获取各子分片数据的处理结果;
根据各子分片数据所对应的分片标识,将各子分片数据的处理结果进行汇总,并将汇总后的数据存储到指定存储空间。
在一种可能的实现方式中,将接收到的每个分片数据读取为至少两个子分片数据,包括:
通过调用读取函数将分片数据进行读取处理,得到各子分片数据。
在一种可能的实现方式中,读取函数是通过以下方式确定的:
接收主控节点发送的读取函数配置信息,基于读取函数配置信息确定读取函数,读取函数配置信息是主控节点根据用户针对读取函数的配置操作生成的。
本实施例是以读写节点为执行主体的实施例,本实施例中各个步骤的具体实现过程已在图1对应的方法实施例进行了详细描述,此处不再赘述。
本申请技术方案在实施时,节点可以通过虚拟机来实现,也就是说,主控节点、读写节点、工作节点对应的虚拟机构成虚拟机集群,可以配置管理平台,实现对虚拟机集群的管理。该管理平台提供启动、查询、停止等操作节点接口,能通过相应接口迅速启动并管理本申请技术方案中的所有节点,作为本申请技术方案处理海量数据的基础。
另外,在实际应用中,本申请技术方案的软件框架可以集成深度学习引擎,以根据数据处理需求,通过本申请技术方案提供的方法对数据进行相应的处理,从而得到可以作为深度学习的训练集的样本数据。也就是说,待处理数据可以是样本数据所对应的源数据,工作节点的作用即为将源数据处理为深度学习网络所需要的样本数据,例如,待处理数据为包含目标对象(例如,人)的图像集中的各个图像,所需要的样本数据为目标对象的脸部图像,则工作节点的作用即为从各个图像中提取出脸部图像。
基于与图2中所示方法相同的原理,本公开的实施例还提供了一种分布式数据处理装置40,如图4所示,装置40可以包括:
获取模块41,用于获取待处理的非结构化数据的相关信息,将非结构化数据的相关信息进行分片处理,得到各分片数据;
第一发送模块42,用于将各分片数据发送给至少一个读写节点,以使每个读写节点将接收到的每个分片数据读取为至少两个子分片数据,并将各子分片数据发送给至少一个工作节点,以使每个工作节点对接收到的每个子分片数据进行相应的处理;
其中,若一个工作节点接收到至少两个子分片数据,则工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。
在一种可能的实现方式中,装置40还包括:
心跳接收模块,用于接收每个读写节点或者工作节点发送的心跳信号,心跳信号中携带有各节点的状态信息;
其中,状态信息包括以下至少一项:
存活状态信息、处理进度信息、处理异常信息。
在一种可能的实现方式中,装置40还包括:
分片数据发送模块,用于当读写节点的状态信息满足第一预设条件时,将状态信息满足第一预设条件的读写节点所对应的分片数据发送至其他读写节点;
第一通知发送模块,用于当工作节点的状态信息满足第二预设条件时,向状态信息满足第二预设条件的工作节点对应的读写节点发送通知消息,以使对应的读写节点将通知消息所对应的工作节点所对应的子分片数据发送至其他工作节点,通知消息中携带有状态信息满足第二预设条件的工作节点的节点标识。
在一种可能的实现方式中,装置40还包括:
分片结果汇总模块,用于获取各分片数据的处理结果,其中,各分片数据的处理结果是读写节点根据相应的工作节点返回的子分片数据的处理结果进行汇总得到的;
根据各分片数据所对应的分片标识,将各分片数据的处理结果进行汇总,并将汇总后的数据进行存储。
在一种可能的实现方式中,获取模块41具体用于:
通过调用分片函数将非结构化数据的相关信息进行分片处理,得到各分片数据。
在一种可能的实现方式中,分片函数是通过以下方式确定的:
接收用户的分片函数配置操作,基于分片函数配置操作确定分片函数。
本实施例的装置与图2对应的方法一一对应,本实施例中各个步骤的具体实现过程已在图1对应的方法实施例进行了详细描述,此处不再赘述。
基于与图3中所示方法相同的原理,本公开的实施例还提供了一种分布式数据处理装置50,如图5所示,装置50可以包括:
接收模块51,用于接收主控节点发送的分片数据,将接收到的每个分片数据读取为至少两个子分片数据;
第二发送模块52,用于将各子分片数据发送给至少一个工作节点,以使每个工作节点对接收到的每个子分片数据进行相应的处理;
其中,若一个工作节点接收到至少两个子分片数据,则工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。
在一种可能的实现方式中,装置50还包括:
子分片结果汇总模块,用于获取各子分片数据的处理结果;
根据各子分片数据所对应的分片标识,将各子分片数据的处理结果进行汇总,并将汇总后的数据存储到指定存储空间。
在一种可能的实现方式中,接收模块51具体用于:
通过调用读取函数将分片数据进行读取处理,得到各子分片数据。
在一种可能的实现方式中,读取函数是通过以下方式确定的:
接收主控节点发送的读取函数配置信息,基于读取函数配置信息确定读取函数,读取函数配置信息是主控节点根据用户针对读取函数的配置操作生成的。
本实施例的装置与图3对应的方法一一对应,本实施例中各个步骤的具体实现过程已在图1对应的方法实施例进行了详细描述,此处不再赘述。
基于与图1中所示方法相同的原理,本公开的实施例还提供了一种分布式数据处理系统60,如图6所示,系统60可以包括:主控节点61、至少一个读写节点62(读写节点620、读写节点621…读写节点62m)、至少一个工作节点63(工作节点630、工作节点631…工作节点63n);
主控节点61,用于获取待处理的非结构化数据的相关信息,将非结构化数据的相关信息进行分片处理,得到各分片数据,并将各分片数据发送给至少一个读写节点62;
读写节点62,用于将接收到的每个分片数据读取为至少两个子分片数据,并将各子分片数据发送给至少一个工作节点63;
工作节点63,用于对接收到的每个子分片数据进行相应的处理;
其中,若一个工作节点63接收到至少两个子分片数据,则工作节点63开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。
本实施例的系统与图1对应的方法一一对应,本实施例中各个步骤的具体实现过程已在图1对应的方法实施例进行了详细描述,此处不再赘述。
本申请提供的分布式数据处理系统,主控节点获取待处理的非结构化数据的相关信息,将非结构化数据的相关信息进行分片处理,得到各分片数据,并将各分片数据发送给至少一个读写节点;每个读写节点将接收到的每个分片数据读取为至少两个子分片数据,并将各子分片数据发送给至少一个工作节点;每个工作节点对接收到的每个子分片数据进行相应的处理;其中,若一个工作节点接收到至少两个子分片数据,则工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。本申请通过设置不同处理任务的主控节点、读写节点、工作节点,实现了对非结构化数据的相关信息的分布式处理;将非结构化数据的相关信息分配到不同节点进行并行处理,或者将非结构化数据的相关信息通过节点的不同进程进行并行处理,从而实现了对大规模非结构化数据的高效处理。
上述实施例从虚拟模块的角度介绍了分布式数据处理方法,下述从实体模块的角度介绍一种电子设备,具体如下所示:
本申请实施例提供了一种电子设备,如图7所示,图7所示的电子设备7000包括:处理器7001和存储器7003。其中,处理器7001和存储器7003相连,如通过总线7002相连。可选地,电子设备7000还可以包括收发器7004。需要说明的是,实际应用中收发器7004不限于一个,该电子设备7000的结构并不构成对本申请实施例的限定。
处理器7001可以是CPU,通用处理器,DSP,ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器7001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线7002可包括一通路,在上述组件之间传送信息。总线7002可以是PCI总线或EISA总线等。总线7002可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器7003可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、CD-ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器7003用于存储执行本申请方案的应用程序代码,并由处理器7001来控制执行。处理器7001用于执行存储器7003中存储的应用程序代码,以实现前述任一方法实施例所示的内容。
本申请实施例提供了一种电子设备,本申请实施例中的电子设备包括:存储器和处理器;至少一个程序,存储于所述存储器中,用于被所述处理器执行时,与现有技术相比:主控节点获取待处理的非结构化数据的相关信息,将非结构化数据的相关信息进行分片处理,得到各分片数据,并将各分片数据发送给至少一个读写节点;每个读写节点将接收到的每个分片数据读取为至少两个子分片数据,并将各子分片数据发送给至少一个工作节点;每个工作节点对接收到的每个子分片数据进行相应的处理;其中,若一个工作节点接收到至少两个子分片数据,则工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。本申请通过设置不同处理任务的主控节点、读写节点、工作节点,实现了对非结构化数据的相关信息的分布式处理;将非结构化数据的相关信息分配到不同节点进行并行处理,或者将非结构化数据的相关信息通过节点的不同进程进行并行处理,从而实现了对大规模非结构化数据的高效处理。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,当其在计算机上运行时,使得计算机可以执行前述方法实施例中相应内容。与现有技术相比,主控节点获取待处理的非结构化数据的相关信息,将非结构化数据的相关信息进行分片处理,得到各分片数据,并将各分片数据发送给至少一个读写节点;每个读写节点将接收到的每个分片数据读取为至少两个子分片数据,并将各子分片数据发送给至少一个工作节点;每个工作节点对接收到的每个子分片数据进行相应的处理;其中,若一个工作节点接收到至少两个子分片数据,则工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。本申请通过设置不同处理任务的主控节点、读写节点、工作节点,实现了对非结构化数据的相关信息的分布式处理;将非结构化数据的相关信息分配到不同节点进行并行处理,或者将非结构化数据的相关信息通过节点的不同进程进行并行处理,从而实现了对大规模非结构化数据的高效处理。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (15)
1.一种分布式数据处理方法,其特征在于,所述方法包括:
获取待处理的非结构化数据的相关信息,将所述相关信息进行分片处理,得到各分片数据;
将各所述分片数据发送给至少一个读写节点,以使每个读写节点将接收到的分片数据读取为至少两个子分片数据,并将各子分片数据发送给至少一个工作节点,以使每个所述工作节点对接收到的每个所述子分片数据进行相应的处理;
其中,若一个工作节点接收到至少两个子分片数据,则所述工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。
2.根据权利要求1所述的分布式数据处理方法,其特征在于,所述方法还包括:
接收每个所述读写节点或者工作节点发送的心跳信号,心跳信号中携带有各节点的状态信息;
其中,所述状态信息包括以下至少一项:
存活状态信息、处理进度信息、处理异常信息。
3.根据权利要求2所述的分布式数据处理方法,其特征在于,所述方法还包括:
当读写节点的状态信息满足第一预设条件时,将状态信息满足第一预设条件的读写节点所对应的分片数据发送至其他读写节点;
当工作节点的状态信息满足第二预设条件时,向状态信息满足第二预设条件的工作节点对应的读写节点发送通知消息,以使对应的读写节点将通知消息所对应的工作节点所对应的子分片数据发送至其他工作节点,所述通知消息中携带有状态信息满足第二预设条件的工作节点的节点标识。
4.根据权利要求1所述的分布式数据处理方法,其特征在于,所述方法还包括:
获取各分片数据的处理结果,其中,各分片数据的处理结果是读写节点根据相应的工作节点返回的子分片数据的处理结果进行汇总得到的;
根据各分片数据所对应的分片标识,将各分片数据的处理结果进行汇总,并将汇总后的数据进行存储。
5.根据权利要求1所述的分布式数据处理方法,其特征在于,所述将所述非结构化数据的相关信息进行分片处理,得到各分片数据,包括:
通过调用分片函数将所述非结构化数据的相关信息进行分片处理,得到各分片数据。
6.根据权利要求5所述的分布式数据处理方法,其特征在于,所述分片函数是通过以下方式确定的:
接收用户的分片函数配置操作,基于所述分片函数配置操作确定所述分片函数。
7.一种分布式数据处理方法,其特征在于,所述方法包括:
接收主控节点发送的分片数据,将接收到的每个分片数据读取为至少两个子分片数据;
将各子分片数据发送给至少一个工作节点,以使每个所述工作节点对接收到的每个所述子分片数据进行相应的处理;
其中,若一个工作节点接收到至少两个子分片数据,则所述工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。
8.根据权利要求7所述的分布式数据处理方法,其特征在于,所述方法还包括:
获取各子分片数据的处理结果;
根据各子分片数据所对应的分片标识,将各子分片数据的处理结果进行汇总,并将汇总后的数据存储到指定存储空间。
9.根据权利要求7所述的分布式数据处理方法,其特征在于,所述将接收到的每个分片数据读取为至少两个子分片数据,包括:
通过调用读取函数将所述分片数据进行读取处理,得到各子分片数据。
10.根据权利要求9所述的分布式数据处理方法,其特征在于,所述读取函数是通过以下方式确定的:
接收主控节点发送的读取函数配置信息,基于所述读取函数配置信息确定所述读取函数,所述读取函数配置信息是所述主控节点根据用户针对读取函数的配置操作生成的。
11.一种分布式数据处理方法,其特征在于,所述方法包括:
主控节点获取待处理的非结构化数据的相关信息,将所述非结构化数据的相关信息进行分片处理,得到各分片数据,并将各所述分片数据发送给至少一个读写节点;
每个所述读写节点将接收到的每个分片数据读取为至少两个子分片数据,并将各子分片数据发送给至少一个工作节点;
每个所述工作节点对接收到的每个所述子分片数据进行相应的处理;
其中,若一个所述工作节点接收到至少两个子分片数据,则所述工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。
12.一种分布式数据处理装置,其特征在于,所述装置包括:
获取模块,用于获取待处理的非结构化数据的相关信息,将所述非结构化数据的相关信息进行分片处理,得到各分片数据;
第一发送模块,用于将各所述分片数据发送给至少一个读写节点,以使每个读写节点将接收到的每个分片数据读取为至少两个子分片数据,并将各子分片数据发送给至少一个工作节点,以使每个所述工作节点对接收到的每个所述子分片数据进行相应的处理;
其中,若一个工作节点接收到至少两个子分片数据,则所述工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。
13.一种分布式数据处理装置,其特征在于,所述装置包括:
接收模块,用于接收主控节点发送的分片数据,将接收到的每个分片数据读取为至少两个子分片数据;
第二发送模块,用于将各子分片数据发送给至少一个工作节点,以使每个所述工作节点对接收到的每个所述子分片数据进行相应的处理;
其中,若一个工作节点接收到至少两个子分片数据,则所述工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。
14.一种分布式数据处理系统,其特征在于,所述系统包括:主控节点、读写节点、工作节点;
所述主控节点,用于获取待处理的非结构化数据的相关信息,将所述非结构化数据的相关信息进行分片处理,得到各分片数据,并将各所述分片数据发送给至少一个读写节点;
所述读写节点,用于将接收到的每个分片数据读取为至少两个子分片数据,并将各子分片数据发送给至少一个工作节点;
所述工作节点,用于对接收到的每个所述子分片数据进行相应的处理;
其中,若一个所述工作节点接收到至少两个子分片数据,则所述工作节点开启相应数量的进程,由相应数量的进程对接收到的至少两个子分片数据进行并行处理。
15.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于:执行权利要求1~11任一项所述的分布式数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910926425.8A CN110704536A (zh) | 2019-09-27 | 2019-09-27 | 分布式数据处理方法、装置、系统及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910926425.8A CN110704536A (zh) | 2019-09-27 | 2019-09-27 | 分布式数据处理方法、装置、系统及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110704536A true CN110704536A (zh) | 2020-01-17 |
Family
ID=69196962
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910926425.8A Pending CN110704536A (zh) | 2019-09-27 | 2019-09-27 | 分布式数据处理方法、装置、系统及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110704536A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708812A (zh) * | 2020-05-29 | 2020-09-25 | 北京赛博云睿智能科技有限公司 | 一种分布式数据处理方法 |
CN112965994A (zh) * | 2021-03-31 | 2021-06-15 | 杭州海康威视数字技术股份有限公司 | 一种Flink框架的顺序写方法、装置及电子设备 |
CN113254437A (zh) * | 2020-02-11 | 2021-08-13 | 北京京东振世信息技术有限公司 | 一种批处理作业处理方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140096936A (ko) * | 2013-01-29 | 2014-08-06 | (주)소만사 | Dlp 시스템의 빅데이터 처리 시스템 및 방법 |
CN105243160A (zh) * | 2015-10-28 | 2016-01-13 | 西安美林数据技术股份有限公司 | 基于海量数据的分布式视频处理系统 |
CN108710530A (zh) * | 2018-02-24 | 2018-10-26 | 深圳市艾龙电子有限公司 | 任务分布式处理方法、装置、网络终端设备和存储介质 |
CN109960731A (zh) * | 2019-03-28 | 2019-07-02 | 腾讯音乐娱乐科技(深圳)有限公司 | 一种数据处理方法、设备及存储介质 |
-
2019
- 2019-09-27 CN CN201910926425.8A patent/CN110704536A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140096936A (ko) * | 2013-01-29 | 2014-08-06 | (주)소만사 | Dlp 시스템의 빅데이터 처리 시스템 및 방법 |
CN105243160A (zh) * | 2015-10-28 | 2016-01-13 | 西安美林数据技术股份有限公司 | 基于海量数据的分布式视频处理系统 |
CN108710530A (zh) * | 2018-02-24 | 2018-10-26 | 深圳市艾龙电子有限公司 | 任务分布式处理方法、装置、网络终端设备和存储介质 |
CN109960731A (zh) * | 2019-03-28 | 2019-07-02 | 腾讯音乐娱乐科技(深圳)有限公司 | 一种数据处理方法、设备及存储介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254437A (zh) * | 2020-02-11 | 2021-08-13 | 北京京东振世信息技术有限公司 | 一种批处理作业处理方法和装置 |
CN113254437B (zh) * | 2020-02-11 | 2023-09-01 | 北京京东振世信息技术有限公司 | 一种批处理作业处理方法和装置 |
CN111708812A (zh) * | 2020-05-29 | 2020-09-25 | 北京赛博云睿智能科技有限公司 | 一种分布式数据处理方法 |
CN112965994A (zh) * | 2021-03-31 | 2021-06-15 | 杭州海康威视数字技术股份有限公司 | 一种Flink框架的顺序写方法、装置及电子设备 |
CN112965994B (zh) * | 2021-03-31 | 2022-05-03 | 杭州海康威视数字技术股份有限公司 | 一种Flink框架的顺序写方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106202235B (zh) | 一种数据处理方法及装置 | |
CN110704536A (zh) | 分布式数据处理方法、装置、系统及电子设备 | |
CN110636340B (zh) | 视频文件的上传方法、存储设备、终端设备及存储介质 | |
CN110928851B (zh) | 处理日志信息的方法、装置、设备及存储介质 | |
CN111464373A (zh) | 一种微服务全链路监控系统及方法 | |
CN107066519B (zh) | 一种任务检测方法及装置 | |
CN105760395A (zh) | 一种数据处理的方法、装置及系统 | |
CN110880100A (zh) | 业务审批的处理方法、装置及系统 | |
CN112905323B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN103885865A (zh) | 一种传感器管理方法及装置 | |
CN108920281A (zh) | 大规模图片处理方法及系统 | |
CN107547593B (zh) | 一种实现日志同步的方法、装置及分布式系统 | |
CN112860720B (zh) | 一种存储容量的更新方法以及装置 | |
CN106648839A (zh) | 数据处理的方法和装置 | |
CN109739883B (zh) | 提升数据查询性能的方法、装置和电子设备 | |
CN111376255B (zh) | 机器人数据采集方法、装置及终端设备 | |
CN113821333A (zh) | 安卓应用程序迁移的方法和装置 | |
CN112019689A (zh) | 来电秀业务处理系统及方法 | |
CN111597200A (zh) | 数据处理方法、装置及存储介质 | |
CN111226200A (zh) | 为分布式应用创建一致性快照的方法、装置和分布式系统 | |
CN112988806A (zh) | 一种数据处理的方法及装置 | |
CN111061719B (zh) | 数据收集方法、装置、设备和存储介质 | |
CN104407846B (zh) | 一种信息处理方法及装置 | |
CN109902067B (zh) | 文件处理方法、装置、存储介质及计算机设备 | |
CN111651193A (zh) | 一种信息打包方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200117 |
|
RJ01 | Rejection of invention patent application after publication |