CN107545005A - 一种数据处理方法及装置 - Google Patents
一种数据处理方法及装置 Download PDFInfo
- Publication number
- CN107545005A CN107545005A CN201610490911.6A CN201610490911A CN107545005A CN 107545005 A CN107545005 A CN 107545005A CN 201610490911 A CN201610490911 A CN 201610490911A CN 107545005 A CN107545005 A CN 107545005A
- Authority
- CN
- China
- Prior art keywords
- data
- node server
- processed
- operation result
- query plan
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 25
- 238000012545 processing Methods 0.000 claims abstract description 157
- 238000000034 method Methods 0.000 claims abstract description 83
- 238000009826 distribution Methods 0.000 claims description 47
- 230000008569 process Effects 0.000 claims description 31
- 230000002776 aggregation Effects 0.000 claims description 8
- 238000004220 aggregation Methods 0.000 claims description 8
- 238000012163 sequencing technique Methods 0.000 claims description 5
- 238000005194 fractionation Methods 0.000 abstract 2
- 241001269238 Data Species 0.000 abstract 1
- 238000004364 calculation method Methods 0.000 description 40
- 230000006870 function Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 14
- 238000003860 storage Methods 0.000 description 12
- 238000013461 design Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000011022 operating instruction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000007493 shaping process Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000004907 flux Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据处理方法及装置,用以解决现有技术的分布式数据系统计算效率低的问题。该方法为:一个节点服务器针对一个数据处理指令进行数据处理过程中,可以从至少一个数据源中获取待处理数据,将获取的待处理数据并拆分,并将拆分后的多个部分待处理数据,以及数据处理指令对应的查询计划分布至多个节点服务器(包含所述节点服务器),实现分布式关联计算,因此,该方法可以将原来由一个节点服务器处理的待处理数据的计算压力分解到多个节点服务器上,实现了节点服务器的计算能力的横向扩展,且节点服务器可以从多个数据源中获取待处理数据,使其计算能力不受限于数据源的I/O能力,提高了分布式数据系统的计算效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据处理方法及装置。
背景技术
随着大数据时代的到来,用户根据具体应用的需要对数据进行差异化存储,即将数据存储到多个不同的数据库中。由于应用系统建设时的历史原因,以及数据的特性等,应用系统的数据层中的数据库类型不同,数据库的类型可以包括甲骨文(Oracle)数据库、DB2数据库,以及非关系型数据库(NoSQL数据库),但是不同数据库通常会维护在不同实体设备中,这导致对不同数据库中的数据进行关联计算时,计算效率太低。
分布式数据库可以采用多节点存储和计算技术,使应用系统实现高性能计算成为可能。在采用分布式数据库中,包括多个安装有数据库运行实例的服务器,且每个服务器均连接有磁盘存储设备,应用系统可以采用哈希算法,将数据分布到所述多个服务器连接的磁盘存储设备中,其中在每个磁盘存储设备存储数据时,只能根据一个键值分布。
在所述应用系统在通过所述分布式数据库进行计算时,每个服务器可以通过结构化查询语言(Structured Query Language,SQL)指令完成数据的运算操作,然后将各自的运算结果上传至中心服务器,使中心服务器对多个服务器的运算结果进行数据合并。
由于分布式数据库中的每个服务器只能对各自连接的磁盘存储器中的数据进行运算处理,因此,每个服务器在进行计算前,待计算的数据均需要先存储到各自连接的磁盘存储器中,因此,整个分布式数据库的计算能力没办法单独按需要横向扩展,同时由于数据存储在磁盘存储器中,每个服务器的计算能力受限于该磁盘存储器本身的输入输出(Input/Output,I/O)能力,进而导致整个分布式数据系统的计算效率较低。
发明内容
本发明提供一种数据处理方法及装置,用以解决现有技术中的分布式数据系统计算效率低的问题。
本发明提供的具体技术方案如下:
第一方面,本发明实施例提供了一种数据处理方法,该方法应用于分布式数据系统,该方法包括:
第一节点服务器将接收到的数据处理指令进行解析生成查询计划,并将所述查询计划分布至至少一个第二节点服务器;所述第一节点服务器根据所述查询计划,从所述待处理数据所处的至少一个数据源中获取所述待处理数据;再按照特定的分布规则,将所述待处理数据拆分为多个部分待处理数据,并将所述多个部分待处理数据分布至所述第一节点服务器和所述至少一个第二节点服务器中;所述第一节点服务器根据所述查询计划以及分布至自身的部分待处理数据,生成第一运算结果,以及获取每个第二节点服务器的第二运算结果;最终,所述第一节点服务器可以根据所述第一运算结果和所述每个第二节点服务器的第二运算结果,确定所述数据处理指令对应的运算结果。其中,所述查询计划用于指示所述第一节点服务器以及所述至少一个第二节点服务器对待处理数据的进行处理;任意一个第二节点服务器的第二运算结果为所述第二节点服务器根据所述查询计划以及分布至所述第二节点服务器的部分待处理数据生成的。
通过上述方法,节点服务器可以从多个数据源中获取待处理数据并将所述待处理数据存储到本地内存中,从而可以实现分布式关联计算,使节点服务器的计算能力不受限于数据源本身的I/O能力,且该节点服务器针对一个数据处理指令进行数据处理过程中,可以将获取的待处理数据拆分,并将拆分后的多个部分待处理数据,以及数据处理指令对应的查询计划分布至多个节点服务器(包含所述节点服务器),因此,该方法可以将原来由一个节点服务器处理的待处理数据的计算压力分解到多个节点服务器上,实现了节点服务器的计算能力的横向扩展,即实现数据大规模并行处理,并且节点服务器可以从多个数据源中获取待处理数据并将所述待处理数据存储到本地内存中,使其计算能力不受限于数据源的I/O能力,提高了分布式数据系统的计算效率。
在一个可能的设计中,所述第一节点服务器在执行根据所述查询计划,确定所述待处理数据所处的至少一个数据源时,具体包括以下步骤:首先,获取所述查询计划中包括的所述至少一个数据源的标识;然后,根据所述至少一个数据源的标识,确定对应的所述至少一个数据源。
通过上述方法,所述第一节点服务器可以准确的确定所述查询计划对应的待处理数据所处的数据源,从而可以获取所述待处理数据。
在一个可能的设计中,所述第一节点服务器在从所述至少一个数据源中获取所述待处理数据时,具体包括以下步骤:根据存储的元数据连接所述至少一个数据源,所述元数据包括所述至少一个数据源的连接信息,例如数据源的标识、数据源类型、数据源的IP地址等信息;然后,根据所述查询计划,获取所述至少一个数据源中的所述待处理数据。
通过上述方法,所述第一节点服务器可以连接所述待处理数据所处的所述至少一个数据源,从而可以获取所述待处理数据。
在一个可能的设计中,所述第一节点服务器中包含有适配器,所述第一节点服务器可以通过适配器根据所述源数据连接所述至少一个数据源,在获取所述至少一个数据源中的所述待处理数据时,所述适配器可以将所述待处理数据转换为统一的格式和类型,以使所述第一节点服务器以及所述至少一个第二节点服务器均可以识别。
在本发明实施例中,待处理数据存储在所述第一节点服务器以外的其他数据源中,即节点服务器和数据源为不同的硬件设备,这样,分布式数据系统中的任意一个节点服务器可以访问系统中的任意一个数据源,提高了所述分布式数据系统进行数据处理的灵活性。分布式数据系统中的每个节点服务器可以通过适配器连接数据源,在系统中新增数据源时,只需在每个节点服务器中扩展该新增数据源的适配器即可,提高了分布式数据系统的数据源扩展能力,极大地降低了该分布式数据系统的后期维护成本和扩容成本。且由于进行数据存储的数据源和进行数据处理的节点服务器为不同的设备,因此,所述节点服务器在数据处理过程中需要按照非分布键关联汇总时,无需数据源对数据重新分布,而是在获取数据是,直接按照关联条件键值进行数据分布,从而可以在同一节点服务器内实现分布式关联计算,提高了节点服务器的计算效率。
在一个可能的设计中,所述第一节点服务器在根据所述查询计划,获取所述至少一个数据源中的所述待处理数据时,具体包括以下步骤:获取所述查询计划中包括的所述待处理数据的描述信息,其中,所述待处理数据的描述信息包括所述待处理数据的数据表名称、所述待处理数据在数据表中的查询条件等;然后,根据所述待处理数据的描述信息,从所述至少一个数据源中获取所述待处理数据。
通过上述方法,所述第一节点服务器可以准确地获取存储在所述至少一个数据源中的所述待处理数据。
在一个可能的设计中,所述第一节点服务器通过以下两种方式获取所述分布规则:
第一种方式:所述第一节点服务器根据所述查询计划中包含的关联条件,生成所述分布规则,其中,所述分布规则可以是根据各种分布算法生成的,例如哈希算法等,也可以是根据数据特征生成,例如按照公司名称或某一数据的取值范围进行分布;
第二种方式:所述第一节点服务器获取存储的所述分布规则,所述分布规则可以是用户规定或所述第一节点服务器预先生成的。
通过上述方法,所述第一节点服务器获得所述待处理数据的分布规则,进而可以根据所述分布规则将所述待处理数据进行拆分并动态分布至所述第一节点服务器和所述至少一个第二节点服务器,以使后续多个节点服务器并行进行数据处理,从而实现节点服务器的计算能力的横向扩展,提高分布式数据系统的计算效率和计算资源的利用率。
在一个可能的设计中,所述第一节点服务器在根据所述第一运算结果和所述每个第二节点服务器的第二运算结果,确定所述数据处理指令对应的运算结果时,具体包括以下步骤:所述第一运算结果和所述每个第二节点服务器的第二运算结果进行数据聚合或排序处理,生成所述数据处理指令对应的运算结果。
通过上述方法,所述第一节点服务器可以将多个部分待处理数据对应的运算结果进行整合,生成所述数据处理指令对应的运算结果。
在一个可能的设计中,所述数据处理指令为结构化查询语言SQL指令。
第二方面,本发明实施例还提供了一种数据处理方法,该方法应用于分布式数据系统,该方法包括:
第二节点服务器接收第一节点服务器发送的查询计划和部分待处理数据,并根据所述查询计划以及所述部分待处理数据,生成所述第二运算结果;最终所述第二节点服务器将所述第二运算结果发送至所述第一节点服务器。
通过上述方法,所述第二节点服务器可以对分布至自身的部分待处理数据进行处理,分担了所述第一节点服务器处理所有待处理数据的计算压力,因此,该方法可以实现节点服务器的计算能力的横向扩展,即实现数据大规模并行处理,提高分布式数据系统的计算效率和计算资源的利用率。
第三方面,本发明实施例还提供了一种第一节点服务器,该第一节点服务器具有实现上述方法实例中第一节点服务器行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一种可能的设计中,所述第一节点服务器的结构中包括接收单元、处理单元和发送单元,这些单元可以执行上述方法示例中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
在一种可能的设计中,所述第一节点服务器的结构中包括收发器、处理器、总线以及存储器,所述收发器用于与分布式数据系统中的其他设备进行通信交互,所述处理器被配置为支持所述第一节点服务器执行上述方法中相应的功能。所述存储器与所述处理器耦合,其保存所述第一节点服务器必要的程序指令和数据。
第四方面,本发明实施例还提供了一种第二节点服务器,该第二节点服务器具有实现上述方法实例中第二节点服务器行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
在一种可能的设计中,所述第二节点服务器的结构中包括接收单元、处理单元和发送单元,这些单元可以执行上述方法示例中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
在一种可能的设计中,所述第二节点服务器的结构中包括收发器、处理器、总线以及存储器,所述收发器用于与分布式数据系统中的其他设备进行通信交互,所述处理器被配置为支持所述第二节点服务器执行上述方法中相应的功能。所述存储器与所述处理器耦合,其保存所述第二节点服务器必要的程序指令和数据。
第五方面,本发明实施例提供了一种分布式数据系统,该分布式数据系统包括多个节点服务器,其中,所述多个节点服务器中包含第一节点服务器和至少一个第二节点服务器。
采用本发明提供的数据处理方法,节点服务器可以从多个数据源中获取待处理数据并将所述待处理数据存储到本地内存中,从而可以实现分布式关联计算,使节点服务器的计算能力不受限于数据源本身的I/O能力,且该节点服务器针对一个数据处理指令进行数据处理过程中,可以将获取的待处理数据拆分,并将拆分后的多个部分待处理数据,以及数据处理指令对应的查询计划分布至多个节点服务器(包含所述节点服务器),因此,该方法可以将原来由一个节点服务器处理的待处理数据的计算压力分解到多个节点服务器上,实现了节点服务器的计算能力的横向扩展,即实现数据大规模并行处理,并且节点服务器可以从多个数据源中获取待处理数据并将所述待处理数据存储到本地内存中,使其计算能力不受限于数据源的I/O能力,提高了分布式数据系统的计算效率。
附图说明
图1为本发明实施例提供的一种分布式数据系统的架构示意图;
图2为本发明实施例提供的一种数据处理方法的流程图;
图3为本发明实施例提供的另一种数据处理方法的流程图;
图4为本发明实施例提供的一种第一节点服务器的结构示意图;
图5为本发明实施例提供的一种第二节点服务器的结构示意图;
图6为本发明实施例提供的一种节点服务器的结构示意图;
图7为本发明实施例提供的另一种第一节点服务器的结构示意图;
图8为本发明实施例提供的另一种第二节点服务器的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
本发明实施例提供一种数据处理方法及装置,用以解决现有技术中分布式数据系统计算效率低的问题。其中,本发明所述方法和控制器基于同一发明构思,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。
本发明实施例中,分布式数据系统中包含多个节点服务器,其中所述多个节点服务器中的第一节点服务器接收到数据处理指令生成查询计划,并根据所述查询计划获取待处理数据;所述第一节点服务器针对自身以及至少一个第二节点服务器,将所述待处理数据拆分为多个部分待处理数据;所述第一节点服务器将所述多个部分待处理数据分布至所述第一节点服务器和所述至少一个第二节点服务器,并将所述查询计划发送至所述至少一个第二节点服务器;所述第一节点服务器根据所述查询计划以及分布至自身的部分待处理数据生成第一运算结果;以及获取所述至少一个第二节点服务器中每个第二节点服务器根据所述查询计划以及分布至该第二节点服务器的部分待处理数据生成的第二运算结果;最终,所述第一节点服务器根据所述第一运算结果和所述每个第二节点服务器的第二运算结果,确定所述数据处理指令对应的运算结果。由于在该方法中,节点服务器可以从多个数据源中获取待处理数据并将所述待处理数据存储到本地内存中,从而可以实现分布式关联计算,使节点服务器的计算能力不受限于数据源本身的I/O能力,且该节点服务器针对一个数据处理指令进行数据处理过程中,可以将获取的待处理数据拆分,并将拆分后的多个部分待处理数据,以及数据处理指令对应的查询计划分布至多个节点服务器(包含所述节点服务器),因此,该方法可以将原来由一个节点服务器处理的待处理数据的计算压力分解到多个节点服务器上,实现了节点服务器的计算能力的横向扩展,即实现数据大规模并行处理,并且节点服务器可以从多个数据源中获取待处理数据并将所述待处理数据存储到本地内存中,使其计算能力不受限于数据源的I/O能力,提高了分布式数据系统的计算效率。
以下,对本申请中的部分用语进行解释说明,以便与本领域技术人员理解。
数据处理指令,为用户根据数据处理需求发出的,或者为与分布式数据系统相连的客户端在某些应用运行过程中生成的。所述数据处理指令中可以包括待处理数据所在的数据源的标识,以及所述待处理数据的描述信息等信息,所述数据处理指令用于通知分布式数据系统对所述待处理数据执行具体的处理操作。根据分布式数据系统支持的数据库查询和应用支持的程序设计语言,所述数据处理指令不同,例如,当所述分布式数据系统支持结构化查询语言(Structured Query Language,SQL)时,所述数据处理指令为SQL指令。
查询计划,用于指示分布式数据系统中的节点服务器对待处理数据的进行处理,为分布式数据系统中的节点服务器根据获取的数据处理指令进行解析获得的。查询计划中包括:对待处理数据中那些数据进行索引查找、索引扫描、嵌套循环、计算标量等任意一项或组合处理,在所述查询计划中包含多项处理时,还需要限定所述多项处理的先后顺序。节点服务器可以根据生成的查询计划获取待处理数据,并执行所述查询计划:按照所述查询计划中规定的先后顺序对所述待处理数据进行多项处理;或者按照所述查询计划中的一项处理对所述待处理数据进行处理。
关联条件,当数据处理指令指示的对所述待处理数据执行具体的处理操作中包含多个数据表之间的关联计算时,该数据处理指令中包含所述多个数据表之间关联条件,例如数据处理指令如下:
该数据处理指令中的关联条件为“a.msisdn=b.msisdn”。
分布规则,用于指示分布式数据系统中的节点服务器针对多个节点服务器,如何将待处理数据进行拆分的。当数据处理指令中包含关联条件时,节点服务器拆分待处理数据使用的分布规则与该关联条件是一致的,例如,上述关联条件“a.msisdn=b.msisdn”,所述分布规则需要规定将满足“a.msisdn=b.msisdn”的部分待处理数据拆分出来。所述节点服务器拆分的多个部分待处理数据中均满足“a.msisdn=b.msisdn”。
数据源(Data Source)是存储数据的器件或原始媒体,可以为数据库,如各种关系型数据库、非关系型数据库,以及其他外部数据服务系统。
元数据,用于描述至少一个数据源的连接信息,包括数据源的标识、数据源类型、数据源的因特网协议(Internet Protocol,IP)地址,用户名和认证密码等信息。分布式数据系统中的节点服务器可以根据任意一个数据源的元数据连接该数据源。
多个,是指两个或两个以上。
和/或,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
另外,需要理解的是,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
为了更加清晰的描述本发明实施例的技术方案,下面结合图1,对本发明实施例可能的分布式数据系统的架构进行说明。图1示出了本发明实施例的一种可能的分布式数据系统的架构,该系统中包括:多个节点服务器(其中包括第一节点服务器1011和第二节点服务器1012)以及至少一个数据源102,其中,所述多个节点服务器之间相互连接,且所述多个节点服务器和所述至少一个数据源102之间也相互连接。
所述多个节点服务器中任意一个节点服务器(即第一节点服务器1011)在接收到数据处理指令(例如SQL指令)后,会根据所述数据处理指令生成查询计划,并将所述查询计划发送至所述多个节点服务器中除所述第一节点服务器1011以外的至少一个第二节点服务器1012;
所述第一节点服务器1011可以根据所述查询计划,确定所述待处理数据所处的至少一个数据源102,并从所述至少一个数据源102中获取待处理数据。可选的,所述第一节点服务器1011中包含有所述至少一个数据源102的元数据,所述第一节点服务器1011可以根据所述至少一个数据源102的元数据连接所述至少一个数据源。可选的,所述第一节点服务器1011中包含适配器,并通过所述适配器,根据所述元数据连接所述至少一个数据源102,从而获取所述待处理数据,并将所述待处理数据转换为统一的格式和类型,以使所述第一节点服务器1011以及所述至少一个第二节点服务器1012均可以识别;
所述第一节点服务器1011根据所述待处理数据的分布规则,将所述待处理数据进行拆分,针对所述第一节点服务器1011和所述至少一个第二节点服务器1012生成多个部分待处理数据,其中,所述多个部分待处理数据的数目等于所述第一节点服务器1011和所述至少一个第二节点服务器1012的数目;
所述第一节点服务器1011将针对自身拆分得到的部分待处理数据进行保存,将针对每个第二节点服务器1012拆分得到的部分待处理数据分布至对应的第二节点服务器1012中;
所述第一节点服务器1011根据所述查询计划以及分布至自身的部分待处理数据,生成第一运算结果;
每个第二节点服务器1012根据所述查询计划以及分布至自身的部分待处理数据,生成第二运算结果,并将所述第二运算结果返回给所述第一节点服务器1011;
所述第一节点服务器1011接收每个第二节点服务器1012返回的第二运算结果,并将所述第一运算结果和接收到的第二运算结果进行整合,例如进行数据聚合或排序处理,生成所述数据处理指令对应的运算结果。
所述至少一个数据源102中每个数据源102中存储各种数据,所述至少一个数据源102可以包括关系型数据库、非关系型数据库,以及其他外部数据服务系统等,本发明对此不做限定。
可选的,所述系统还可以包括原数据管理服务器103,用于获取并管理所述系统的所述至少一个数据源102中每个数据源102的元数据,以及所述系统中的多个节点服务器的信息;并将所述至少一个数据源102中每个数据源102的元数据下发至所述多个节点服务器中的每个节点服务器中。
采用本发明实施例提供的分布式数据系统,多个节点服务器中的第一节点服务器接收到数据处理指令生成查询计划,并根据所述查询计划获取待处理数据;所述第一节点服务器针对自身以及至少一个第二节点服务器,将所述待处理数据拆分为多个部分待处理数据;所述第一节点服务器将所述多个部分待处理数据分布至所述第一节点服务器和所述至少一个第二节点服务器,并将所述查询计划发送至所述至少一个第二节点服务器;所述第一节点服务器根据所述查询计划以及分布至自身的部分待处理数据生成第一运算结果;以及获取所述至少一个第二节点服务器中每个第二节点服务器根据所述查询计划以及分布至该第二节点服务器的部分待处理数据生成的第二运算结果;最终,所述第一节点服务器根据所述第一运算结果和所述每个第二节点服务器的第二运算结果,确定所述数据处理指令对应的运算结果。由于在该系统中,节点服务器可以从多个数据源中获取待处理数据并将所述待处理数据存储到本地内存中,从而可以实现分布式关联计算,使节点服务器的计算能力不受限于数据源本身的I/O能力,且该节点服务器针对一个数据处理指令进行数据处理过程中,可以将获取的待处理数据拆分,并将拆分后的多个部分待处理数据,以及数据处理指令对应的查询计划分布至多个节点服务器(包含所述节点服务器),因此,该系统可以将原来由一个节点服务器处理的待处理数据的计算压力分解到多个节点服务器上,实现了节点服务器的计算能力的横向扩展,即实现数据大规模并行处理,并且节点服务器可以从多个数据源中获取待处理数据并将所述待处理数据存储到本地内存中,使其计算能力不受限于数据源的I/O能力,提高了分布式数据系统的计算效率。
参阅图2所示,本发明实施例提供的一种数据处理方法,应用于如图1所示的分布式数据系统中,其中,该方法中涉及的第一节点服务器中为所述分布式数据系统中的多个节点服务器中的任意一个节点服务器,该方法中涉及的至少一个第二节点服务器为所述多个节点服务器中除所述第一节点服务器以外的其他部分或全部节点服务器。该方法的处理流程包括:
步骤201:第一节点服务器接收到数据处理指令后,根据所述数据处理指令生成查询计划,并将所述查询计划发送至至少一个第二节点服务器,所述查询计划用于指示所述第一节点服务器以及所述至少一个第二节点服务器对待处理数据的进行处理。
可选的,所述分布式数据系统与客户端相连时,所述客户端在某些应用运行过程中,生成所述数据处理指令,并发送至所述第一节点服务器。
可选的,所述数据处理指令可以为SQL指令。
所述第一节点服务器接收到所述数据处理指令后,对所述数据处理指令进行解析,从而得到所述查询计划。所述数据处理指令中包含可能包含有包括待处理数据所在的数据源的标识,以及所述待处理数据的描述信息等信息,相应的,所述查询计划中也可能包含有数据源的标识以及所述待处理数据的描述信息等信息。
步骤202:所述第一节点服务器根据所述查询计划,确定所述待处理数据所处的至少一个数据源,并从所述至少一个数据源中获取所述待处理数据。
可选的,当所述查询计划中包括所述至少一个数据源的标识时,所述第一节点服务器根据所述查询计划,确定所述待处理数据所处的至少一个数据源,包括以下步骤:
所述第一节点服务器获取所述查询计划中包括的所述至少一个数据源的标识;
所述第一节点服务器根据所述至少一个数据源的标识,确定对应的所述至少一个数据源。
可选的,所述第一节点服务器从所述至少一个数据源中获取所述待处理数据,包括:
所述第一节点服务器根据存储的元数据连接所述至少一个数据源,所述元数据包括所述至少一个数据源的连接信息,例如数据源的标识、数据源类型、数据源的IP地址等信息;
所述第一节点服务器根据所述查询计划,获取所述至少一个数据源中的所述待处理数据。
可选的,所述第一节点服务器中包含有适配器,所述第一节点服务器可以通过适配器根据所述源数据连接所述至少一个数据源,在获取所述至少一个数据源中的所述待处理数据时,所述适配器可以将所述待处理数据转换为统一的格式和类型,以使所述第一节点服务器以及所述至少一个第二节点服务器均可以识别。
可选的,当所述查询计划中包括所述待处理数据的描述信息时,所述第一节点服务器根据所述查询计划,获取所述至少一个数据源中的所述待处理数据,包括:
所述第一节点服务器获取所述查询计划中包括的所述待处理数据的描述信息,其中所述待处理数据的描述信息包括所述待处理数据的数据表名称、所述待处理数据在数据表中的查询条件等;
所述第一节点服务器根据所述待处理数据的描述信息,从所述至少一个数据源中获取所述待处理数据。
在本发明实施例中,待处理数据存储在所述第一节点服务器以外的其他数据源中,即节点服务器和数据源为不同的硬件设备,这样,分布式数据系统中的任意一个节点服务器可以访问系统中的任意一个数据源,提高了所述分布式数据系统进行数据处理的灵活性。分布式数据系统中的每个节点服务器可以通过适配器连接数据源,在系统中新增数据源时,只需在每个节点服务器中扩展该新增数据源的适配器即可,提高了分布式数据系统的数据源扩展能力,极大地降低了该分布式数据系统的后期维护成本和扩容成本。
在传统的分布式数据系统中,数据存储和数据处理均由一套硬件设备完成,其中,数据只能按照一个键值分布,当该硬件设备在进行数据处理过程中需要按照非分布键关联汇总时,数据需要重新分布,导致计算量较大,增加了该硬件设备的负载。在本发明实施例中,由于进行数据存储的数据源和进行数据处理的节点服务器为不同的设备,因此,所述节点服务器在数据处理过程中需要按照非分布键关联汇总时,无需数据源对数据重新分布,而是在获取数据是,直接按照关联条件键值进行数据分布,从而可以在同一节点服务器内实现分布式关联计算,提高了节点服务器的计算效率。
步骤203:所述第一节点服务器获取所述待处理数据的分布规则,并按照所述分布规则,对所述待处理数据进行拆分,生成多个部分待处理数据;以及将所述多个部分待处理数据分布至所述第一节点服务器和所述至少一个第二节点服务器中。
可选的,所述第一节点服务器获取所述分布规则时,包括以下两种方式:
第一种方式:所述第一节点服务器根据所述查询计划中包含的关联条件,生成所述分布规则。所述分布规则可以是根据各种分布算法生成的,例如哈希算法等,也可以是根据数据特征生成,例如按照公司名称或某一数据的取值范围进行分布,本发明对此不做限定。
第二种方式:所述第一节点服务器获取存储的所述分布规则,所述分布规则可以是用户规定或所述第一节点服务器预先生成的。
通过将所述待处理数据进行拆分并动态分布至所述第一节点服务器和所述至少一个第二节点服务器,以使后续多个节点服务器并行进行数据处理,从而实现节点服务器的计算能力的横向扩展,提高分布式数据系统的计算效率和计算资源的利用率。
其中,所述第一节点服务器将分布至自身的部分待处理数据存储在内存中,同理,所述至少一个第二节点服务器在接收到所述第一节点服务器发送的分布至自身的部分待处理数据后,也存储到自身的内存中。
步骤204:所述第一节点服务器根据所述查询计划以及分布至自身的部分待处理数据,生成第一运算结果。
具体的,所述第一节点服务器根据所述查询计划,对分布至自身的部分待处理数据进行处理,从而生成所述第一运算结果。
步骤205:所述第一节点服务器获取所述至少一个第二节点服务器中每个第二节点服务器的第二运算结果,其中,任意一个第二节点服务器的第二运算结果为所述第二节点服务器根据所述查询计划以及分布至所述第二节点服务器的部分待处理数据生成的。
在步骤203之后,所述至少一个第二节点服务器中每个第二节点服务器根据所述查询计划,对分布至自身的部分待处理数据进行处理,从而生成对应的第二运算结果,并将生成的所述第二运算结果发送给所述第一节点服务器。
步骤206:所述第一节点服务器根据所述第一运算结果和所述每个第二节点服务器的第二运算结果,确定所述数据处理指令对应的运算结果。
可选的,所述第一阶段服务器将所述数据处理指令对应的运算结果返回至所述客户端,供用户查阅。
可选的,所述第一节点服务器在执行步骤206时,可以对所述第一运算结果和所述每个第二节点服务器的第二运算结果进行数据聚合或排序处理,生成所述数据处理指令对应的运算结果。
在所述第一节点服务器和所述至少一个第二节点服务器对数据处理时,均是基于存储在内存中的部分待处理数据进行计算的,可选的,在所述运算结果生成后,所述第一节点服务器和所述至少一个第二节点服务器将内存进行释放,避免数据冗余。
采用本发明实施例提供的数据处理方法,由于在该方法中,节点服务器可以从多个数据源中获取待处理数据并将所述待处理数据存储到本地内存中,从而可以实现分布式关联计算,使节点服务器的计算能力不受限于数据源本身的I/O能力,且该节点服务器针对一个数据处理指令进行数据处理过程中,可以将获取的待处理数据拆分,并将拆分后的多个部分待处理数据,以及数据处理指令对应的查询计划分布至多个节点服务器(包含所述节点服务器),因此,该方法可以将原来由一个节点服务器处理的待处理数据的计算压力分解到多个节点服务器上,实现了节点服务器的计算能力的横向扩展,即实现数据大规模并行处理,并且节点服务器可以从多个数据源中获取待处理数据并将所述待处理数据存储到本地内存中,使其计算能力不受限于数据源的I/O能力,提高了分布式数据系统的计算效率。
基于以上实施例,本发明实施例还提供了另一种数据处理方法,应用于如图1所示的分布式数据系统中,本发明实施例中的第一节点服务器与上述实施例中的第一节点服务器相同,且本发明实施例中的第二节点服务器中为上述实施例中的至少一个第二节点服务器中的任意一个。参阅图3所示,该方法的处理流程包括:
步骤301:第二节点服务器接收第一节点服务器发送的查询计划和部分待处理数据;
步骤302:所述第二节点服务器根据所述查询计划以及所述部分待处理数据,生成所述第二运算结果;
步骤303:所述第二节点服务器将所述第二运算结果发送至所述第一节点服务器。
采用本发明上述实施例中的数据处理方法,所述第二节点服务器可以对分布至自身的部分待处理数据进行处理,分担了所述第一节点服务器处理所有待处理数据的计算压力,因此,该方法可以实现节点服务器的计算能力的横向扩展,即实现数据大规模并行处理,提高分布式数据系统的计算效率和计算资源的利用率。
基于以上实施例,本发明实施例还提供了一种数据处理示例,分布式数据系统中包含两个数据源,即Oracle数据库和GreenPlum数据库,数据源的连接名称分别为OracleWH和GP。其中,在Oracle数据库中存储有数据——用户信息表:T_CUST_BASIC,所述用户信息表的数据信息如表1所示;在GreenPlum数据库中存储有数据——用户上网日流量表:T_HTTP_DAY,所述用户上网日流量表的数据信息如表2所示;
表1
表2
序号 | 属性英文名称 | 属性中文名称 | 数据类型 | 字段长度 |
1 | STATIS_DATE | 统计时间 | 字符型 | 6 |
2 | MSISDN | 手机号码 | 字符型 | 16 |
3 | VISIT_CNT | 访问次数 | 整型 | 6 |
4 | FLUX | 流量 | 整型 | 8 |
当某运营商需要按“用户类型”,统计“统计时间”等于“2016-02-24”的流量情况时,需要向所述分布式数据系统中的第一节点服务器发送如下SQL指令:
所述第一节点服务器接收到所述SQL指令后,根据所述SQL指令生成查询计划,并在所述分布式数据系统中除所述第一节点服务器以外的其他节点服务器中确定9个第二节点服务器;以及将所述查询计划发送至所述9个第二节点服务器中。由于所述SQL指令中包含数据源的标识(即OracleWH、GP),以及待处理数据的描述信息(即数据表T_CUST_BASIC、T_HTTP_DAY),因此,所述查询计划中也包含上述两项信息。
所述第一节点服务器中获取待处理数据所处的两个数据源的标识OracleWH和GP,并根据本地存储的如表3所示的元数据,通过适配器连接所述两个数据源。
表3
序号 | 连接名称 | 数据库类型 | IP地址 | 用户名/密码 | 备注 |
1 | OracleWH | Oracle | 10.135.181.75 | …… | 数据仓库 |
2 | GP | GreenPlum | 10.135.181.76 | …… | 详单库 |
所述第一节点服务器根据所述查询计划中包含的待处理数据的描述信息(即数据表T_CUST_BASIC、T_HTTP_DAY),从分别从上述两个数据源中获取所述待处理数据,即数据表T_CUST_BASIC和数据表T_HTTP_DAY中的所有数据。
所述第一节点服务器根据所述查询计划中的关联条件“a.msisdn=b.msisdn”以及哈希算法,生成分布规则,并根据所述分布规则将获取的每个数据表中的数据均匀的拆分为10个部分待处理数据,其中,每个部分待处理数据均满足上述关联条件。所述第一节点服务器将所述10个部分待处理数据分布至自身和所述9个第二节点服务器中。
每个节点服务器(所述第一节点服务器或第二节点服务器)均根据所述查询计划以及分布至自身的部分待处理数据,生成运算结果;每个第二节点服务器将生成的运算结果发送回所述第一节点服务器;
所述第一节点服务器将接收到的运算结果以及自身计算得到的运算结果,进行数据聚合,可以得到最终的所述SQL指令对应的运算结果(按“用户类型”,统计“统计时间”等于“2016-02-24”的流量情况),从而将最终的运算结果通知该运营商。
在传统的分布式数据系统中,该运营商若需要得到上述运算结果,需要采用传统方法将两个数据表放在一个数据库中进行关联后汇总,费时费力。在本发明实施例提供的实例中,在第一节点服务器进行数据处理过程中,所述第一节点服务器可以从两个数据源中获取待处理数据,使其计算能力不首先与该两个数据源的I/O能力,并可以将获取的待处理数据拆分为10个部分待处理数据,并将拆分后的10多个部分待处理数据,以及所述SQL数据处理指令对应的查询计划分布至多10个节点服务器(包含所述第一节点服务器),因此,该系统可以将原来由一个节点服务器处理的待处理数据的计算压力分解到10个节点服务器上,将计算效率提高了10倍,实现了节点服务器的计算能力的横向扩展,大大提高了所述分布式数据系统的计算效率。
基于以上实施例,本发明还提供了一种第一节点服务器,该第一节点服务器应用于如图1所示的分布式数据系统,用于实现如图2所示的数据处理方法,参阅图4所示,该第一节点服务器400中包括:接收单元401、处理单元402和发送单元403,其中,
接收单元401,用于接收到数据处理指令,
处理单元402,用于根据所述数据处理指令生成查询计划,所述查询计划用于指示所述第一节点服务器以及所述至少一个第二节点服务器对待处理数据的进行处理;
发送单元403,用于将所述查询计划发送至至少一个第二节点服务器;
所述处理单元402,还用于根据所述查询计划,确定所述待处理数据所处的至少一个数据源,并从所述至少一个数据源中获取所述待处理数据;
获取所述待处理数据的分布规则,并按照所述分布规则,对所述待处理数据进行拆分,生成多个部分待处理数据;以及将所述多个部分待处理数据分布至所述第一节点服务器和所述至少一个第二节点服务器中;
根据所述查询计划以及分布至自身的部分待处理数据,生成第一运算结果;
获取所述至少一个第二节点服务器中每个第二节点服务器的第二运算结果,其中,任意一个第二节点服务器的第二运算结果为所述第二节点服务器根据所述查询计划以及分布至所述第二节点服务器的部分待处理数据生成的;以及
根据所述第一运算结果和所述每个第二节点服务器的第二运算结果,确定所述数据处理指令对应的运算结果。
可选的,所述处理单元402,在根据所述查询计划,确定所述待处理数据所处的至少一个数据源时,具体用于:
获取所述查询计划中包括的所述至少一个数据源的标识;
根据所述至少一个数据源的标识,确定对应的所述至少一个数据源。
可选的,所述处理单元402,在从所述至少一个数据源中获取所述待处理数据时,具体用于:
根据存储的元数据连接所述至少一个数据源,所述元数据包括所述至少一个数据源的连接信息;
根据所述查询计划,获取所述至少一个数据源中的所述待处理数据。
可选的,所述处理单元402,在根据所述查询计划,获取所述至少一个数据源中的所述待处理数据时,具体用于:
获取所述查询计划中包括的所述待处理数据的描述信息;
根据所述待处理数据的描述信息,从所述至少一个数据源中获取所述待处理数据。
可选的,所述处理单元402,在获取所述分布规则时,具体用于:
根据所述查询计划中包含的关联条件,生成所述分布规则;或者
获取存储的所述分布规则。
可选的,所述处理单元402,在根据所述第一运算结果和所述每个第二节点服务器的第二运算结果,确定所述数据处理指令对应的运算结果时,具体用于:
对所述第一运算结果和所述每个第二节点服务器的第二运算结果进行数据聚合或排序处理,生成所述数据处理指令对应的运算结果。
可选的,所述数据处理指令为结构化查询语言SQL指令。
采用本发明实施例提供的第一节点服务器,所述第一节点服务器可以从多个数据源中获取待处理数据并将所述待处理数据存储到本地内存中,从而可以实现分布式关联计算,使所述第一节点服务器的计算能力不受限于数据源本身的I/O能力,且该第一节点服务器针对一个数据处理指令进行数据处理过程中,可以将获取的待处理数据拆分,并将拆分后的多个部分待处理数据,以及数据处理指令对应的查询计划分布至多个节点服务器(包含所述节点服务器),因此,所述第一节点服务器可以将原来由自身处理的待处理数据的计算压力分解到多个节点服务器上,实现了节点服务器的计算能力的横向扩展,即实现数据大规模并行处理,并且所述第一节点服务器可以从多个数据源中获取待处理数据并将所述待处理数据存储到本地内存中,使其计算能力不受限于数据源的I/O能力,提高了分布式数据系统的计算效率。
基于以上实施例,本发明还提供了一种第二节点服务器,该第二节点服务器应用于如图1所示的分布式数据系统,用于实现如图3所示的数据处理方法,参阅图5所示,该第二节点服务器500中包括:接收单元501、处理单元502和发送单元503,其中,
接收单元501,用于接收第一节点服务器发送的查询计划和部分待处理数据;
处理单元502,用于根据所述查询计划以及所述部分待处理数据,生成所述第二运算结果;
发送单元503,用于将所述第二运算结果发送至所述第一节点服务器。
采用本发明上述实施例中的第二节点服务器,所述第二节点服务器可以对分布至自身的部分待处理数据进行处理,分担了所述第一节点服务器处理所有待处理数据的计算压力,因此,该第二节点服务器可以实现节点服务器的计算能力的横向扩展,即实现数据大规模并行处理,提高分布式数据系统的计算效率和计算资源的利用率。
基于以上实施例,本发明还提供了一种节点服务器,该节点服务器应用于如图1所示的分布式数据系统,可以实现如图2或图3所示的数据处理方法,参阅图6所示,该节点服务器600中包括:SQL节点(node)601、数据节点602、下载节点603和适配器604,其中,
SQL节点601,用于在所述节点服务器600为所述系统中的第一节点服务器时,接收SQL指令,并解析所述SQL指令,生成相应的查询计划,以及接收各个第二节点服务器的第二运算结果,以及根据本地生成的第一运算结果和接收的每个第二节点服务器的第二运算结果,生成所述SQL指令对应的运算结果;
下载节点603,用于在所述节点服务器600为所述系统中的第一节点服务器时,连接和加载数据,通过所述适配器604连接远程的至少一个数据源并获取待处理数据,并根据分布规则,将所述待处理数据拆分为多个部分待处理数据,并分布到多个节点服务器(包括该节点服务器600);
数据节点602,用于执行所述查询计划实现分布式计算,即对分布至所述节点服务器600的部分待处理数据执行所述查询计划,生成所述部分待处理数据对应的运算结果(第一运算结果或第二运算结果);其中,
在所述节点服务器600为所述系统中的第二节点服务器时,所述数据节点602还用于接收第一节点服务器的SQL节点发送的查询计划,以及第一节点服务器的下载节点603发送的部分待处理数据;并在生成第二运算结果后,将所述第二运算结果发送至第一节点服务器的SQL节点;
适配器604,用于在所述节点服务器600为所述系统中的第一节点服务器时,连接到远程的至少一个数据源,并获取待处理数据,并将获取到的所述待处理数据转换成统一的格式和类型。
需要说明的是,本发明实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
基于以上实施例,本发明实施例还提供了一种第一节点服务器,所述第一节点服务器应用于如图1所示的分布式数据系统,所述分布式数据系统中还包括至少一个第二节点服务器,参阅图7所示,所述第一节点服务器700包括:收发器701、处理器702、总线703以及存储器704,其中,
所述收发器701、所述处理器702以及所述存储器704通过所述总线703相互连接;所述总线703可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
所述收发器701,用于与所述分布式数据系统中的与所述第一节点服务器相连的其他设备进行通信交互。
所述处理器702,用于实现如图2所示的数据处理方法,包括:
接收到数据处理指令后,根据所述数据处理指令生成查询计划,并将所述查询计划发送至至少一个第二节点服务器,所述查询计划用于指示所述第一节点服务器以及所述至少一个第二节点服务器对待处理数据的进行处理;
根据所述查询计划,确定所述待处理数据所处的至少一个数据源,并从所述至少一个数据源中获取所述待处理数据;
获取所述待处理数据的分布规则,并按照所述分布规则,对所述待处理数据进行拆分,生成多个部分待处理数据;以及将所述多个部分待处理数据分布至所述第一节点服务器和所述至少一个第二节点服务器中;
根据所述查询计划以及分布至自身的部分待处理数据,生成第一运算结果;
获取所述至少一个第二节点服务器中每个第二节点服务器的第二运算结果,其中,任意一个第二节点服务器的第二运算结果为所述第二节点服务器根据所述查询计划以及分布至所述第二节点服务器的部分待处理数据生成的;
根据所述第一运算结果和所述每个第二节点服务器的第二运算结果,确定所述数据处理指令对应的运算结果。
可选的,所述处理器702,在根据所述查询计划,确定所述待处理数据所处的至少一个数据源时,具体用于:
获取所述查询计划中包括的所述至少一个数据源的标识;
根据所述至少一个数据源的标识,确定对应的所述至少一个数据源。
可选的,所述处理器702,在从所述至少一个数据源中获取所述待处理数据时,具体用于:
根据存储的元数据连接所述至少一个数据源,所述元数据包括所述至少一个数据源的连接信息;
根据所述查询计划,获取所述至少一个数据源中的所述待处理数据。
可选的,所述处理器702,在根据所述查询计划,获取所述至少一个数据源中的所述待处理数据时,具体用于:
获取所述查询计划中包括的所述待处理数据的描述信息;
根据所述待处理数据的描述信息,从所述至少一个数据源中获取所述待处理数据。
可选的,所述处理器702,在获取所述分布规则时,具体用于:
根据所述查询计划中包含的关联条件,生成所述分布规则;或者
获取存储的所述分布规则。
可选的,所述处理器702,在根据所述第一运算结果和所述每个第二节点服务器的第二运算结果,确定所述数据处理指令对应的运算结果时,具体用于:
对所述第一运算结果和所述每个第二节点服务器的第二运算结果进行数据聚合或排序处理,生成所述数据处理指令对应的运算结果。
可选的,所述数据处理指令为结构化查询语言SQL指令。
所述存储器704,用于存放程序等。具体地,程序可以包括程序代码,该程序代码包括计算机操作指令。存储器704可能包含随机存取存储器(random access memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。处理器702执行存储器704所存放的应用程序,实现上述功能,从而实现如图2所示的数据处理方法。
采用本发明实施例提供的第一节点服务器,所述第一节点服务器可以从多个数据源中获取待处理数据并将所述待处理数据存储到本地内存中,从而可以实现分布式关联计算,使所述第一节点服务器的计算能力不受限于数据源本身的I/O能力,且该第一节点服务器针对一个数据处理指令进行数据处理过程中,可以将获取的待处理数据拆分,并将拆分后的多个部分待处理数据,以及数据处理指令对应的查询计划分布至多个节点服务器(包含所述节点服务器),因此,所述第一节点服务器可以将原来由自身处理的待处理数据的计算压力分解到多个节点服务器上,实现了节点服务器的计算能力的横向扩展,即实现数据大规模并行处理,并且所述第一节点服务器可以从多个数据源中获取待处理数据并将所述待处理数据存储到本地内存中,使其计算能力不受限于数据源的I/O能力,提高了分布式数据系统的计算效率。
基于以上实施例,本发明实施例还提供了一种第二节点服务器,所述第二节点服务器应用于如图1所示的分布式数据系统,所述分布式数据系统中包括第一节点服务器和至少一个第二节点服务器,所述第二节点服务器为所述至少一个节点服务器中的任意一个,参阅图8所示,所述第二节点服务器800包括:收发器801、处理器802、总线803以及存储器804,其中,
所述收发器801、所述处理器802和所述存储器804通过所述总线803相互连接;所述总线803可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
所述收发器801,用于与所述分布式数据系统中的与所述第二节点服务器相连的其他设备进行通信交互。
所述处理器802,用于实现如图3所示的数据处理方法,包括:
接收第一节点服务器发送的查询计划和部分待处理数据;
根据所述查询计划以及所述部分待处理数据,生成所述第二运算结果;
将所述第二运算结果发送至所述第一节点服务器。
所述存储器804,用于存放程序等。具体地,程序可以包括程序代码,该程序代码包括计算机操作指令。存储器804可能包含随机存取存储器(random access memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。处理器802执行存储器804所存放的应用程序,实现上述功能,从而实现如图3所示的数据处理方法。
采用本发明上述实施例中的第二节点服务器,所述第二节点服务器可以对分布至自身的部分待处理数据进行处理,分担了所述第一节点服务器处理所有待处理数据的计算压力,因此,该第二节点服务器可以实现节点服务器的计算能力的横向扩展,即实现数据大规模并行处理,提高分布式数据系统的计算效率和计算资源的利用率。
本发明实施例提供的数据处理方法及装置,分布式数据系统中包含多个节点服务器,其中所述多个节点服务器中的第一节点服务器接收到数据处理指令生成查询计划,并根据所述查询计划获取待处理数据;所述第一节点服务器针对自身以及至少一个第二节点服务器,将所述待处理数据拆分为多个部分待处理数据;所述第一节点服务器将所述多个部分待处理数据分布至所述第一节点服务器和所述至少一个第二节点服务器,并将所述查询计划发送至所述至少一个第二节点服务器;所述第一节点服务器根据所述查询计划以及分布至自身的部分待处理数据生成第一运算结果;以及获取所述至少一个第二节点服务器中每个第二节点服务器根据所述查询计划以及分布至该第二节点服务器的部分待处理数据生成的第二运算结果;最终,所述第一节点服务器根据所述第一运算结果和所述每个第二节点服务器的第二运算结果,确定所述数据处理指令对应的运算结果。由于在该方法中,节点服务器可以从多个数据源中获取待处理数据并将所述待处理数据存储到本地内存中,从而可以实现分布式关联计算,使节点服务器的计算能力不受限于数据源本身的I/O能力,且该节点服务器针对一个数据处理指令进行数据处理过程中,可以将获取的待处理数据拆分,并将拆分后的多个部分待处理数据,以及数据处理指令对应的查询计划分布至多个节点服务器(包含所述节点服务器),因此,该方法可以将原来由一个节点服务器处理的待处理数据的计算压力分解到多个节点服务器上,实现了节点服务器的计算能力的横向扩展,即实现数据大规模并行处理,并且节点服务器可以从多个数据源中获取待处理数据并将所述待处理数据存储到本地内存中,使其计算能力不受限于数据源的I/O能力,提高了分布式数据系统的计算效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (16)
1.一种数据处理方法,其特征在于,包括:
第一节点服务器接收到数据处理指令后,根据所述数据处理指令生成查询计划,并将所述查询计划发送至至少一个第二节点服务器,所述查询计划用于指示所述第一节点服务器以及所述至少一个第二节点服务器对待处理数据的进行处理;
所述第一节点服务器根据所述查询计划,确定所述待处理数据所处的至少一个数据源,并从所述至少一个数据源中获取所述待处理数据;
所述第一节点服务器获取所述待处理数据的分布规则,并按照所述分布规则,对所述待处理数据进行拆分,生成多个部分待处理数据;以及将所述多个部分待处理数据分布至所述第一节点服务器和所述至少一个第二节点服务器中;
所述第一节点服务器根据所述查询计划以及分布至自身的部分待处理数据,生成第一运算结果;
所述第一节点服务器获取所述至少一个第二节点服务器中每个第二节点服务器的第二运算结果,其中,任意一个第二节点服务器的第二运算结果为所述第二节点服务器根据所述查询计划以及分布至所述第二节点服务器的部分待处理数据生成的;
所述第一节点服务器根据所述第一运算结果和所述每个第二节点服务器的第二运算结果,确定所述数据处理指令对应的运算结果。
2.如权利要求1所述的方法,其特征在于,所述第一节点服务器根据所述查询计划,确定所述待处理数据所处的至少一个数据源,包括:
所述第一节点服务器获取所述查询计划中包括的所述至少一个数据源的标识;
所述第一节点服务器根据所述至少一个数据源的标识,确定对应的所述至少一个数据源。
3.如权利要求1或2所述的方法,其特征在于,所述第一节点服务器从所述至少一个数据源中获取所述待处理数据,包括:
所述第一节点服务器根据存储的元数据连接所述至少一个数据源,所述元数据包括所述至少一个数据源的连接信息;
所述第一节点服务器根据所述查询计划,获取所述至少一个数据源中的所述待处理数据。
4.如权利要求3所述的方法,其特征在于,所述第一节点服务器根据所述查询计划,获取所述至少一个数据源中的所述待处理数据,包括:
所述第一节点服务器获取所述查询计划中包括的所述待处理数据的描述信息;
所述第一节点服务器根据所述待处理数据的描述信息,从所述至少一个数据源中获取所述待处理数据。
5.如权利要求1-4任一项所述的方法,其特征在于,所述第一节点服务器获取所述分布规则,包括:
所述第一节点服务器根据所述查询计划中包含的关联条件,生成所述分布规则;或者
所述第一节点服务器获取存储的所述分布规则。
6.如权利要求1-5任一项所述的方法,其特征在于,所述第一节点服务器根据所述第一运算结果和所述每个第二节点服务器的第二运算结果,确定所述数据处理指令对应的运算结果,包括:
所述第一节点服务器对所述第一运算结果和所述每个第二节点服务器的第二运算结果进行数据聚合或排序处理,生成所述数据处理指令对应的运算结果。
7.如权利要求1-6任一项所述的方法,其特征在于,所述数据处理指令为结构化查询语言SQL指令。
8.一种数据处理方法,其特征在于,包括:
第二节点服务器接收第一节点服务器发送的查询计划和部分待处理数据;
所述第二节点服务器根据所述查询计划以及所述部分待处理数据,生成所述第二运算结果;
所述第二节点服务器将所述第二运算结果发送至所述第一节点服务器。
9.一种第一节点服务器,其特征在于,包括:
接收单元,用于接收到数据处理指令,
处理单元,用于根据所述数据处理指令生成查询计划,所述查询计划用于指示所述第一节点服务器以及所述至少一个第二节点服务器对待处理数据的进行处理;
发送单元,用于将所述查询计划发送至至少一个第二节点服务器;
所述处理单元,还用于根据所述查询计划,确定所述待处理数据所处的至少一个数据源,并从所述至少一个数据源中获取所述待处理数据;
获取所述待处理数据的分布规则,并按照所述分布规则,对所述待处理数据进行拆分,生成多个部分待处理数据;以及将所述多个部分待处理数据分布至所述第一节点服务器和所述至少一个第二节点服务器中;
根据所述查询计划以及分布至自身的部分待处理数据,生成第一运算结果;
获取所述至少一个第二节点服务器中每个第二节点服务器的第二运算结果,其中,任意一个第二节点服务器的第二运算结果为所述第二节点服务器根据所述查询计划以及分布至所述第二节点服务器的部分待处理数据生成的;以及
根据所述第一运算结果和所述每个第二节点服务器的第二运算结果,确定所述数据处理指令对应的运算结果。
10.如权利要求9所述的第一节点服务器,其特征在于,所述处理单元,在根据所述查询计划,确定所述待处理数据所处的至少一个数据源时,具体用于:
获取所述查询计划中包括的所述至少一个数据源的标识;
根据所述至少一个数据源的标识,确定对应的所述至少一个数据源。
11.如权利要求9或10所述的第一节点服务器,其特征在于,所述处理单元,在从所述至少一个数据源中获取所述待处理数据时,具体用于:
根据存储的元数据连接所述至少一个数据源,所述元数据包括所述至少一个数据源的连接信息;
根据所述查询计划,获取所述至少一个数据源中的所述待处理数据。
12.如权利要求11所述的第一节点服务器,其特征在于,所述处理单元,在根据所述查询计划,获取所述至少一个数据源中的所述待处理数据时,具体用于:
获取所述查询计划中包括的所述待处理数据的描述信息;
根据所述待处理数据的描述信息,从所述至少一个数据源中获取所述待处理数据。
13.如权利要求9-12任一项所述的第一节点服务器,其特征在于,所述处理单元,在获取所述分布规则时,具体用于:
根据所述查询计划中包含的关联条件,生成所述分布规则;或者
获取存储的所述分布规则。
14.如权利要求9-13任一项所述的第一节点服务器,其特征在于,所述处理单元,在根据所述第一运算结果和所述每个第二节点服务器的第二运算结果,确定所述数据处理指令对应的运算结果时,具体用于:
对所述第一运算结果和所述每个第二节点服务器的第二运算结果进行数据聚合或排序处理,生成所述数据处理指令对应的运算结果。
15.如权利要求9-14任一项所述的第一节点服务器,其特征在于,所述数据处理指令为结构化查询语言SQL指令。
16.一种第二节点服务器,其特征在于,包括:
接收单元,用于接收第一节点服务器发送的查询计划和部分待处理数据;
处理单元,用于根据所述查询计划以及所述部分待处理数据,生成所述第二运算结果;
发送单元,用于将所述第二运算结果发送至所述第一节点服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610490911.6A CN107545005A (zh) | 2016-06-28 | 2016-06-28 | 一种数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610490911.6A CN107545005A (zh) | 2016-06-28 | 2016-06-28 | 一种数据处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107545005A true CN107545005A (zh) | 2018-01-05 |
Family
ID=60963094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610490911.6A Pending CN107545005A (zh) | 2016-06-28 | 2016-06-28 | 一种数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107545005A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108573026A (zh) * | 2018-03-14 | 2018-09-25 | 上海数据交易中心有限公司 | 一种数据流通方法及装置、存储介质、服务器 |
WO2020042182A1 (zh) * | 2018-08-31 | 2020-03-05 | 华为技术有限公司 | 数据处理系统和数据处理方法 |
CN111414241A (zh) * | 2020-02-27 | 2020-07-14 | 平安银行股份有限公司 | 批量数据处理方法、装置、系统、计算机设备及计算机可读存储介质 |
CN111723044A (zh) * | 2020-06-18 | 2020-09-29 | 北京字节跳动网络技术有限公司 | 数据处理系统、状态转移方法、数据求交方法、装置 |
WO2020199785A1 (zh) * | 2019-03-29 | 2020-10-08 | 华控清交信息科技(北京)有限公司 | 私有数据的处理方法、计算方法及所适用的设备 |
CN112905634A (zh) * | 2021-03-04 | 2021-06-04 | 成都新希望金融信息有限公司 | 指标发布系统、方法及电子设备 |
CN112988239A (zh) * | 2019-12-17 | 2021-06-18 | 深圳市优必选科技股份有限公司 | 数据运算方法、装置及终端设备 |
CN113657987A (zh) * | 2020-05-12 | 2021-11-16 | 马上消费金融股份有限公司 | 批量处理数据的方法及装置 |
CN114885373A (zh) * | 2022-05-26 | 2022-08-09 | 杭州矩视科技有限公司 | 一种节点数据上传方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101464884A (zh) * | 2008-12-31 | 2009-06-24 | 阿里巴巴集团控股有限公司 | 一种分布式任务系统及应用该系统的数据处理方法 |
CN102521307A (zh) * | 2011-12-01 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 一种云计算环境下的无共享数据库集群并行查询处理方法 |
CN103034739A (zh) * | 2012-12-29 | 2013-04-10 | 天津南大通用数据技术有限公司 | 一种分布式存储系统及其更新和查询方法 |
CN103123652A (zh) * | 2013-03-14 | 2013-05-29 | 曙光信息产业(北京)有限公司 | 数据查询方法和集群数据库系统 |
CN103605655A (zh) * | 2013-09-29 | 2014-02-26 | 柳州市宏亿科技有限公司 | 一种基于互联网的共享数据查询方法 |
CN104112008A (zh) * | 2014-07-16 | 2014-10-22 | 深圳市国泰安信息技术有限公司 | 一种多表数据关联查询优化方法和装置 |
CN104408179A (zh) * | 2014-12-15 | 2015-03-11 | 北京国双科技有限公司 | 数据表中数据处理方法和装置 |
CN105518664A (zh) * | 2013-08-15 | 2016-04-20 | 慧与发展有限责任合伙企业 | 管理数据库节点 |
-
2016
- 2016-06-28 CN CN201610490911.6A patent/CN107545005A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101464884A (zh) * | 2008-12-31 | 2009-06-24 | 阿里巴巴集团控股有限公司 | 一种分布式任务系统及应用该系统的数据处理方法 |
CN102521307A (zh) * | 2011-12-01 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 一种云计算环境下的无共享数据库集群并行查询处理方法 |
CN103034739A (zh) * | 2012-12-29 | 2013-04-10 | 天津南大通用数据技术有限公司 | 一种分布式存储系统及其更新和查询方法 |
CN103123652A (zh) * | 2013-03-14 | 2013-05-29 | 曙光信息产业(北京)有限公司 | 数据查询方法和集群数据库系统 |
CN105518664A (zh) * | 2013-08-15 | 2016-04-20 | 慧与发展有限责任合伙企业 | 管理数据库节点 |
CN103605655A (zh) * | 2013-09-29 | 2014-02-26 | 柳州市宏亿科技有限公司 | 一种基于互联网的共享数据查询方法 |
CN104112008A (zh) * | 2014-07-16 | 2014-10-22 | 深圳市国泰安信息技术有限公司 | 一种多表数据关联查询优化方法和装置 |
CN104408179A (zh) * | 2014-12-15 | 2015-03-11 | 北京国双科技有限公司 | 数据表中数据处理方法和装置 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108573026A (zh) * | 2018-03-14 | 2018-09-25 | 上海数据交易中心有限公司 | 一种数据流通方法及装置、存储介质、服务器 |
CN108573026B (zh) * | 2018-03-14 | 2021-01-19 | 上海数据交易中心有限公司 | 一种数据流通方法及装置、存储介质、服务器 |
WO2020042182A1 (zh) * | 2018-08-31 | 2020-03-05 | 华为技术有限公司 | 数据处理系统和数据处理方法 |
CN111886593B (zh) * | 2018-08-31 | 2024-06-11 | 华为技术有限公司 | 数据处理系统和数据处理方法 |
CN111886593A (zh) * | 2018-08-31 | 2020-11-03 | 华为技术有限公司 | 数据处理系统和数据处理方法 |
CN111753324B (zh) * | 2019-03-29 | 2024-02-09 | 华控清交信息科技(北京)有限公司 | 私有数据的处理方法、计算方法及所适用的设备 |
WO2020199785A1 (zh) * | 2019-03-29 | 2020-10-08 | 华控清交信息科技(北京)有限公司 | 私有数据的处理方法、计算方法及所适用的设备 |
CN111753324A (zh) * | 2019-03-29 | 2020-10-09 | 华控清交信息科技(北京)有限公司 | 私有数据的处理方法、计算方法及所适用的设备 |
CN112988239A (zh) * | 2019-12-17 | 2021-06-18 | 深圳市优必选科技股份有限公司 | 数据运算方法、装置及终端设备 |
CN111414241A (zh) * | 2020-02-27 | 2020-07-14 | 平安银行股份有限公司 | 批量数据处理方法、装置、系统、计算机设备及计算机可读存储介质 |
CN113657987A (zh) * | 2020-05-12 | 2021-11-16 | 马上消费金融股份有限公司 | 批量处理数据的方法及装置 |
CN113657987B (zh) * | 2020-05-12 | 2024-09-20 | 马上消费金融股份有限公司 | 批量处理数据的方法及装置 |
CN111723044A (zh) * | 2020-06-18 | 2020-09-29 | 北京字节跳动网络技术有限公司 | 数据处理系统、状态转移方法、数据求交方法、装置 |
CN112905634A (zh) * | 2021-03-04 | 2021-06-04 | 成都新希望金融信息有限公司 | 指标发布系统、方法及电子设备 |
CN114885373A (zh) * | 2022-05-26 | 2022-08-09 | 杭州矩视科技有限公司 | 一种节点数据上传方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107545005A (zh) | 一种数据处理方法及装置 | |
US11436224B2 (en) | Parallel processing database system with a shared metadata store | |
US11294933B2 (en) | Adaptive distribution method for hash operations | |
US11514045B2 (en) | Structured cluster execution for data streams | |
AU2014212780B2 (en) | Data stream splitting for low-latency data access | |
US9507875B2 (en) | Symbolic hyper-graph database | |
CN105550274B (zh) | 双副本并行数据库的查询方法和装置 | |
CN106815258B (zh) | 一种数据存储方法和协调节点 | |
WO2016134580A1 (zh) | 一种数据查询方法及装置 | |
CN110399368B (zh) | 一种定制数据表的方法、数据操作方法及装置 | |
CN108573026B (zh) | 一种数据流通方法及装置、存储介质、服务器 | |
CN116955361A (zh) | 存储器内密钥范围搜索方法和系统 | |
CN106790489B (zh) | 并行数据加载方法和系统 | |
CN111400301B (zh) | 一种数据查询方法、装置及设备 | |
CN116775712A (zh) | 联表查询方法、装置、电子设备、分布式系统和存储介质 | |
CN114297260A (zh) | 分布式rdf数据查询方法、装置和计算机设备 | |
US10963426B1 (en) | Method of providing access controls and permissions over relational data stored in a hadoop file system | |
CN111831425B (zh) | 一种数据处理方法、装置及设备 | |
CN110427390B (zh) | 数据查询方法及装置、存储介质、电子装置 | |
EP2979169A1 (en) | Batching tuples | |
CN113961583A (zh) | 一种数据处理方法、装置及设备 | |
CN114297221A (zh) | 一种数据访问方法、装置及电子设备 | |
CN114020744A (zh) | 数据发送方法、装置、电子设备和计算机可读介质 | |
CN115827635A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20200212 Address after: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant after: HUAWEI TECHNOLOGIES Co.,Ltd. Address before: 210012 HUAWEI Nanjing base, 101 software Avenue, Yuhuatai District, Jiangsu, Nanjing Applicant before: Huawei Technologies Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180105 |
|
RJ01 | Rejection of invention patent application after publication |