一种数据处理方法及装置与流程

文档序号:11234105
一种数据处理方法及装置与流程

本发明涉及数据处理领域,尤其涉及一种数据处理方法及装置。



背景技术:

基于海杜普的结构化查询语言(SQL on Hadoop)是大数据领域一个重要研究方向,目前的SQL on Hadoop系统主要有两种架构,一种是基于某个运行时框架,比如映射归约(Map Reduce,MR)计算模型,来构建查询引擎+分布式文件系统(Hadoop Distributed File System,HDFS)/HBASE系统,比如Hive为Hadoop的一个数据仓库工具;另一种是借助关系数据库的大规模并行处理系统(Massively Parallel Processing,MPP))架构及结构化查询语言(Structured Query Language,SQL)引擎+HDFS/HBASE系统,比如Impala,HAWQ等。但是,无论哪种架构都会涉及到数据分布,数据分布如果不均匀,就会出现数据倾斜的情况,而数据倾斜将会进一步带来系统中央处理器(Central Processing Unit,CPU)CPU、输入/输出(Input/Output,IO)等方面执行效率低的问题。



技术实现要素:

本发明实施例的目的是提供一种数据处理方法及装置,用以减轻SQL on hadoop系统中数据分布不均匀的问题,以提升系统性能。

本发明实施例的目的是通过以下技术方案实现的:

第一方面,一种数据处理方法,所述方法应用于基于Hadoop的结构化查询语言SQL on hadoop系统,所述系统中包括SQL服务器和Hadoop系统,所述Hadoop系统包括系统节点和数据节点,包括:SQL服务器获取所述Hadoop系统中至少一个数据节点分配待处理文件的文件分配结果,所述文件分配结果包括所述至少一个数据节点中每个数据节点对应的待处理文件数量;根据所述文件分配结果从所述至少一个数据节点中确定至少一个待调度数据节点,所述待调度数据节点是指待处理文件数量与待处理文件数量平均值的差值高于预设阈值的数据节点,所述待处理文件数量平均值是根据所述文件分配结果中每个数据节点对应的待处理文件数量计算得到的;确定与所述至少一个待调度数据节点中每个待调度数据节点相对应的目标数据节点集合,其中,每个所述目标数据节点集合中包括的目标数据节点数目小于等于与所述目标数据节点集合相对应的待处理数据节点的待处理文件数量与待处理文件数量平均值的差值;向至少一个所述目标数据节点集合中的目标数据节点发送第一调度指示;其中,所述目标数据节点是指保存相应待调度数据节点的待处理文件的文件副本,且待处理文件文件数量低于所述待处理文件数量平均值的数据节点,所述第一调度指示用于指示对应的目标数据节点处理保存的目标文件以及将处理的结果返馈至相应的待调度数据节点,所述目标文件与所述目标文件所在的目标数据节点相应的待调度数据节点中保存的待处理文件相对应,所述目标文件是该待处理文件的文件副本。

因此,SQL服务器获取Hadoop系统中至少一个数据节点分配待处理文件的文件分配结果,根据文件分配结果从至少一个数据节点中确定至少一个待调度数据节点。这里的待调度数据节点为高负荷数据节点。进一步地,确定与至少一个待调度数据节点中每个待调度数据节点相对应的目标数据节点集合,并向目标数据节点集合中的目标数据节点发送第一调度指示。这里的目标数据节点为低负荷数据节点。采用上述的方法能够将高负荷待调度数据节点的处理负荷分担至保存高负荷待调度数据节点的待处理文件的文件副本的低负荷数据节点,减轻SQL on hadoop系统中数据分布不均匀的问题,提升系统性能。

结合第一方面,在第一种可能的实现方式中,还包括:确定所述至少一个待调度数据节点中的第一待调度数据节点保存有第一类型文件的文件标识;获取第一类型节点的节点标识,其中,所述第一类型文件是指发生文件移动的待处理文件,所述第一类型节点是所述第一类型文件当前所在的数据节点;向所述第一类型节点发送第二调度指示,所述第一类型节点的待处理文件文件数量低于所述待处理文件数量平均值,所述第二调度指示用于指示所述第一类型节点处理所述第一类型文件,以及将处理结果反馈至所述第一待调度数据节点。

结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,确定与所述至少一个待调度数据节点中每个待调度数据节点相对应的目标数据节点集合,包括:确定与所述至少一个待调度数据节点中每个待调度数据节点相对应的备选数据节点集合,其中,所述备选数据节点是指保存对应待调度数据节点的待处理文件的文件副本的数据节点;从所述备选数据节点集合中筛选出对应的目标数据节点集合。

结合第一方面或第一方面的任一一种可能的实现方式,在第三种可能的实现方式中,从所述备选数据节点集合中筛选出对应的目标数据节点集合,包括:针对所述至少一个待调度节点中的每个待调度数据节点的备选数据节点集合分别执行:确定第一差值,所述第一差值是指当前待调度数据节点对应的待处理文件数量与所述待处理文件数量平均值的差值;根据所述文件分配结果,查询针对所述当前待调度数据节点的备选数据节点集合中每个备选数据节点对应的待处理文件数量,确定所述当前待调度数据节点的存在目标数据节点的至少一个待处理文件;从针对所述当前待调度数据节点的备选数据节点集合中,确定与所述至少一个待处理文件中每个待处理文件相对应的目标数据节点;若确定针对当前待调度数据节点的目标数据节点总数小于等于所述第一差值,则所述目标数据节点集合包括所有目标数据节点;或者,若确定所述目标数据节点总数大于所述第一差值,则所述目标数据节点集合包括随机选取的与所述第一差值等值的目标数据节点。

结合第一方面或第一方面的任一一种可能的实现方式,在第四种可能的实现方式中,从针对所述当前待调度数据节点的备选数据节点集合中,确定所述至少一个待处理文件中每个待处理文件相对应的目标数据节点,包括:针对所述至少一个待处理文件中每个待处理文件分别执行:若确定当前待处理文件存在一个目标数据节点,则将所述目标数据节点作为与所述当前待处理文件相对应的目标数据节点;若确定所述当前待处理文件存在至少两个目标数据节点,则选取其中待处理文件数量最小的目标数据节点作为与所述当前待处理文件相对应的目标数据节点。

