数据处理方法及系统与流程

文档序号:20768409发布日期:2020-05-15 19:18阅读:140来源:国知局
本申请涉及数据处理
技术领域
:,尤其涉及一种数据处理方法及系统。
背景技术
::hbase是一个高可靠性、高性能、面向列、可伸缩的分布式数据库,其支持海量数据存储。参见图1,为hbase数据库的示意图。数据写入数据库需要经过一系列的处理。参见图2,为现有基于mapreduce框架进行数据处理的结构示意图。其中,左侧hadoop分布式文件系统(英文:hadoopdistributedfilesystem,缩写:hdfs)存储有待处理文件,该待处理文件包含若干待处理数据。map节点(mapper1~mapper3)从待处理文件中读取待处理数据,对待处理数据进行处理,得到待写入hbase数据库的数据(简称待写入数据)。map节点将该待写入数据通过写入(put)操作指令发送至hbase数据库。hbase数据库内部需要经过一系列的操作,才能生成可存储于hbase数据库底层的hfile文件。该数据入库过程效率较低,且影响数据查询。技术实现要素:有鉴于此,本申请提出一种数据处理方法及系统,用以提升数据入库效率,降低对数据查询的影响。为实现上述申请目的,本申请提供了如下技术方案:第一方面,本申请提供一种数据处理方法,应用于数据处理系统,所述系统包括至少一个map节点、shuffle节点、至少一个reduce节点以及dobulkload节点,所述方法包括:所述map节点对待处理数据进行处理,得到待写入数据、所述待写入数据对应的行健rowkey以及所述待写入数据所属表的标识;所述shuffle节点根据所述待写入数据所属表的标识和所述待写入数据对应的rowkey,确定处理所述待写入数据的目标reduce节点,并将所述待写入数据、所述待写入数据对应的rowkey以及所述待写入数据所属表的标识发送至所述目标reduce节点;所述目标reduce节点将所述待写入数据和所述待写入数据对应的rowkey,写入所述待写入数据所属表对应的临时目录下的hfile文件中;所述dobulkload节点将表对应的临时目录下的hfile文件,转移至该表对应的实际目录下。可选的,所述map节点对待处理数据进行处理,得到待写入数据、所述待写入数据对应的rowkey以及所述待写入数据所属表的标识,包括:获取已创建的表的特征;从所述待处理数据中,提取与所述表的特征匹配的待写入数据;根据预设的生成规则,生成所述待写入数据对应的rowkey;将所述待写入数据所匹配的表的标识,确定为所述待写入数据所属表的标识。可选的,所述shuffle节点根据所述待写入数据所属表的标识和所述待写入数据对应的rowkey,确定处理所述待写入数据的目标reduce节点之前,所述方法还包括:所述map节点根据所述待写入数据对应的rowkey和所述待写入数据所属表的标识,生成所述待写入数据对应的目标键;所述shuffle节点解析所述目标键,获取所述待写入数据对应的rowkey和所述待写入数据所属表的标识。可选的,所述map节点根据所述待写入数据对应的rowkey和所述待写入数据所属表的标识,生成所述待写入数据对应的目标键,包括:所述map节点将所述待写入数据所属表的标识与所述待写入数据对应的rowkey拼接,作为所述待写入数据对应的目标键。可选的,所述shuffle节点根据所述待写入数据所属表的标识和所述待写入数据对应的rowkey,确定处理所述待写入数据的目标reduce节点,包括:针对每一个reduce节点,获取预先配置的该reduce节点对应的region的rowkey范围以及该region所属表的标识;根据所述待写入数据所属表的标识和所述待写入数据对应的rowkey,匹配预先配置的各reduce节点对应的rowkey范围以及表的标识;将匹配到的reduce节点确定为处理所述待写入数据的目标reduce节点。第二方面,本申请提供一种数据处理系统,所述系统包括至少一个map节点、shuffle节点、至少一个reduce节点以及dobulkload节点,所述map节点,用于对待处理数据进行处理,得到待写入数据、所述待写入数据对应的rowkey以及所述待写入数据所属表的标识;所述shuffle节点,用于根据所述待写入数据所属表的标识和所述待写入数据对应的rowkey,确定处理所述待写入数据的目标reduce节点,并将所述待写入数据、所述待写入数据对应的rowkey以及所述待写入数据所属表的标识发送至所述目标reduce节点;所述目标reduce节点,用于将所述待写入数据和所述待写入数据对应的rowkey,写入所述待写入数据所属表对应的临时目录下的hfile文件中;所述dobulkload节点,用于将表对应的临时目录下的hfile文件,转移至该表对应的实际目录下。可选的,所述map节点对待处理数据进行处理,得到待写入数据、所述待写入数据对应的rowkey以及所述待写入数据所属表的标识,包括:获取已创建的表的特征;从所述待处理数据中,提取与所述表的特征匹配的待写入数据;根据预设的生成规则,生成所述待写入数据对应的rowkey;将所述待写入数据所匹配的表的标识,确定为所述待写入数据所属表的标识。可选的,所述map节点,还用于根据所述待写入数据对应的rowkey和所述待写入数据所属表的标识,生成所述待写入数据对应的目标键;所述shuffle节点,还用于解析所述目标键,获取所述待写入数据对应的rowkey和所述待写入数据所属表的标识。可选的,所述map节点根据所述待写入数据对应的rowkey和所述待写入数据所属表的标识,生成所述待写入数据对应的目标键,包括:所述map节点将所述待写入数据所属表的标识与所述待写入数据对应的rowkey拼接,作为所述待写入数据对应的目标键。可选的,所述shuffle节点根据所述待写入数据所属表的标识和所述待写入数据对应的rowkey,确定处理所述待写入数据的目标reduce节点,包括:针对每一个reduce节点,获取预先配置的该reduce节点对应的region的rowkey范围以及该region所属表的标识;根据所述待写入数据所属表的标识和所述待写入数据对应的rowkey,匹配预先配置的各reduce节点对应的rowkey范围以及表的标识;将匹配到的reduce节点确定为处理所述待写入数据的目标reduce节点。由以上描述可以看出,本申请中,由map节点对待处理数据进行处理,得到待写入数据、待写入数据对应的rowkey以及待写入数据所属表的标识。再由shuffle节点根据待写入数据所属表的标识和待写入数据对应的rowkey,确定处理该待写入数据的目标reduce节点,并将待写入数据、待写入数据对应的rowkey以及待写入数据所属表的标识发送至目标reduce节点。目标reduce节点将待写入数据和待写入数据对应的rowkey,写入待写入数据所属表对应的临时目录下。最后,由dobulkload节点将表对应临时目录下的hfile文件,转移至该表对应的实际目录下,完成数据入库。由于数据入库之前已转换为数据存储所需文件格式(hfile文件),不需要dobulkload节点执行一系列的处理,只需进行hfile文件转移操作即可实现数据入库,因此,可有效提升数据入库效率,降低对数据查询的影响。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本申请实施例示出的一种hbase数据库的示意图;图2是现有基于mapreduce框架进行数据处理的结构示意图;图3是本申请实施例示出的一种数据处理方法流程图;图4是本申请实施例示出的一种步骤301的实现流程;图5是本申请实施例示出的一种步骤302的实现流程;图6是本申请实施例示出的一种表标识传输过程的实现流程;图7是本申请实施例示出的一种数据处理系统的结构示意图;图8是本申请实施例示出的一种数据处理系统的结构示意图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请实施例。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请实施例范围的情况下,协商信息也可以被称为第二信息,类似地,第二信息也可以被称为协商信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。参见图2,为现有基于mapreduce框架进行数据处理的结构示意图。待处理文件预先存储于hdfs,该待处理文件包含若干待处理数据。map节点(mapper1~mapper3)从待处理文件中读取待处理数据,对待处理数据进行处理,得到待写入hbase数据库的数据。map节点将待写入数据通过put操作指令发送至指定的regionserver(rs1或rs2)。regionserver将待写入数据写入region的hlog,再写入memstore缓存。当memstore中缓存的数据满足一定条件时,被刷写(flush)到hdfs中,形成hfile,完成数据入库。可以看出,该处理过程需要regionserver针对每一个待写入数据执行一系列的操作,才能完成数据入库,数据入库效率较低,而且regionserver除了数据入库外还需要承担数据查询操作,这样的一系列操作会严重影响数据查询。针对上述问题,本申请实施例提供一种数据处理方法。该方法由map节点对待处理数据进行处理,得到待写入数据、待写入数据对应的rowkey以及待写入数据所属表的标识。再由shuffle节点根据待写入数据所属表的标识和待写入数据对应的rowkey,确定处理该待写入数据的目标reduce节点,并将待写入数据、待写入数据对应的rowkey以及待写入数据所属表的标识发送至目标reduce节点。目标reduce节点将待写入数据和待写入数据对应的rowkey,写入待写入数据所属表对应的临时目录下。最后,由dobulkload节点将表对应临时目录下的hfile文件,转移至数据库中该表对应的实际目录下。该方法可有效提升数据入库效率,降低对数据查询的影响。为了使本申请实施例的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本申请实施例执行详细描述:参见图3,为本申请实施例示出的一种数据处理方法流程图。该流程应用于包括map节点、shuffle节点、reduce节点以及dobulkload节点的数据处理系统。如图3所示,该流程可包括以下步骤:步骤301,map节点对待处理数据进行处理,得到待写入数据、待写入数据对应的rowkey以及待写入数据所属表的标识。需要说明的是,本申请实施例中可以将待写入数据写入hbase数据库,hbase数据库以表的形式存储数据。每一张表可包含多个key-value对,其中,key为数据对应的行健(rowkey),value为数据,即上述待写入数据。本申请实施例中的数据处理系统包括至少一个map节点。本步骤中,map节点对待处理数据进行处理后,可得到至少一个待写入数据,并可确定出每一个待写入数据对应的rowkey以及每一个待写入数据所属表的标识,上述待处理数据可以为业务数据。也就是说,map节点对待处理数据进行处理后,可得到属于不同表的待写入数据。map节点通过确定各待写入数据所属表的标识,为后续节点根据各待写入数据所属表的标识,将各待写入数据输出到不同表中打下基础。步骤302,shuffle节点根据待写入数据所属表的标识和待写入数据对应的rowkey,确定处理该待写入数据的目标reduce节点,并将待写入数据、待写入数据对应的rowkey以及待写入数据所属表的标识发送至目标reduce节点。需要说明的是,数据处理系统可包括多个reduce节点,各个reduce节点并行处理且独立运行。本步骤中,shuffle节点需要根据map节点输出的待写入数据所属表的标识以及待写入数据对应的rowkey,确定由哪一个reduce节点处理该待写入数据。这里,将确定出的用于处理该待写入数据的reduce节点,称为目标reduce节点。shuffle节点将该待写入数据、待写入数据对应的rowkey以及待写入数据所属表的标识,发送至目标reduce节点。由目标reduce节点执行后续处理。步骤303,目标reduce节点将待写入数据和待写入数据对应的rowkey,写入待写入数据所属表对应的临时目录下的hfile文件中。本申请实施例中,目标reduce节点可直接生成包含待写入数据及其对应rowkey的hfile文件。该hfile文件为可直接存储至hbase数据库底层的格式文件。本步骤中,目标reduce节点可根据待写入数据所属表的标识,创建该表对应的临时目录,再将hfile文件存放在该临时目录下。步骤304,dobulkload节点将表对应的临时目录下的hfile文件,转移至该表对应的实际目录下。如前所述,hfile文件为可直接存储至hbase数据库底层的格式文件。为此,本申请实施例利用dobulkload节点的hfile文件导入功能,将各表对应的临时目录下的hfile文件,直接转移到各表对应的实际目录下。具体为,dobulkload节点根据各hfile文件所属region,对hfile文件进行分组,并确定管理region的regionserver,通过与regionserver进行交互,将hfile文件导入实际目录下,显然可以看出,本申请实施例中的dobulkload中的regionserver无需执行现有技术的一系列操作只需将目标reduce生成的hfile文件转移至该表对应的实际目录下。需要说明的是,本申请中的每一表的实际目录为专门存储需要入库该表的待写入数据。至此,完成图3所示流程。通过图3所示流程可以看出,本申请实施例中,map节点对待处理数据进行处理后,可得到多个待写入数据,并确定各待写入数据所属表的标识,后续节点(stuffle节点、reduce节点、dobulkload节点)可根据map节点提供的各待写入数据所属表的标识,区分属于不同表的待写入数据,进而将各待写入数据输出到不同表中,实现多表输出。此外,本申请中,由于数据入库之前已生成可直接存储至数据库底层的hfile文件,并利用dobulkload节点的hfile文件导入功能直接入库,不需要regionserver针对每一个数据执行一系列的写入操作,因此,可有效提升数据入库效率,降低对数据查询的影响。下面对步骤301中map节点对待处理数据进行处理,得到待写入数据、待写入数据对应的rowkey以及待写入数据所属表的标识的过程进行描述。参见图4,为本申请实施例示出的一种步骤301的实现流程。如图4所示,该流程可包括以下步骤:步骤401,map节点获取已创建的表的特征。hbase数据库以表的形式存储数据,因此,在写入数据之前,需要根据具体业务需求,创建用于满足业务所需的各种类型的表。比如,用于存储身份证信息的身份证信息表;用于存储城市人口信息的城市人口信息表。本步骤中,map节点获取已创建的表的特征。比如,身份证信息表可包括姓名、性别、身份证号、家庭住址等特征;城市人口信息表可包括姓名、身份证号、家庭住址等特征。步骤402,map节点从待处理数据中,提取与表的特征匹配的待写入数据。这里,需要说明的是,待处理数据为原始数据,可能包含不需要存储到数据库中的数据。为此,本步骤需要从待处理数据中提取需要存储到数据库中的数据。具体为,map节点根据已创建的表的特征,从待处理数据中,提取与表的特征匹配的待写入数据。比如,map节点读取到一条数据格式为“姓名+性别+身份证号+家庭住址”的待处理数据,该待处理数据具体为“小王+男+123456+陕西西安”。hbase数据库预先创建有城市人口信息表,该城市人口信息表包括如下特征:姓名、身份证号、家庭住址。则map节点根据城市人口信息表包括的上述特征,从待处理数据“小王+男+123456+陕西西安”中,提取“小王+123456+陕西西安”作为待写入数据。步骤403,map节点根据预设的生成规则,生成待写入数据对应的rowkey。如前所述,表中以key-value对的形式存储数据。其中,key为数据对应的rowkey。map节点生成rowkey的过程,可采用现有技术实现,这里不作详细介绍。步骤404,map节点将待写入数据所匹配到的表的标识,确定为待写入数据所属表的标识。如前所述,map节点基于表的特征提取待写入数据,因此,可确定该待写入数据属于该表,该表的标识即为待写入数据所属表的标识。比如,map节点根据城市人口信息表的特征,提取待写入数据“小王+123456+陕西西安”,则该待写入数据属于城市人口信息表,该待写入数据所属表的标识为城市人口信息表的标识。至此,完成图4所示流程。通过图4所示流程,map节点通过提取各表的特征,然后分别确定与各表的特征相匹配的待写入数据,进而可以灵活地确定出待写入数据所属表的标识,不仅快速、准确度高而且通用性更强;此外,map节点可提取到各表所需待写入数据,以及确定各待写入数据所属表的标识。为后续shuffle节点基于表的标识进行数据分发打下基础。下面对步骤302中shuffle节点根据待写入数据所属表的标识和待写入数据对应的rowkey,确定处理待写入数据的目标reduce节点的过程进行描述。参见图5,为本申请实施例示出的一种步骤302的实现流程。如图5所示,该流程可包括以下步骤:步骤501,shuffle节点针对每一个reduce节点,获取预先配置的该reduce节点对应的region的rowkey范围以及该region所属表的标识。需要说明的是,本申请实施例中,reduce节点的数目与预先创建的各表的region的总数目相同。每一个reduce节点被配置处理一个region内的数据。比如,预先创建有2个表,分别记为table1和table2;其中,table1包括2个region,分别记为region1和region2;table2包括1个region,记为region3,则对应需要3个reduce节点,记为reducer1~reducer3。在此基础上,可配置reducer1处理属于region1的数据,reducer2处理属于region2的数据,reducer3处理属于region3的数据。每一个region对应有一定的rowkey范围。比如,region1的rowkey范围为rowkey0~rowkey10;region2的rowkey范围为rowkey11~rowkey20;region3的rowkey范围为rowkeya~rowkeyz。本步骤中,shuffle节点可根据上述配置,获取到各reduce节点可处理的待写入数据的rowkey范围以及所属表的标识。比如,根据前述配置可知,reducer1可处理属于table1的rowkey位于rowkey0~rowkey10之间的待写入数据;reducer2可处理属于table1的rowkey位于rowkey11~rowkey20之间的待写入数据;reducer3可处理属于table2的rowkey位于rowkeya~rowkeyz之间的待写入数据。步骤502,shuffle节点根据待写入数据所属表的标识和待写入数据对应的rowkey,匹配预先配置的各reduce节点对应的rowkey范围以及表的标识。步骤503,shuffle节点将匹配到的reduce节点确定为处理待写入数据的目标reduce节点。比如,当前待写入数据所属表的标识为table1,该待写入数据对应的rowkey为rowkey15。reducer1对应表的标识为table1,对应rowkey范围为rowkey0~rowkey10;reducer2对应表的标识为table1,对应rowkey范围为rowkey11~rowkey20;reducer3对应表的标识为table2,对应rowkey范围为rowkeya~rowkeyz。可以看出,当前待写入数据落入reducer2的处理范围,因此,确定reducer2为处理当前待写入数据的目标reduce节点。至此,完成图5所示流程。通过图5所示流程,shuffle节点可确定处理待写入数据的目标reduce节点,进而将待写入数据分发至目标reduce节点进行处理。下面对表标识的传输过程进行描述。参见图6,为本申请实施例示出的一种表标识传输过程的实现流程。如图6所示,该流程可包括以下步骤:步骤601,map节点根据待写入数据对应的rowkey和待写入数据所属表的标识,生成待写入数据对应的目标键。map节点在通过步骤301得到待写入数据对应的rowkey和待写入数据所属表的标识后,可通过本步骤确定待写入数据对应的目标键。这里,目标键为map节点根据待写入数据对应的rowkey以及待写入数据所属表的标识生成的新键。作为一个实施例,map节点可直接将待写入数据所属表的标识与待写入数据对应的rowkey拼接,作为待写入数据对应的目标键。比如,待写入数据对应的rowkey为rowkey1,待写入数据所属表的标识为table1,则生成的该待写入数据对应的目标键可以为table1#rowkey1。步骤602,shuffle节点解析该目标键,获取待写入数据对应的rowkey和待写入数据所属表的标识。本步骤中,shuffle节点从map节点提供的目标键中,解析得到待写入数据对应的rowkey以及待写入数据所属表的标识。比如,map节点采用前述拼接方式,生成待写入数据对应目标键table1#rowkey1,则shuffle节点可根据map节点的拼接规则,解析该目标键,获取待写入数据对应的rowkey1,以及待写入数据所属表的标识table1。shuffle节点通过本步骤获取到待写入数据对应的rowkey以及待写入数据所属表的标识后,可执行步骤302确定处理该待写入数据的目标reduce节点。至此,完成图6所示流程。通过图6所示流程可以看出,本申请实施例中,map节点与shuffle节点之间可基于key(目标键)传输待写入数据所属表的标识。下面通过一具体实施例描述本申请提供的数据处理方法。参见图7,为本申请实施例示出的一种数据处理系统的结构示意图。该系统包括2个map节点,分别为mapper1、mapper2;3个reduce节点,分别为reducer1~reducer3;1个dobulkload节点;1个shuffle节点(图中未示出)。待处理文件预先存储在hdfs系统中。该待处理文件包括若干待处理数据,待处理数据的数据格式为“姓名+性别+身份证号+家庭住址”。可预先将待处理文件中的待处理数据切分为两部分,分别由mapper1和mapper2处理。hbase数据库中预先创建2个表,分别为身份证信息表(记为table1)和城市人口信息表(记为table2)。table1包括表特征:姓名、性别、身份证号、家庭住址;table2包括表特征:姓名、身份证号、家庭住址。其中,table1包括2个region,分别为region1和region2,region1对应rowkey范围为rowkey0~rowkey10,region2对应rowkey范围为rowkey11~rowkey20;table2包括1个region,记为region3,该region3对应rowkey范围为rowkeya~rowkeyz。配置reducer1处理table1中rowkey0~rowkey10之间的待写入数据,即属于region1的待写入数据;配置reducer2处理table1中rowkey11~rowkey20之间的待写入数据,即属于region2的待写入数据;配置reducer3处理table2中rowkeya~rowkeyz之间的待写入数据,即属于region3的待写入数据。以mapper1读取一条待处理数据为例,该待处理数据为“小王+男+123456+陕西西安”。mapper1根据table1的表特征,提取待写入数据“小王+男+123456+陕西西安”,生成该待写入数据对应的rowkey,记为rowkey1,并获取该待写入数据所属表的标识为table1;同理,mapper1可根据table2的表特征,提取待写入数据“小王+123456+陕西西安”,生成该待写入数据对应的rowkey,记为rowkeyb,并获取该待写入数据所属表的标识为table2。现以mapper1提取到的待写入数据“小王+123456+陕西西安”为例,mapper1根据该待写入数据所属表的标识table2以及该待写入数据对应的rowkeyb,生成该待写入数据对应的新键(table2#rowkeyb)。shuffle节点根据mapper1提供的待写入数据“小王+123456+陕西西安”对应的新键(table2#rowkeyb),解析出该待写入数据所属表的标识table2,以及该待写入数据对应的行键rowkeyb。shuffle节点获取预先配置的各reduce节点可处理的待写入数据范围,比如,reducer1可处理table1中rowkey位于rowkey0~rowkey10之间的待写入数据;reducer2可处理table1中rowkey位于rowkey11~rowkey20之间的待写入数据;reducer3可处理table2中rowkey位于rowkeya~rowkeyz之间的待写入数据。shuffle节点根据各reduce节点可处理的待写入数据的范围,确定当前待写入数据“小王+123456+陕西西安”应送入reducer3处理。shuffle节点将该待写入数据“小王+123456+陕西西安”、该待写入数据对应的rowkeyb以及该待写入数据所属表的标识table2发送至reducer3。reducer3接收到待写入数据“小王+123456+陕西西安”以及对应的rowkeyb后,将rowkeyb以及“小王+123456+陕西西安”写入table2对应的临时目录下的hfile1中,比如,/outputdir/table2/columnfamily/hfile1。同理,shuffle节点可根据mapper1提供的待写入数据“小王+男+123456+陕西西安”所属表的标识table1,以及该待写入数据对应的rowkey1,确定处理该待写入数据的reduce节点为reducer1。shuffle节点将该待写入数据“小王+男+123456+陕西西安”、该待写入数据对应的rowkey1以及该待写入数据所属表的标识table1发送至reducer1。reducer1接收到待写入数据“小王+男+123456+陕西西安”以及对应的rowkey1后,将rowkey1以及“小王+男+123456+陕西西安”写入table1对应的临时目录下的hfile2中,比如,/outputdir/table1/columnfamily/hfile2。这里,需要说明的是,由于reducer1负责处理region1(对应rowkey0~rowkey10)内的待写入数据,因此,其写入hfile2中的数据均为属于region1的数据,换言之,hfile2属于region1。通过上述处理过程,可将各map节点提取到的待写入数据分别写入各表对应的临时目录下的hfile文件中。dobulkload节点遍历各表对应临时目录下的hfile文件,以从table1对应临时目录下遍历到hfile2~hfile5为例。dobulkload节点根据hfile2~hfile5所属region,对hfile2~hfile5进行分组。比如,hfile2和hfile3属于region1,hfile4和hfile5属于region2。dobulkload节点获取负责管理各region的regionserver(简称rs)信息,比如,region1由rs1管理,region2由rs2管理。dobulkload节点通过与rs1交互,将属于region1的hfile2和hfile3导入table1对应的实际目录下,比如,/hbasedir/table1/region1/columnfamily/hfile2;/hbasedir/table1/region1/columnfamily/hfile3。dobulkload节点通过与rs2交互,将属于region2的hfile4和hfile5导入table1对应的实际目录下,比如,/hbasedir/table1/region2/columnfamily/hfile4;/hbasedir/table1/region2/columnfamily/hfile5。同理,dobulkload节点可遍历table2对应临时目录下的hfile文件,比如,hfile1。dobulkload节点确定该hfile1属于region3。该region3由rs1管理,则dobulkload节点通过与rs1交互,将属于region3的hfile1导入table2对应的实际目录下,比如,/hbasedir/table2/region3/columnfamily/hfile1。至此,完成数据入库。此外,申请人针对现有数据处理方法以及本申请提供的数据处理方法进行如下测试:测试硬件环境如下:服务器名内存cpu网卡磁盘node1252g56核112线程2.00ghz万兆网卡18.2t+744.7g+558.4gnode2252g56核112线程2.40ghz万兆网卡18.2t+744.7g+558.4gnode3252g56核112线程2.40ghz万兆网卡18.2t+744.7g+558.4gnode4252g56核112线程2.40ghz万兆网卡18.2t+1.1t表1hbase中各角色的配置如下:master内存regionserver个数regionserver内存32g420g表2hbase中表的配置如下:hbase表的个数字段数每个表的列族数每个表的region个数4146110表3数据导入效率对比如下:表4可以看出,在相同硬件环境、相同软件配置以及相同数据量下,本申请的数据处理方案相对于现有数据处理方案,可大大提升数据入库效率,且数据量越大,效率提升越明显。以上为对本申请实施例提供的方法的描述,下面对本申请实施例提供的系统进行描述:参见图8,为本申请实施例提供的系统的结构示意图。该系统包括:map节点801、shuffle节点802、reduce节点803以及dobulkload节点804,所述map节点801,用于对待处理数据进行处理,得到待写入数据、所述待写入数据对应的rowkey以及所述待写入数据所属表的标识;所述shuffle节点802,用于根据所述待写入数据所属表的标识和所述待写入数据对应的rowkey,确定处理所述待写入数据的目标reduce节点,并将所述待写入数据、所述待写入数据对应的rowkey以及所述待写入数据所属表的标识发送至所述目标reduce节点803;所述目标reduce节点803,用于将所述待写入数据和所述待写入数据对应的rowkey,写入所述待写入数据所属表对应的临时目录下的hfile文件中;所述dobulkload节点804,用于将表对应的临时目录下的hfile文件,转移至该表对应的实际目录下。作为一个实施例,所述map节点801对待处理数据进行处理,得到待写入数据、所述待写入数据对应的rowkey以及所述待写入数据所属表的标识,包括:获取已创建的表的特征;从所述待处理数据中,提取与所述表的特征匹配的待写入数据;根据预设的生成规则,生成所述待写入数据对应的rowkey;将所述待写入数据所匹配的表的标识,确定为所述待写入数据所属表的标识。作为一个实施例,所述map节点801,还用于根据所述待写入数据对应的rowkey和所述待写入数据所属表的标识,生成所述待写入数据对应的目标键;所述shuffle节点802,还用于解析所述目标键,获取所述待写入数据对应的rowkey和所述待写入数据所属表的标识。作为一个实施例,所述map节点801根据所述待写入数据对应的rowkey和所述待写入数据所属表的标识,生成所述待写入数据对应的目标键,包括:所述map节点801将所述待写入数据所属表的标识与所述待写入数据对应的rowkey拼接,作为所述待写入数据对应的目标键。作为一个实施例,所述shuffle节点802根据所述待写入数据所属表的标识和所述待写入数据对应的rowkey,确定处理所述待写入数据的目标reduce节点,包括:针对每一个reduce节点,获取预先配置的该reduce节点对应的region的rowkey范围以及该region所属表的标识;根据所述待写入数据所属表的标识和所述待写入数据对应的rowkey,匹配预先配置的各reduce节点对应的rowkey范围以及表的标识;将匹配到的reduce节点确定为处理所述待写入数据的目标reduce节点803。至此,完成图8所述系统的描述。以上所述仅为本申请实施例的较佳实施例而已,并不用以限制本申请,凡在本申请实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1