并行数据加载方法和系统与流程

文档序号:12494453阅读:277来源:国知局
本发明实施例涉及计算机技术,尤其涉及一种并行数据加载方法和系统。
背景技术
::随着计算机技术的飞速发展,数据库的应用也越来越广泛,数据的加载效率直接影响数据库的总体性能。现有技术中,数据加载时,应用通过Jave数据库连接(JavaDataBaseConnectivity,简称:JDBC)或者开放式数据库连接性(OpenDataBaseConnectivity,简称:ODBC)驱动和数据库连接,使用标准的SQL语句进行数据加载,例如:SQLSERVER,ORACLE和PostgerSQL等场景中均采用该种方式加载数据。然而,现有技术的数据加载效率不高。技术实现要素:本发明实施例提供一种数据加载方法和系统,以提高并行数据加载的效率。本发明实施例一个方面提供一种并行数据加载方法,该方法应用于并行数据加载系统,该系统包括:M个主节点、N个数据节点和R个文件传输协议FTP服务器,其中,M为大于等于1的整数,N为大于等于2的整数,R为大于等于1的整数,M个主节点与N个数据节点以及R个FTP服务器通信连接,N个数据节点和R个FTP服务器通信连接。该方法包括:主节点向至少两个数据节点发送加载指示信息,加载指示信息用于指示至少两个数据节点加载FTP服务器中存储的数据;每个数据节点向主节点发送的任务分配请求信息,主节点向每个数据节点发送数据节点对应的加载文件信息,数据节点根据加载文件信息从FTP服务器下载加载文件信息对应的数据块进行加载,通过主节点向多个数据节点发送加载指示信息,以使多个数据节点并行加载FTP服务器中存储的数据,通过数据节点主动向服务器请求分配任务的方式,可以使处理能力强的数据节点加载更多的数据块,实现加载任务的按需分配,进一步提高并行数据加载的效率。可选地,主节点向每个数据节点发送数据节点对应的加载文件信息之前,还包括:主节点根据至少两个数据节点发送任务分配请求信息的频率,确定为每个数据节点分配的加载文件的大小。实现根据数据节点的实际处理能力进行分配,进一步提高处理资源的利用率,提高并行加载的效率可选地,还包括:若主节点确定待加载文件已经全部加载完毕,向至少两个数据节点发送加载完成指示信息。以使至少两个数据节点停止向主节点发送任务分配请求信息。可选地,主节点向至少两个数据节点发送加载指示信息之前,还包括:主节点接收客户端发送的加载指示信息,加载指示信息中包含待加载文件的信息。可选地,还包括:若主节点确定待加载文件已经全部加载完毕,向客户端发送加载完成指示信息。以使至少两个数据节点停止向主节点发送任务分配请求信息。可选地,主节点根据至少两个数据节点发送任务分配请求信息的频率,确定为每个数据节点分配的加载文件的大小之前,还包括:主节点将待加载文件分割为多个数据块,每个数据块对应一个加载文件信息。本发明实施例另一方面提供一种并行数据加载系统、包括:M个主节点、N个数据节点和R个文件传输协议FTP服务器,其中,M为大于等于1的整数,N为大于等于2的整数,R为大于等于1的整数,M个主节点与N个数据节点以及R个FTP服务器通信连接,N个数据节点和R个FTP服务器通信连接。其中,FTP服务器,用于存储待加载文件;主节点,用于向至少两个数据节点发送加载指示信息,加载指示信息用于指示至少两个数据节点加载FTP服务器中存储的数据;主节点,还用于接收至少两个数据节点发送的任务分配请求信息,任务分配请求信息用于请求主节点为数据节点分配加载文件信息;主节点,还用于向每个数据节点发送数据节点对应的加载文件信息;数据节点,用于根据加载文件信息从FTP服务器下载加载文件信息对应的数据块进行加载。可选地,主节点还用于根据至少两个数据节点发送任务分配请求信息的频率,确定为每个数据节点分配的加载文件的大小。可选地,主节点还用于确定待加载文件已经全部加载完毕,向至少两个数据节点发送加载完成指示信息。可选地,主节点还用于接收客户端发送的加载指示信息,加载指示信息中包含待加载文件的信息。可选地,主节点还用于确定待加载文件已经全部加载完毕,向客户端发送加载完成指示信息。可选地,主节点还用于将待加载文件分割为多个数据块,每个数据块对应一个加载文件信息。附图说明图1为本发明实施例的并行数据加载系统架构图;图2为本发明并行数据加载方法实施例的流程示意图;图3为本发明并行数据加载交互示意图。具体实施方式本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。图1为本发明实施例的并行数据加载系统架构图,如图1所示,本发明实施例的系统包括:M个主节点、N个数据节点和外部数据源,外部数据源包含R个(FileTransferProtocol,简称:FTP)服务器,其中,M为大于等于1的整数,N为大于等于2的整数,R为大于等于1的整数,在图1中以M=2、N=3和R=2为例示出。在图1中还可以包括客户端,客户端可以作为系统的一部分,也可以为独立于系统的部分,对此,本发明实施例不作限制。其中,客户端与主节点通信连接。主节点与FTP服务器以及数据节点通信连接。数据节点与FTP服务器通信连接。FTP服务器存储待加载文件。数据节点用于加载FTP服务器存储的待加载文件。主节点用于控制数据节点加载FTP服务器存储的待加载文件。下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。图2为本发明并行数据加载方法实施例的流程示意图,本实施例的方法应用于图1所示并行数据加载系统,本实施例的方法如下:S200:主节点创建外表。主节点可以通过SQL语句创建外表。SQL语句例如:“createFOREIGNtableforeign_table(indexint,descriptionvarchar(100))SERVERfile_serverOPTIONS(format'text',ftpserver‘ftp://10.123.1.100/data’,delimiter'|',null”)”S201:客户端向主节点发送加载指示信息。其中,加载指示信息中包含待加载文件的信息。待加载文件存储在FTP服务器中。可以是存储在一个FTP服务器中,也可以是存储在多个FTP服务器中,对此本发明实施例不作限制。可选地,客户端可以通过SQL语句向主节点发送加载指示信息。SQL语句例如:“Insertintotable2select*fromforeign_table”主节点接收到客户端发送的加载指示信息之后,执行S202。S202:主节点向至少两个数据节点发送加载指示信息。加载指示信息用于指示至少两个数据节点加载FTP服务器中存储的数据。即主节点向至少两个数据节点同步发送加载指示信息,以使至少两个数据节点并行加载FTP服务器中存储的数据。数据节点解析加载指示信息,发现是FTP服务器的并行数据加载指示信息,则执行S203。S203:数据节点向主节点发送任务分配请求信息。其中,任务分配请求信息用于请求主节点为数据节点分配加载文件信息。S204:数据节点接收主节点发送的数据节点对应的加载文件信息。S205:数据节点根据加载文件信息从FTP服务器下载加载文件信息对应的数据块进行加载。数据节点在接收到加载指示信息之后,执行S203-S205,当加载文件信息对应的数据块加载完毕之后,返回执行S203-S205,直到接收到主节点发送的加载完成指示信息,停止向主节点发送任务分配请求信息。通过数据节点主动向服务器请求分配任务的方式,可以使处理能力强的数据节点加载更多的数据块,实现加载任务的按需分配,提高并行数据加载的效率。图3为本发明并行数据加载交互示意图,如图3所示。其中,包含两个FTP服务器分别为FTP服务器1和FTP服务器2,三个数据节点分别为数据节点1、数据节点2和数据节点3,FTP服务器中的方格代表数据块。左图为未加载前,右图为加载过程中。其中,主节点向数据节点发送对应的加载文件信息之前,主节点递归列举FTP服务器上的文件,预先将待加载文件分割成多个数据块。每个数据块要确保行完整性。多个数据块可以是大小相同,也可以是大小不同的,对此,本发明实施例不作限制。数据块与加载文件信息对应,加载文件信息可以通过加载文件的名称和偏移量表示。主节点为数据节点分配加载文件信息时,可选地,可以根据至少两个节点发送的任务分配请求信息的频率,确定每个数据节点分配的加载文件的大小。若某个数据节点发送任务分配请求信息的频率比较高,说明该数据节点的处理能力比较强,则可以为该数据节点分配大数据块,以充分利用该数据节点的处理资源。若某个数据节点发送任务分配请求信息的频率比较低,说明该数据节点的处理能力比较弱,则可以为该数据节点分配小数据块。从而,实现根据数据节点的实际处理能力进行分配,进一步提高处理资源的利用率,提高并行加载的效率。主节点为不同的数据节点分配加载文件信息时,可以分配不同的FTP服务器上的数据块对应的加载文件信息,以便充分利用各FTP服务器的网络带宽,进一步地提高并行加载的效率。S206:若主节点确定待加载文件已全部加载完毕,向至少两个数据节点发送加载完成指示信息。主节点通过向至少两个数据节点发送加载完成指示信息,以使至少两个数据节点停止向主节点发送任务分配请求信息。S207:若主节点确定待加载文件已全部加载完毕,向客户端发送加载完成指示信息。数据节点加载完毕之后向主节点返回加载结果,主节点向客户端返回加载结果,以使用户通过客户端了解加载结果。本实施例,通过将待加载的数据存储在FTP服务器中,数据节点从FTP服务器中下载加载文件信息对应的数据块,以FTP服务器文件的形式下载,提高了下载文件的效率,提高了并行数据加载的效率。通过主节点向多个数据节点发送加载指示信息,以使多个数据节点并行加载FTP服务器中存储的数据,通过数据节点主动向服务器请求分配任务的方式,可以使处理能力强的数据节点加载更多的数据块,实现加载任务的按需分配,进一步提高并行数据加载的效率。通过主节点根据至少两个节点发送的任务分配请求信息的频率,确定每个数据节点配的的加载文件的大小,实现根据数据节点的实际处理能力进行分配,进一步提高处理资源的利用率,提高并行加载的效率。通过主节点为不同的数据节点分配不同的FTP服务器上的数据,充分利用各FTP服务器的网络带宽,进一步地提高并行加载的效率。当数据并行加载的瓶颈在网络IO时,还可以通过增加FTP服务器来消除网络IO瓶颈,进一步地提高并行加载的效率。本发明还提供并行数据加载系统实施例,该系统如图1所示,包括:M个主节点、N个数据节点和R个文件传输协议FTP服务器,其中,M为大于等于1的整数,N为大于等于2的整数,R为大于等于1的整数,M个主节点与N个数据节点以及R个FTP服务器通信连接,N个数据节点和R个FTP服务器通信连接。其中,FTP服务器,用于存储待加载文件。主节点,用于向至少两个数据节点发送加载指示信息,加载指示信息用于指示至少两个数据节点加载FTP服务器中存储的数据。主节点,还用于接收至少两个数据节点发送的任务分配请求信息,任务分配请求信息用于请求主节点为数据节点分配加载文件信息。主节点,还用于向每个数据节点发送数据节点对应的加载文件信息。数据节点,用于根据加载文件信息从FTP服务器下载加载文件信息对应的数据块进行加载。可选地,主节点还用于根据至少两个数据节点发送任务分配请求信息的频率,确定为每个数据节点分配的加载文件的大小。可选地,主节点还用于确定待加载文件已经全部加载完毕,向至少两个数据节点发送加载完成指示信息。可选地,主节点还用于接收客户端发送的加载指示信息,加载指示信息中包含待加载文件的信息。可选地,主节点还用于确定待加载文件已经全部加载完毕,向客户端发送加载完成指示信息。可选地,主节点还用于将待加载文件分割为多个数据块,每个数据块对应一个加载文件信息。上述系统实施例,对应的可用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1