结合第一方面或第一方面的任一一种可能的实现方式,在第五种可能的实现方式中于,若确定所述当前待处理文件存在至少两个目标数据节点,所述方法还包括:若确定所述当前待处理文件存在至少两个目标数据节点,且所述至少两个目标数据节点中待处理文件数量最小的目标数据节点数目不止一个,则选择其中与所述当前待处理数据节点之间的网络开销最小的目标数据节点作为与所述当前待处理文件相对应的目标数据节点。

此外,在SQL服务器从针对每个待调度数据节点的备选数据节点集合中筛选出对应的目标数据节点集合之后,在向目标数据节点集合中的目标数据节点分别发送第一调度指示之前,为保证调度后全局达到最优,不致出现给待调度数据节点减轻负荷后,造成其他数据节点超负荷。可选的,SQL服务器根据每个待调度数据节点的目标数据节点集合,确定每个数据节点对应的最新待处理文件数量。此时的最新待处理文件数量为原来系统节点分配的待处理文件数量加上需要处理的文件副本数量,或者,原来系统节点分配的待处理文件数量减去即将调度给其他节点处理的文件数量。SQL服务器根据每个数据节点对应的最新待处理文件数量确定不存在最新待处理文件数量与待处理文件数量平均值的差值高于预设阈值的数据节点时,向目标数据节点集合中的目标数据节点分别发送第一调度指示。

第二方面,一种数据处理方法,所述方法应用于基于Hadoop的结构化查询语言SQL on hadoop系统,所述系统中包括SQL服务器和Hadoop系统,所述Hadoop系统包括系统节点和数据节点,包括:SQL服务器获取所述Hadoop系统中至少一个数据节点分配待处理文件的文件分配结果,所述文件分配结果包括所述至少一个数据节点中每个数据节点对应的待处理文件数量;根据所述文件分配结果确定至少一个待调度数据节点,所述待调度数据节点是指待处理文件数量与待处理文件数量平均值的差值高于预设阈值的数据节点,所述待处理文件数量平均值是根据所述文件分配结果中每个数据节点对应的待处理文件数量计算得到的;在根据所述至少一个待调度数据节点中的第一待调度数据节点保存的第一类型文件的文件标识,获取所述第一类型节点的节点标识,其中,所述第一类型文件是指发生文件移动的待处理文件,所述第一类型节点是指所述第一类型文件当前所在数据节点,所述第一类型节点的待处理文件文件数量低于所述待处理文件数量平均值;向所述第一类型节点发送第二调度指示,所述第二调度指示用于指示所述第一类型节点处理所述第一类型文件,以及将处理结果反馈至所述第一待调度数据节点。

因此,本发明实施例中提出让文件移至的低负荷数据节点执行该文件的本地读,再将相应的处理结果回传至高负荷数据节点,有效降低了网络开销。第一方面和第二方面的两个方案可以结合使用,也可以分别单独作为一种数据处理方法,即两者可以并行使用,也可以结合使用。

第三方面,一种数据处理装置,所述装置位于SQL服务器,所述装置应用于SQL on hadoop系统,所述系统中包括所述SQL服务器和Hadoop系统,所述Hadoop系统包括系统节点和数据节点,包括:获取单元,用于获取所述Hadoop系统中至少一个数据节点分配待处理文件的文件分配结果,所述文件分配结果包括所述至少一个数据节点中每个数据节点对应的待处理文件数量;分析单元,用于根据所述文件分配结果从所述至少一个数据节点中确定至少一个待调度数据节点,所述待调度数据节点是指待处理文件数量与待处理文件数量平均值的差值高于预设阈值的数据节点,所述待处理文件数量平均值是根据所述文件分配结果中每个数据节点对应的待处理文件数量计算得到的;处理单元,用于确定与所述至少一个待调度数据节点中每个待调度数据节点相对应的目标数据节点集合;发送单元,用于向至少一个所述目标数据节点集合中的目标数据节点发送第一调度指示;其中,所述目标数据节点集合中包括的目标数据节点数目小于等于相应待处理数据节点的待处理文件数量与待处理文件数量平均值的差值,所述目标数据节点是指保存相应待调度数据节点的待处理文件的文件副本,且待处理文件文件数量低于所述待处理文件数量平均值的数据节点,其中,每个目标数据节点对应一个相应待处理数据节点的待处理文件,所述第一调度指示对应的目标数据节点处理保存的目标文件以及将处理的结果返馈至相应的待调度数据节点,所述目标文件与所述目标文件所在的目标数据节点相应的待调度数据节点中保存的待处理文件相对应,所述目标文件是该待处理文件的文件副本。

第三方面的具体实现方式参照第一方面的具体实现方式。

第四方面,一种数据处理装置,所述装置位于SQL服务器,所述装置应用于SQL on hadoop系统,所述系统中包括所述SQL服务器和Hadoop系统,所述Hadoop系统包括系统节点和数据节点,包括:获取单元,用于获取所述Hadoop系统中至少一个数据节点分配待处理文件的文件分配结果,所述文件分配结果包括所述至少一个数据节点中每个数据节点对应的待处理文件数量;分析单元,用于根据所述文件分配结果确定至少一个待调度数据节点,所述待调度数据节点是指待处理文件数量与待处理文件数量平均值的差值高于预设阈值的数据节点,所述待处理文件数量平均值是根据所述文件分配结果中每个数据节点对应的待处理文件数量计算得到的;处理单元,用于在根据所述至少一个待调度数据节点中的第一待调度数据节点保存的第一类型文件的文件标识,获取所述第一类型节点的节点标识,其中,所述第一类型文件是指发生文件移动的待处理文件,所述第一类型节点是指所述第一类型文件当前所在数据节点,所述第一类型节点的待处理文件文件数量低于所述待处理文件数量平均值;发送单元,用于向所述第一类型节点发送第二调度指示,所述第二调度指示用于指示所述第一类型节点处理所述第一类型文件,以及将处理结果反馈至所述第一待调度数据节点。

第五方面,一种用于数据处理的服务器,所述服务器应用于SQL on hadoop系统,所述系统中包括所述服务器和Hadoop系统,所述Hadoop系统包括系统节点和数据节点;所述用于数据处理的服务器包括收发器、处理器和存储器,所述收发器、所述处理器以及所述存储器之间通过总线连接,其中:所述存储器,用于存储所述处理器执行的程序代码;所述处理器,用于通过所述存储器中的程序代码,执行以下操作:获取Hadoop系统中至少一个数据节点分配待处理文件的文件分配结果,所述文件分配结果包括所述至少一个数据节点中每个数据节点对应的待处理文件数量;根据所述文件分配结果从所述至少一个数据节点中确定至少一个待调度数据节点,所述待调度数据节点是指待处理文件数量与待处理文件数量平均值的差值高于预设阈值的数据节点,所述待处理文件数量平均值是根据所述文件分配结果中每个数据节点对应的待处理文件数量计算得到的;以及确定与所述至少一个待调度数据节点中每个待调度数据节点相对应的目标数据节点集合,其中,每个所述目标数据节点集合中包括的目标数据节点数目小于等于与所述目标数据节点集合相对应的待处理数据节点的待处理文件数量与待处理文件数量平均值的差值;所述处理器,还用于通过所述存储器中的程序代码调用所述收发器,执行以下操作:向至少一个所述目标数据节点集合中的目标数据节点发送第一调度指示;其中,所述目标数据节点是指保存相应待调度数据节点的待处理文件的文件副本,且待处理文件文件数量低于待处理文件数量平均值的数据节点,所述第一调度指示用于指示对应的目标数据节点处理保存的目标文件以及将处理的结果返馈至相应的待调度数据节点,目标文件与目标文件所在的目标数据节点相应的待调度数据节点中保存的待处理文件相对应,目标文件是该待处理文件的文件副本。

第五方面的具体实现方式参照第一方面的具体实现方式。

第六方面,一种用于数据处理的服务器,所述服务器应用于SQL on hadoop系统,所述系统中包括所述服务器和Hadoop系统,所述Hadoop系统包括系统节点和数据节点;所述用于数据处理的服务器包括收发器、处理器和存储器,所述收发器、所述处理器以及所述存储器之间通过总线连接,其中:所述存储器,用于存储所述处理器执行的程序代码;所述处理器,用于通过所述存储器中的程序代码,执行以下操作:获取Hadoop系统中至少一个数据节点分配待处理文件的文件分配结果,所述文件分配结果包括所述至少一个数据节点中每个数据节点对应的待处理文件数量;根据文件分配结果确定至少一个待调度数据节点,待调度数据节点是指待处理文件数量与待处理文件数量平均值的差值高于预设阈值的数据节点,待处理文件数量平均值是根据文件分配结果中每个数据节点对应的待处理文件数量计算得到的;以及在根据至少一个待调度数据节点中的第二待调度数据节点保存的第二类型文件的文件标识,获取第二类型节点的节点标识,其中,第二类型文件是指发生文件移动的待处理文件,第二类型节点是指第二类型文件当前所在数据节点,第二类型节点的待处理文件文件数量低于待处理文件数量平均值;所述处理器,还用于通过所述存储器中的程序代码调用所述收发器,执行以下操作:向第二类型节点发送第二调度指示,第二调度指示用于指示第二类型节点处理第二类型文件,以及将处理结果反馈至第二待调度数据节点。

本发明实施例中主要应用于SQL on hadoop系统,其一,SQL服务器获取Hadoop系统中至少一个数据节点分配待处理文件的文件分配结果,根据文件分配结果从至少一个数据节点中确定至少一个待调度数据节点。这里的待调度数据节点为高负荷数据节点。进一步地,确定与至少一个待调度数据节点中每个待调度数据节点相对应的目标数据节点集合,并向目标数据节点集合中的目标数据节点发送第一调度指示。这里的目标数据节点为低负荷数据节点。采用本发明实施例提供的方法能够将高负荷待调度数据节点的处理负荷分担至保存高负荷待调度数据节点的待处理文件的文件副本的低负荷数据节点,减轻SQL on hadoop系统中数据分布不均匀的问题,提升系统性能。其二,SQL服务器获取文件分配结果,并根据文件分配结果确定至少一个待调度数据节点,即高负荷数据节点,在确定至少一个待调度数据节点中的第一待调度数据节点保存的第一类型文件的文件标识时,确定该文件标识对应的文件发生移动,进而获取第一类型节点的节点标识,这里的第一类型节点为保存移动文件的低负荷数据节点,以及向第一类型节点发送第二调度指示。因此,本发明实施例中提出让文件移至的低负荷数据节点执行该文件的本地读,再将相应的处理结果回传至高负荷数据节点,有效降低了网络开销。

附图说明

图1为本发明实施例中SQL on hadoop系统结构示意图;

图2为本发明实施例中数据处理方法的概述流程图之一;

图3为本发明实施例中数据处理方法的概述流程图之二;

图4为本发明实施例中数据处理过程中的分配调度示意图;

图5为本发明实施例中数据处理装置的结构示意图之一;

图6为本发明实施例中数据处理装置的结构示意图之二;

图7为本发明实施例中用于数据处理的服务器的结构示意图之一;

图8为本发明实施例中用于数据处理的服务器的结构示意图之二。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

现有技术中,从系统架构分层优化角度,主要提出两类方案解决数据倾斜问题:

第一类是优化执行层方面的,例如一致性哈希算法等;

一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和共用地址冗余协议(Common Access Redundancy Protocol,CARP)十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得分布式哈希表(Distributed Hash Table,DHT)可以在对等网络(Peer to Peer,P2P)环境中真正得到应用。现在,一致性hash算法在分布式系统中也得到了广泛应用,比如在数据库集群中,常采用一致性哈希算法对集群节点数据进行合理划分,避免数据倾斜,进而提升系统性能并保持较好的扩展性。

第二类是存储层方面的,例如HDFS系统采用的负载平衡(load balance)技术等。

HDFS采用的load balance技术主要是依据一些规则尽可能的去避免数据倾斜带来的负载问题,比如以下四个规则:

1、将数据块的一个副本放在正在写这个数据块的节点上。

2、尽量将数据块的不同副本分布在不同的机架上,这样集群可在完全失去某一机架的情况下还能存活。

3、一个副本通常被放置在和写文件的节点同一机架的某个节点上,这样可以减少跨越机架的网络I/O。

4、尽量均匀地将HDFS数据分布在集群的数据节点(DataNode)中。

本发明实施例从一个新的角度提出了减轻SQL on hadoop系统中数据分布不均匀的问题的数据处理方法,有效提升了系统的性能。

参阅图1所示,本发明实施例的主要应用场景为SQL on hadoop系统,图1为SQL on hadoop系统结构示意图。其中,SQL服务器可以与hadoop系统中的系统节点进行通信,也可以与hadoop系统中的数据节点进行通信。

系统节点(NameNode)为各个数据节点(DataNode)进行待处理文件的分配,一般地,系统节点采用Hash分布的方式为为各个数据节点分配待处理文件,SQL服务器(SQL Server)可以获取系统节点为各个数据节点分别分配的待处理文件的文件数量,并针对其中的待调度数据节点发送调度指示。

参阅图2所示,本发明实施例提供一种数据处理方法,具体包括以下步骤:

该方法应用于SQL on hadoop系统,该系统中包括SQL服务器和Hadoop系统,其中Hadoop系统包括系统节点和数据节点。该方法应用于SQL处理器。

步骤200:SQL服务器获取Hadoop系统中至少一个数据节点分配待处理文件的文件分配结果。

其中,文件分配结果包括至少一个数据节点中每个数据节点对应的待处理文件数量。

一般地,系统节点将所有待处理文件按照Hash分布分配至各个数据节点上,根据Hash分布,每个数据节点对应不同数量的待处理文件。在分配结束后,SQL服务器可以获取该文件分配结果。

步骤210:SQL服务器根据文件分配结果从至少一个数据节点中确定至少一个待调度数据节点。

其中,待调度数据节点是指待处理文件数量与待处理文件数量平均值的差值高于预设阈值的数据节点,即高负荷数据节点。待处理文件数量平均值是根据文件分配结果中每个数据节点对应的待处理文件数量计算得到的。

具体的,SQL服务器根据文件分配结果,将所有数据节点分别对应的待处理文件数量加和,再除以所有数据节点的总数得到待处理文件数量平均值。

进一步地,SQL服务器根据文件分配结果确定待处理文件数量与待处理文件数量平均值的差值高于预设阈值的数据节点。例如,待处理文件数量平均值为3,而数据节点1的待处理文件数量为6,预设阈值为2,则6-3>2,数据节点1为待调度数据节点。

须知,对于非待调度数据节点,由数据节点自身完成对应待处理文件的本地处理,例如,本地读。

此外,执行步骤210之后,SQL服务器确定至少一个待调度数据节点中的第一待调度数据节点保存有第一类型文件的文件标识,则获取第一类型节点的节点标识,其中,第一类型文件是指发生文件移动的待处理文件,第一类型节点是指第一类型文件当前所在的数据节点。

进一步地,SQL服务器向第一类型节点发送第二调度指示,该第一类型节点的待处理文件文件数量低于待处理文件数量平均值,其中,第二调度指示用于指示第一类型节点处理第一类型文件,以及将处理结果反馈至第一待调度数据节点。

现有技术中,在SQL on hadoop系统中,HDFS会自动将高负荷数据节点中的文件移至低负荷数据节点,因此HDFS中的文件位置不受分配控制,会出现文件移动的现象,导致在将待处理文件进行Hash分布后,高负荷数据节点中的文件发生移动,本地没有该待处理文件。现有技术中,高负荷数据节点需要通过远程读取移动后的待处理文件,但是远程读取的过程会产生较大的网络传输开销。而本发明实施例中提出让文件移至的低负荷数据节点执行该文件的本地读,再将相应的处理结果回传至高负荷数据节点,有效降低了网络开销。

此外,基于与本发明实施例相同的思路,针对一般数据节点如果也发生文移动的现象,此时也可通过对发生文件移动的文件当前所在的节点发送第二调度指示,让该文件在当前所在的节点完成本地读,再将相应的处理结果反馈至原数据节点,以避免大量的网络开销。

例如,SQL服务器在确定数据节点A为待调度数据节点后,若进一步确定数据节点A对应的文件1发送文件移动,不能在数据节点A本地完成针对文件1的本地读,假设文件1此时已移动至数据节点D,则当SQL服务器确定数据节点D的待处理文件文件数量低于待处理文件数量平均值时,向数据节点D发送第二调度指示,指示数据节点D处理文件1,即在数据节点D本地完成针对文件1的本地读,然后将处理结果回传至节点A。由于谓词下推可以提前过滤大部分数据,故此时回传的数据量比数据节点A远程读取文件1的数据量大小将显著减小,降低了网络传输的开销。

须知上述方案可以与图2对应的方案结合使用,也可以作为一种数据处理方法,即两者可以并行使用,也可以结合使用。

步骤220:SQL服务器确定与至少一个待调度数据节点中每个待调度数据节点相对应的目标数据节点集合。

其中,目标数据节点集合中包括的目标数据节点数目小于等于相应待处理数据节点的待处理文件数量与待处理文件数量平均值的差值,目标数据节点是指保存相应待调度数据节点的待处理文件的文件副本,且待处理文件文件数量低于待处理文件数量平均值的数据节点,其中,每个目标数据节点对应一个相应待处理数据节点的待处理文件。

可选的,SQL服务器首先确定与至少一个待调度数据节点中每个待调度数据节点相对应的备选数据节点集合,其中,备选数据节点是指保存对应待调度数据节点的待处理文件的文件副本的数据节点,进一步地从该备选数据节点集合中筛选出对应的目标数据节点集合。

现有技术中,根据HDFS的特点,可以设置每个待处理文件的文件副本数目,例如,设置每个待处理文件具有三个文件副本,分别存储于除被分配节点外的其它三个不同数据节点上。例如,系统节点根据Hash分布将文件1分配至数据节点2,则文件1有三个副本,假设根据HDFS规则,这三个副本分别位于数据节点1、数据节点5和数据节点6上。

因此,若此时数据节点2为待调度数据节点,则针对文件1的备选数据节点为数据节点1、数据节点5和数据节点6

可选的,SQL服务器确定针对每个待调度数据节点的备选数据节点集合,针对每个待调度数据节点分别执行:

按照预设次序查询针对当前待调度数据节点的全部或部分待处理文件的文件副本所在的数据节点。然后,将查询结果作为针对当前待调度数据节点的备选数据节点集合。

例如,数据节点3为待调度数据节点,数据节点3对应的待处理文件数量为5,SQL服务器可以按照文件分配顺序或者文件标识,依次确定每个待处理文件的文件副本所在节点,则当待处理文件数量为5时,最终得到的备选数据节点集合中包括15个数据节点。

又例如,数据节点3为待调度数据节点,数据节点3对应的待处理文件数量为5,若此时待处理文件平均值为3,则SQL服务器只需将数据节点3的2个待处理文件分配出去,可以无需确定5个待处理文件分别对应的备选数据节点,此时,SQL服务器可以按照文件分配顺序或者文件标识,依次确定其中两个待处理文件的文件副本所在节点,或者,随机选取两个待处理文件分别确定它们的文件副本所在节点,则最终得到的备选数据节点集合中包括6个数据节点。

须知,如果确定的备选数据节点数目较少,也可能对后续进一步筛选目标数据节点带来限制。

可选的,SQL服务器从备选数据节点集合中筛选出对应的目标数据节点集合,包括:

针对至少一个待调度节点中的每个待调度数据节点的备选数据节点集合分别执行:

首先,确定第一差值,第一差值是指当前待调度数据节点对应的待处理文件数量与待处理文件数量平均值的差值。

例如,当前待调度数据节点为数据节点1,数据节点1的待处理文件数量为7,待处理文件数量平均值为3,则第一差值为4,即数据节点1需要分出4个待处理文件,让其副本所在节点处理,才能减轻数据倾斜的问题。

第二,根据文件分配结果,查询针对当前待调度数据节点的备选数据节点集合中每个备选数据节点对应的待处理文件数量,确定当前待调度数据节点的存在目标数据节点的至少一个待处理文件。

仍以上述数据节点1为例,假设针对数据节点1的备选数据节点集合包括21个数据节点,针对文件1的三个备选数据节点均不满足待处理文件文件数量低于待处理文件数量平均值,则文件1没有对应的目标数据节点,文件1继续由数据节点1本地处理。针对文件2的三个备选数据节点中有一个数据节点满足待处理文件文件数量低于待处理文件数量平均值,则文件2有对应的目标数据节点。针对文件3的三个备选数据节点中有两个数据节点满足待处理文件文件数量低于待处理文件数量平均值,则文件3有对应的目标数据节点。以此类推。

第三,从针对当前待调度数据节点的备选数据节点集合中,确定与至少一个待处理文件中每个待处理文件相对应的目标数据节点。

可选的,针对至少一个待处理文件中每个待处理文件确定相对应的目标数据节点,可有以下两种具体情况:

第一种情况:若确定当前待处理文件存在一个目标数据节点,则将目标数据节点作为与当前待处理文件相对应的目标数据节点。

以上述文件2为例,文件2的三个备选数据节点中有一个数据节点满足待处理文件文件数量低于待处理文件数量平均值,则将该数据节点作为文件2相对应的目标数据节点。

第二种情况:若确定当前待处理文件存在至少两个目标数据节点,则选取其中待处理文件数量最小的目标数据节点作为与当前待处理文件相对应的目标数据节点。

以上述文件3为例,文件3的三个备选数据节点中有两个数据节点满足待处理文件文件数量低于待处理文件数量平均值,则将其中待处理文件数量最小的数据节点作为文件3相对应的目标数据节点。

进一步地,若确定当前待处理文件存在至少两个目标数据节点,且至少两个目标数据节点中待处理文件数量最小的目标数据节点数目不止一个,则选择其中与当前待处理数据节点之间的网络开销最小的目标数据节点作为与当前待处理文件相对应的目标数据节点。

可选地,SQL服务器可以根据路由距离和带宽计算网络开销,优选选择同一机架的数据节点,其次是同一数据中心的数据节点。

最后,在SQL服务器确定当前待调度数据节点的目标数据节点总数后,还包括以下两种情况:

第一种情况:若确定针对当前待调度数据节点的目标数据节点总数小于等于第一差值,则目标数据节点集合包括所有目标数据节点。

例如,仍以上述节点1为例,针对节点1的目标数据节点总数为2,小于第一差值4,则将这两个目标数据节点构成目标数据节点集合。

第二种情况:若确定目标数据节点总数大于第一差值,则目标数据节点集合包括随机选取的与第一差值等值的目标数据节点。

例如,仍以上述节点1为例,若此时针对节点1中的5个待处理文件分别确定一个目标数据节点,则针对节点1的目标数据节点总数为5,大于第一差值4,则从这5个目标数据节点中随机选取4个目标数据节点构成目标数据节点集合。

步骤230:SQL服务器向至少一个目标数据节点集合中的目标数据节点发送第一调度指示。

其中,第一调度指示用于指示对应的目标数据节点处理保存的目标文件以及将处理的结果返馈至相应的待调度数据节点,目标文件与目标文件所在的目标数据节点相应的待调度数据节点中保存的待处理文件相对应,目标文件是该待处理文件的文件副本。

此外,在SQL服务器从针对每个待调度数据节点的备选数据节点集合中筛选出对应的目标数据节点集合之后,在向目标数据节点集合中的目标数据节点分别发送第一调度指示之前,为保证调度后全局达到最优,不致出现给待调度数据节点减轻负荷后,造成其他数据节点超负荷,可选的,SQL服务器根据每个待调度数据节点的目标数据节点集合,确定每个数据节点对应的最新待处理文件数量。

此时的最新待处理文件数量为原来系统节点分配的待处理文件数量加上需要处理的文件副本数量,或者,原来系统节点分配的待处理文件数量减去即将调度给其他节点处理的文件数量。

SQL服务器根据每个数据节点对应的最新待处理文件数量确定不存在最新待处理文件数量与待处理文件数量平均值的差值高于预设阈值的数据节点时,向目标数据节点集合中的目标数据节点分别发送第一调度指示。

例如,数据节点3的目标数据数据节点集合中包括两个数据节点,分别为数据节点2和数据节点6,数据节点3的原来系统数据节点分配的待处理文件数量为6,减去即将调度给其他数据节点处理额文件数量为2,则最新待处理文件数量为4;而数据节点2的原来系统数据节点分配的待处理文件数量为2,加上需要处理的文件副本数量为1,则最新待处理文件数量为3;而数据节点6的原来系统数据节点分配的待处理文件数量为3,假设除数据节点3外,数据节点6还是其他两个数据节点的目标数据数据节点集合中的一员,此时需加上需要处理的文件副本数量为3,则最新待处理文件数量为6,变成高负荷数据节点,这样便造成新的数据倾斜问题。

此时,可以选择放弃将让数据节点6处理数据节点3的文件副本,或者,寻找负荷较低且保存有数据节点3对应文件的文件副本的数据节点,重新进行调度分配,以达到全局最优,避免数据倾斜问题。

参阅图3所述,本发明实施例提供一种数据处理方法,该方法包括:

步骤300:SQL服务器获取Hadoop系统中至少一个数据节点分配待处理文件的文件分配结果,文件分配结果包括至少一个数据节点中每个数据节点对应的待处理文件数量。

步骤310:SQL服务器根据文件分配结果确定至少一个待调度数据节点,待调度数据节点是指待处理文件数量与待处理文件数量平均值的差值高于预设阈值的数据节点,待处理文件数量平均值是根据文件分配结果中每个数据节点对应的待处理文件数量计算得到的。

步骤320:SQL服务器在根据至少一个待调度数据节点中的第一待调度数据节点保存的第一类型文件的文件标识,获取第一类型节点的节点标识,其中,第一类型文件是指发生文件移动的待处理文件,第一类型节点是指第一类型文件当前所在数据节点,第一类型节点的待处理文件文件数量低于待处理文件数量平均值。

步骤330:SQL服务器向第一类型节点发送第二调度指示,第二调度指示用于指示第一类型节点处理第一类型文件,以及将处理结果反馈至第一待调度数据节点。

可选的,结合SQL服务器发送第二调度指示,以及发送第一调度指示两种方案,能够更加有效地减轻数据倾斜问题,提升系统性能。

例如,数据节点A为待调度数据数据节点,待处理文件数目为7,待处理文件平均值为3,则第一差值为4。数据节点A的文件3发送文件移动,文件3移至数据节点D,数据节点D的待处理文件数量为0,SQL服务器向数据节点D发送第二调度指示,指示数据节点D完成文件3的本地读,并回传处理数据至数据节点A。数据节点A可以不用再确定文件3对应的备选数据数据节点,而针对其他6个文件或其中部分文件分别确定对应的备选数据数据节点。假设数据节点A分别确定其他6个文件的备选数据数据节点,构成备选数据数据节点集合,并从中选出文件1、文件4、文件7分别对应的目标数据数据节点。可知,目标数据数据节点的数目为3个,并向这3个目标数据节点分别发送第一调度指示。可见,通过两种调度方式的结合,能够更加有效地解决数据倾斜问题,提升系统性能。

参阅图4所示,在系统节点根据Hash分布完成文件分配后,数据节点1、数据节点2、数据节点3均只有2个待处理文件,数据节点4有6个待处理文件。图中只展示了数据节点1至数据节点4,其他数据节点未画出,由于系统节点已经为各个数据节点分配完毕待处理文件,因此系统节点也未画出。这里只展示了SQL服务器与各个数据节点进行通信的场景。

这里不考虑数据节点4有文件移动的情形发生。

SQL服务器根据文件分配结果,计算待处理文件平均值为(2*3+6)/4=3,预设阈值为0,则确定数据节点4的待处理文件数量6与待处理文件平均值3的差值3大于预设阈值0,因此数据节点4为待调度数据节点。

可选的,SQL服务器只依次确定文件1、文件2和文件3分别对应的备选数据节点,不针对其他文件确定相应的备选数据节点。

则文件1的备选数据节点为数据节点1、数据节点5、和数据节点7;

文件2的备选数据节点为数据节点2、数据节点6、和数据节点9;

文件3的备选数据节点为数据节点3、数据节点4、和数据节点8。

因此,数据节点4的备选数据节点集合为针对文件1的数据节点1、数据节点5、和数据节点7;针对文件2的数据节点2、数据节点6、和数据节点9;针对文件3的数据节点3、数据节点4、和数据节点8。

进一步地,SQL服务器确定针对文件1的目标数据节点为数据节点1,数据节点5和数据节点7的待处理文件数量均大于待处理文件平均值。

针对文件2的目标数据节点为数据节点2,数据节点2是数据节点2、数据节点6、和数据节点9当中负载最低的数据节点。

针对文件3的目标数据节点为数据节点3,确定方法与上述方法一致,不再赘述。

SQL服务器从针对数据节点4的备选数据数据节点集合中筛选出对应的目标数据数据节点集合,包括数据节点1、数据节点2和数据节点3,并向它们分别发送第一调度指示。

可选的,在发送第一调度指示之前,SQL服务器还需根据每个数据数据节点对应的最新待处理文件数量确定不存在最新待处理文件数量与待处理文件数量平均值的差值高于预设阈值的数据数据节点,假设满足上述条件,则SQL服务器向数据节点1、数据节点2、数据节点3分别发送第一调度指示。

数据节点1在收到第一调度指示后,完成文件1的文本副本的本地读,并将结果回传至数据节点4。

数据节点2在收到第一调度指示后,完成文件2的文本副本的本地读,并将结果回传至数据节点4。

数据节点3在收到第一调度指示后,完成文件3的文本副本的本地读,并将结果回传至数据节点4。

数据节点4完成文件4、文件5、和文件6的本地读。

参阅图5所示,本发明实施例提供一种数据处理装置,该装置位于SQL服务器,应用于SQL on hadoop系统,系统中包括SQL服务器和Hadoop系统,Hadoop系统包括系统节点和数据节点,包括:

获取单元50,用于获取Hadoop系统中至少一个数据节点分配待处理文件的文件分配结果,文件分配结果包括至少一个数据节点中每个数据节点对应的待处理文件数量;

分析单元51,用于根据文件分配结果从至少一个数据节点中确定至少一个待调度数据节点,待调度数据节点是指待处理文件数量与待处理文件数量平均值的差值高于预设阈值的数据节点,待处理文件数量平均值是根据文件分配结果中每个数据节点对应的待处理文件数量计算得到的;

处理单元52,用于确定与至少一个待调度数据节点中每个待调度数据节点相对应的目标数据节点集合,其中,每个目标数据节点集合中包括的目标数据节点数目小于等于与目标数据节点集合相对应的待处理数据节点的待处理文件数量与待处理文件数量平均值的差值;

发送单元53,用于向至少一个目标数据节点集合中的目标数据节点发送第一调度指示;

其中,目标数据节点是指保存相应待调度数据节点的待处理文件的文件副本,且待处理文件文件数量低于待处理文件数量平均值的数据节点,第一调度指示用于指示对应的目标数据节点处理保存的目标文件以及将处理的结果返馈至相应的待调度数据节点,目标文件与目标文件所在的目标数据节点相应的待调度数据节点中保存的待处理文件相对应,目标文件是该待处理文件的文件副本。

可选的,处理单元52,还用于确定至少一个待调度数据节点中的第一待调度数据节点保存有第一类型文件的文件标识;

以及获取第一类型节点的节点标识,其中,第一类型文件是指发生文件移动的待处理文件,第一类型节点是第一类型文件当前所在的数据节点;

发送单元53,还用于向第一类型节点发送第二调度指示,第一类型节点的待处理文件文件数量低于待处理文件数量平均值,第二调度指示用于指示第一类型节点处理第一类型文件,以及将处理结果反馈至第一待调度数据节点。

可选的,在确定与至少一个待调度数据节点中每个待调度数据节点相对应的目标数据节点集合的方面,处理单元52,具体用于:

确定与至少一个待调度数据节点中每个待调度数据节点相对应的备选数据节点集合,其中,备选数据节点是指保存对应待调度数据节点的待处理文件的文件副本的数据节点;

从备选数据节点集合中筛选出对应的目标数据节点集合。

可选的,处理单元52,在从备选数据节点集合中筛选出对应的目标数据节点集合的方面,具体用于:

针对至少一个待调度节点中的每个待调度数据节点的备选数据节点集合分别执行:

确定第一差值,第一差值是指当前待调度数据节点对应的待处理文件数量与待处理文件数量平均值的差值;

根据文件分配结果,查询针对当前待调度数据节点的备选数据节点集合中每个备选数据节点对应的待处理文件数量,确定当前待调度数据节点的存在目标数据节点的至少一个待处理文件;

从针对当前待调度数据节点的备选数据节点集合中,确定与至少一个待处理文件中每个待处理文件相对应的目标数据节点;

若确定针对当前待调度数据节点的目标数据节点总数小于等于第一差值,则目标数据节点集合包括所有目标数据节点;或者,若确定目标数据节点总数大于第一差值,则目标数据节点集合包括随机选取的与第一差值等值的目标数据节点。

可选的,处理单元52,在从针对当前待调度数据节点的备选数据节点集合中,确定至少一个待处理文件中每个待处理文件相对应的目标数据节点的方面,具体用于:

针对至少一个待处理文件中每个待处理文件分别执行:

若确定当前待处理文件存在一个目标数据节点,则将目标数据节点作为与当前待处理文件相对应的目标数据节点;

若确定当前待处理文件存在至少两个目标数据节点,则选取其中待处理文件数量最小的目标数据节点作为与当前待处理文件相对应的目标数据节点。

可选的,处理单元52,若确定当前待处理文件存在至少两个目标数据节点,还用于:

若确定当前待处理文件存在至少两个目标数据节点,且至少两个目标数据节点中待处理文件数量最小的目标数据节点数目不止一个,则选择其中与当前待处理数据节点之间的网络开销最小的目标数据节点作为与当前待处理文件相对应的目标数据节点。

参阅图6所示,本发明实施例提供一种数据处理装置,该装置位于SQL服务器,应用于SQL on hadoop系统,系统中包括SQL服务器和Hadoop系统,Hadoop系统包括系统节点和数据节点,包括:

获取单元60,用于获取Hadoop系统中至少一个数据节点分配待处理文件的文件分配结果,文件分配结果包括至少一个数据节点中每个数据节点对应的待处理文件数量;

分析单元61,用于根据文件分配结果确定至少一个待调度数据节点,待调度数据节点是指待处理文件数量与待处理文件数量平均值的差值高于预设阈值的数据节点,待处理文件数量平均值是根据文件分配结果中每个数据节点对应的待处理文件数量计算得到的;

处理单元62,用于在根据至少一个待调度数据节点中的第一待调度数据节点保存的第一类型文件的文件标识,获取第一类型节点的节点标识,其中,第一类型文件是指发生文件移动的待处理文件,第一类型节点是指第一类型文件当前所在数据节点,第一类型节点的待处理文件文件数量低于待处理文件数量平均值;

发送单元63,用于向第一类型节点发送第二调度指示,第二调度指示用于指示第一类型节点处理第一类型文件,以及将处理结果反馈至第一待调度数据节点。

需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本发明实施例还提供了一种用于数据处理的服务器,例如,一种SQL服务器。如图7所示,该服务器应用于SQL on hadoop系统,该系统中包括该服务器和Hadoop系统,Hadoop系统包括系统节点和数据节点;该用于数据处理的服务器包括收发器701、处理器702和存储器703,收发器701、处理器702以及存储器703之间通过总线704连接,其中:

存储器703,用于存储处理器702执行的程序代码;

处理器702,用于通过存储器703中的程序代码,执行以下操作:获取Hadoop系统中至少一个数据节点分配待处理文件的文件分配结果,文件分配结果包括至少一个数据节点中每个数据节点对应的待处理文件数量;

根据文件分配结果从至少一个数据节点中确定至少一个待调度数据节点,待调度数据节点是指待处理文件数量与待处理文件数量平均值的差值高于预设阈值的数据节点,待处理文件数量平均值是根据文件分配结果中每个数据节点对应的待处理文件数量计算得到的;以及确定与至少一个待调度数据节点中每个待调度数据节点相对应的目标数据节点集合,其中,每个目标数据节点集合中包括的目标数据节点数目小于等于与目标数据节点集合相对应的待处理数据节点的待处理文件数量与待处理文件数量平均值的差值;

处理器702,还用于通过存储器703中的程序代码调用收发器,执行以下操作:向至少一个目标数据节点集合中的目标数据节点发送第一调度指示;

其中,目标数据节点是指保存相应待调度数据节点的待处理文件的文件副本,且待处理文件文件数量低于待处理文件数量平均值的数据节点,第一调度指示用于指示对应的目标数据节点处理保存的目标文件以及将处理的结果返馈至相应的待调度数据节点,目标文件与目标文件所在的目标数据节点相应的待调度数据节点中保存的待处理文件相对应,目标文件是该待处理文件的文件副本。

本发明实施例中总线704在图7中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线704可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。其中,图5中的获取单元和发送单元,可以由该用于数据处理的服务器中的收发器实现,图5中的分析单元和处理单元,可以由该用于数据处理的服务器中的处理器实现。

本发明实施例中存储器703,用于存储处理器702执行的程序代码,可以是易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:RAM);存储器703也可以是非易失性存储器(英文:non-volatile memory),例如只读存储器(英文:read-only memory,缩写:ROM),快闪存储器(英文:flash memory),硬盘(英文:hard disk drive,缩写:HDD)或固态硬盘(英文:solid-state drive,缩写:SSD)、或者存储器703是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器703可以是上述存储器的组合。

本发明实施例中处理器702,可以是一个中央处理单元(英文:central processing unit,简称CPU)。

可选的,处理器702,还用于通过存储器703中的程序代码,执行以下操作:确定至少一个待调度数据节点中的第一待调度数据节点保存有第一类型文件的文件标识;

以及获取第一类型节点的节点标识,其中,第一类型文件是指发生文件移动的待处理文件,第一类型节点是第一类型文件当前所在的数据节点;

处理器702,还用于通过存储器703中的程序代码调用收发器701,执行以下操作:于向第一类型节点发送第二调度指示,第一类型节点的待处理文件文件数量低于待处理文件数量平均值,第二调度指示用于指示第一类型节点处理第一类型文件,以及将处理结果反馈至第一待调度数据节点。

可选的,在确定与所述至少一个待调度数据节点中每个待调度数据节点相对应的目标数据节点集合的方面,处理器702,用于通过存储器703中的程序,执行以下操作:

确定与至少一个待调度数据节点中每个待调度数据节点相对应的备选数据节点集合,其中,备选数据节点是指保存对应待调度数据节点的待处理文件的文件副本的数据节点;

从备选数据节点集合中筛选出对应的目标数据节点集合。

可选的,处理器702,在从备选数据节点集合中筛选出对应的目标数据节点集合的方面,用于通过存储器703中的程序代码,执行以下操作:

针对至少一个待调度节点中的每个待调度数据节点的备选数据节点集合分别执行:

确定第一差值,第一差值是指当前待调度数据节点对应的待处理文件数量与待处理文件数量平均值的差值;

根据文件分配结果,查询针对当前待调度数据节点的备选数据节点集合中每个备选数据节点对应的待处理文件数量,确定当前待调度数据节点的存在目标数据节点的至少一个待处理文件;

从针对当前待调度数据节点的备选数据节点集合中,确定与至少一个待处理文件中每个待处理文件相对应的目标数据节点;

若确定针对当前待调度数据节点的目标数据节点总数小于等于第一差值,则目标数据节点集合包括所有目标数据节点;或者,若确定目标数据节点总数大于第一差值,则目标数据节点集合包括随机选取的与第一差值等值的目标数据节点。

本发明实施例还提供了一种用于数据处理的服务器,例如,一种SQL服务器。如图8所示,该服务器应用于SQL on hadoop系统,该系统中包括该服务器和Hadoop系统,Hadoop系统包括系统节点和数据节点;该用于数据处理的服务器包括收发器801、处理器802和存储器803,收发器801、处理器802以及存储器803之间通过总线804连接,其中:

存储器803,用于存储处理器802执行的程序代码;

处理器802,用于通过存储器803中的程序代码,执行以下操作:获取Hadoop系统中至少一个数据节点分配待处理文件的文件分配结果,文件分配结果包括至少一个数据节点中每个数据节点对应的待处理文件数量;

根据文件分配结果确定至少一个待调度数据节点,待调度数据节点是指待处理文件数量与待处理文件数量平均值的差值高于预设阈值的数据节点,待处理文件数量平均值是根据文件分配结果中每个数据节点对应的待处理文件数量计算得到的;以及在根据至少一个待调度数据节点中的第二待调度数据节点保存的第二类型文件的文件标识,获取第二类型节点的节点标识,其中,第二类型文件是指发生文件移动的待处理文件,第二类型节点是指第二类型文件当前所在数据节点,第二类型节点的待处理文件文件数量低于待处理文件数量平均值;

处理器802,还用于通过所述存储器803中的程序代码调用收发器801执行以下操作:向第二类型节点发送第二调度指示,第二调度指示用于指示第二类型节点处理第二类型文件,以及将处理结果反馈至第二待调度数据节点。

本发明实施例中总线804在图8中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线804可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。其中,图6中的获取单元和发送单元,可以由该用于数据处理的服务器中的收发器实现,图6中的分析单元和处理单元,可以由该用于数据处理的服务器中的处理器实现。

本发明实施例中存储器803,用于存储处理器802执行的程序代码,可以是易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:RAM);存储器803也可以是非易失性存储器(英文:non-volatile memory),例如只读存储器(英文:read-only memory,缩写:ROM),快闪存储器(英文:flash memory),硬盘(英文:hard disk drive,缩写:HDD)或固态硬盘(英文:solid-state drive,缩写:SSD)、或者存储器803是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器803可以是上述存储器的组合。

本发明实施例中处理器802,可以是一个中央处理单元(英文:central processing unit,简称CPU)。

综上所述,本发明实施例中主要应用于SQL on hadoop系统,即传统数据库的SQL引擎+HDFS架构,该系统包括SQL服务器和Hadoop系统,Hadoop系统又包括系统节点和数据节点。其一,SQL服务器获取Hadoop系统中至少一个数据节点分配待处理文件的文件分配结果,根据文件分配结果从至少一个数据节点中确定至少一个待调度数据节点。其中,待调度数据节点是指待处理文件数量与待处理文件数量平均值的差值高于预设阈值的数据节点,因此,这里的待调度数据节点为高负荷数据节点。进一步地,确定与至少一个待调度数据节点中每个待调度数据节点相对应的目标数据节点集合,并向目标数据节点集合中的目标数据节点发送第一调度指示。这里的目标数据节点指保存相应待调度数据节点的待处理文件的文件副本,且待处理文件文件数量低于所述待处理文件数量平均值的数据节点。因此,这里的目标数据节点为低负荷数据节点。采用本发明实施例提供的方法能够将高负荷待调度数据节点的处理负荷分担至保存高负荷待调度数据节点的待处理文件的文件副本的低负荷数据节点,减轻SQL on hadoop系统中数据分布不均匀的问题,提升系统性能。其二,SQL服务器获取文件分配结果,并根据文件分配结果确定至少一个待调度数据节点,即高负荷数据节点,在确定至少一个待调度数据节点中的第一待调度数据节点保存的第一类型文件的文件标识时,确定该文件标识对应的文件发生移动,进而获取第一类型节点的节点标识,这里的第一类型节点为保存移动文件的低负荷数据节点,以及向第一类型节点发送第二调度指示。因此,本发明实施例中提出让文件移至的低负荷数据节点执行该文件的本地读,再将相应的处理结果回传至高负荷数据节点,有效降低了网络开销。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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