一种面向分布式数据仓库的高效加载客户端实现方法与流程

文档序号:12271555阅读:207来源:国知局
一种面向分布式数据仓库的高效加载客户端实现方法与流程

本发明属于信息处理领域,具体是一种面向分布式数据仓库的高效加载客户端实现方法。



背景技术:

随着计算机技术的不断发展和信息化程度的不断提高,人们对分布式存储的使用越来越多;与目前常见的集中式存储技术不同,分布式存储技术并不是将数据存储在某个或多个特定的节点上,而是通过网络使用企业中的每台机器上的磁盘空间,并将分散的存储资源构成一个虚拟的存储设备,数据分散的存储在企业的各个角落。

数据在分布式环境下的加载效率,在很大程度上影响着整个集群的效率;为了提高数据加载效率,优化整个集群使用,且降低成本,迫切需要更好的,更快捷的加载方式。

随着信息化水平的不断提高,信息数据量越来越大,由于信息数据加载过慢而引起的重视和关注越来越多,人们迫切的需要快速得到某些数据集的结果,因此能够快速的把需要用到的数据导入分布式数据仓库成为目前急需的方法。但是目前海量的数据导入时间阻挡了高速信息时代发展的步伐。



技术实现要素:

本发明针对现有分布式数据仓库加载效率慢的问题,提供了一种面向分布式数据仓库的高效加载客户端实现方法,不但能解决多数据表同时加载,多数据仓库节点负载均衡,而且能够在使用少量内存的情况下发挥最高的加载速率,有效降低了加载时间,促进大数据体系发展的不断完善。

具体步骤如下:

步骤一、对某个含有1个客户端和N个服务端的系统,初始化系统启动参数;

系统启动参数包括:同时运行加载器的数量,指定被加载数据的位置,数据仓库节点列表和服务端指定数据加载的N个具体表名。

步骤二、加载器管理模块根据主线程创建加载器并初始化,每个线程各申请一个加载器;

创建加载器的数量为初始化参数中需要同时运行加载器的数量。

步骤三、每个线程各创建一个数据解析模块,对被加载的客户端数据进行解析,按行切分为字段数据,传输给该线程申请的加载器;

具体步骤如下:

步骤301、根据被加载数据的指定位置,将客户端的数据加载到数据文件目录r中;

步骤302、数据解析模块读取客户端被加载的数据文件目录r;

步骤303、从当前目录r中依次获取当前文件f的行数据;

步骤304、按指定分隔符将当前行数据d切分为字段v;并将字段v传输给该线程中的加载器;

步骤305、重复读取当前文件f的下一行数据,直至将当前文件f的所有数据都传输给加载器;

步骤306、重复读取目录r中的下一个文件,返回步骤303,直至该目录r中所有文件读取完成。

步骤四、每个加载器收到字段数据后,分别调用数据校验模块进行检验;

数据校验模块根据初始化时的N个指定表名,向分布的各数据仓库节点申请每个指定表的结构信息,等待用以校验加载数据的格式是否正确。

具体步骤为:

步骤401:数据校验模块根据服务端的N个指定表名创建N个类型校验器;

步骤402:将每个加载器的字段数据,按服务端预定的N个指定表名分别进入N个类型校验器;

步骤403:分别判断每个字段数据的类型校验是否成功,如果成功,说明该字段数据符合服务端预定的指定表类型,则进入步骤404,否则返回调用者错误信息,结束。

步骤404:根据服务端N个指定表名,对字段数据进行格式化补全,并转化格式类型;

步骤五、每个加载器将检验后的字段数据,缓存到数据缓存模块进行管理并传输给数据传输模块;

首先,数据缓存模块根据分布式数据仓库数量和缓存数量建立内存矩阵;每个内存矩阵分别对应一个分布式数据仓库,预申请的内存长度保存在内存矩阵中。然后,加载器根据指定表名,将检验后的字段数据放入到对应的内存矩阵中,并标记缓存数量;最后,判断各内存矩阵的缓存数量是否达到上限,如果是,将检验后的字段数据进行序列化,并传输给数据传输模块,否则,继续将检验后的字段数据放入到对应的内存矩阵中;

步骤六、分布式节点监听模块获取每个分布式数据仓库的监听状态,并发送给数据传输模块等待查阅;

分布式节点监听模块启动监听服务器,并等待分布式数据仓库的连接;当某分布式数据仓库启动后,向监听服务器进行注册,监听服务器获取该分布式数据仓库的状态信息,从而分布式节点监听模块获取所有N个分布式数据仓库的健康状态,并保存在内存中,等待数据传输模块查阅;

步骤七、数据传输模块收到缓存数据后,查阅健康的分布式数据仓库并发送数据,实现负载均衡和链路冗余的功能。

数据传输模块根据收到的缓存数据,按预定发送地址发送数据给分布式数据仓库;并判断是否发送成功,如果发送成功,记录发送日志后,执行结束。否则,向分布式节点监听模块重新申请健康的分布式数据仓库节点重新发送。

发送地址是在缓存数据的多个字段中,根据表结构指定某一个字段用来计算分区值,根据分区值的不同选择不同的分布式数据仓库,从而预定该分布式数据仓库的发送地址。

本发明的优点在于:

1)、一种面向分布式数据仓库的高效加载客户端实现方法,提升了整个分布式数据仓库的使用效率和数据加载效率,符合目前的应用需求,具有广阔的应用前景。

2)、一种面向分布式数据仓库的高效加载客户端实现方法,对加载过程中的数据进行进一步的类型验证,并且根据数据长度进行内存使用的调整,从而减少内存的使用,提高加载效率。

3)、一种面向分布式数据仓库的高效加载客户端实现方法,可以快速的将指定的数据文件按照分布式数据仓库的特点进行分散式数据传输,可以支持多线程、多任务、多数据表、多节点的分布式快速加载。

4)、一种面向分布式数据仓库的高效加载客户端实现方法,可以支持多节点之间的负载均衡、链路冗余,有效解决了加载过程中可能出现的连接崩溃问题。

5)、一种面向分布式数据仓库的高效加载客户端实现方法,对数据内容的缓存管理,用于降低数据序列化的压力,以及减少频繁的数据发送请求,使整个发送环节和内存的整体占用情况处于可调控状态。

6)、一种面向分布式数据仓库的高效加载客户端实现方法,可以实时监听分布式节点的健康情况,根据节点的不同状态控制数据传输模块将数据发送到健康的节点。

附图说明

图1为本发明面向分布式数据仓库的数据加载流程及数据结构示意图;

图2为本发明一种面向分布式数据仓库的高效加载客户端实现方法流程图;

图3为本发明数据解析模块解析的方法流程图;

图4为本发明数据校验模块校验的方法流程图;

图5为本发明加载器管理模块的流程图;

图6为本发明数据缓存模块缓存的方法图;

图7为本发明分布式节点监听模块的原理图;

图8为本发明数据传输模块的原理图。

具体实施方式

下面将结合附图对本发明作进一步的详细说明。

本发明涉及一种多任务、多数据表、多数据仓库节点并在占用最小内存的情况下,达到最高加载速率的分布式快速加载方法,面向分布式数据仓库加载过程的数据结构示意图,如图1所示,从图中可以看出,整个数据加载过程中的数据处理流程,包括字段结构和数据包结构。其中在字段结构中存放了字段内容属性、总数据量长度和内存描述,内存的使用根据字段类型的变化而改变,从而减少内存使用并提高拷贝效率;给出了支持多线程多表加载的组织结构,由数据解析模块将需要加载的数据进行解析后,整理为有效的结构字段,通过加载器发往下个模块,完成数据梳理业务保证后面处理流程的顺畅。对加载器的管理,通过创建不同的加载器,可以支持多个线程操作,实现对多个数据表同时进行加载操作。数据由数据校验模块校验后提交到数据缓存模块中,当数据达到一定阀值会进入序列化流程,数据被序列化之后作为数据包提交给数据传输模块;数据包包括:目标IP,端口,SN标示符和消息类型;数据传输模块会根据分布式数据仓库节点的状态选择合适的数据仓库发送数据,实现负载均衡和链路冗余的功能。

如图2所示,具体步骤如下:

步骤一、对某个含有1个客户端和N个服务端的系统,启动初始化系统参数;

系统参数包括:同时运行加载器的数量,指定被加载数据的位置,数据仓库节点列表和服务端指定数据加载的N个具体表名。

系统还包括:数据解析模块;加载器管理模块;数据校验模块;数据缓存模块;分布式节点监听模块和数据传输模块。

步骤二、加载器管理模块根据主线程创建加载器并初始化,每个线程各申请一个加载器。

加载器管理模块根据主线程,初始化创建不同的加载器,支持多个线程同时操作;创建加载器的数量为初始化参数中需要同时运行加载器的数量,由硬件设备的物理性能决定。

如图5所示,加载器管理模块根据请求内容划分为两个服务:获取加载器和提交数据到加载器;

获取加载器具体为:首先判断加载器数量是否超过上限,如果是,直接退出结束;否则,初始化加载器,从分布式节点监听模块获取可用的数据仓库节点数,并根据可用节点数预算使用内存,然后生成数据缓存模块,加载器创建成功。

提交数据到加载器具体为:首先,判断数据校验模块进行类型的校验是否合适,如果是,根据数据内容计算分区值,保存分区值用于与数据仓库节点进行连接,然后将数据交给数据缓存模块;否则,结束。

步骤三、每个线程各创建一个数据解析模块,对客户端被加载的数据进行解析,按行切分为字段数据,传输给该线程申请的加载器;

数据解析模块申请获取一个加载器用于加载数据;数据解析模块解析文件时,需要预先申请内存用于放置解析出来的一行数据,这一行数据再交给数据校验模块,数据校验模块根据数据的真实长度,再申请合适的内存装下该行数据,交给数据缓存模块。

如图3所示,具体步骤如下:

步骤301、根据被加载数据的指定位置,将客户端要加载的数据导入到数据文件目录r中;

步骤302、数据解析模块读取客户端被加载的数据文件目录r;

步骤303、从当前目录r中依次获取当前文件f的行数据;

步骤304、按指定分隔符将当前行数据d切分为字段v;并将字段v传输给该线程中的加载器;

步骤305、重复读取当前文件f的下一行数据,直至将当前文件f的所有数据都传输给加载器;

步骤306、重复读取目录r中的下一个文件,返回步骤303,直至该目录r中所有文件读取完成。

步骤四、每个加载器收到字段数据后,分别调用数据校验模块进行检验并传输给数据缓存模块;

数据校验模块的流程是将加载器提交的字段数据进行校验,如果类型符合的字段,则拷贝到由数据缓存模块提供的内存中,是一个内存移动的过程。

数据校验模块存有初始化的数据仓库节点列表,并与N个分布式数据仓库相连接,每个分布式数据仓库各有一个用于存储数据的结构,形成各自的表结构,对应N个具体表名;数据校验模块获取初始化时指定的N个表名,获取N个数据结构信息,并利用每个表结构,用来校验对比收到的加载数据格式和结构是否满足存储结构的要求,并将校验正确的数据传给数据缓存模块。

如图4所示,具体为:

步骤401:首先数据校验模块根据服务端的N个指定表名创建N个类型校验器;

步骤402:将每个加载器的字段数据,按服务端预定的N个指定表名分别进入N个类型校验器;

步骤403:分别判断每个字段数据的类型校验是否成功,如果成功,说明该字段数据符合服务端预定的指定表类型,则进入步骤404,否则返回调用者错误信息,结束。

步骤404:根据服务端N个指定表名,对字段数据进行格式化补全,并转化格式类型;

使用数据校验模块校验数据类型是否合法,并根据数据内容计算特定分区值,用于选择分布式数据仓库节点,不同的数据可以分配到不同的数据仓库节点,实现负载均衡。

步骤五、每个加载器将检验后的字段数据,调用数据缓存模块进行缓存管理并传给数据传输模块。

数据缓存模块申请内存用于放置转化格式类型后的检验数据;随加载器管理模块而启动,根据分布式数据仓库节点总数预算内存使用量,用于创建数据缓存模块,数据缓存模块根据分布式数据仓库的总数确定自己的缓存数量,根据缓存总数量而预估内存使用量,申请适量的内存,然后交由加载器使用,在数据类型判断过程中如果内存不够重新申请,最后数据量达到阀值后将数据交给数据传输模块,成功发送结束,内存可以继续使用,这样就减少了内存申请的频繁度,数据缓存模块用于降低数据序列化的压力,以及减少频繁的数据发送请求,使整个发送环节和内存的整体占用情况处于可调控状态。

首先,初始化数据缓存模块,并创建容器,等接收到需要缓存的检验数据后,将检验数据放入与指定表名对应的容器中,并标记缓存数量;在缓存数量达到上限值时将数据进行序列化,并传给数据传输模块。

分布式数据仓库缓存数量是数据缓存模块根据可用的分布式数据仓库总量确定;比如加载器只分配了1G内存,然后分布式数据仓库节点有4个,针对每个节点的数据缓存只有256M,这样缓存模块最多缓存256M就必须将数据发给分布式数据仓库节点。

序列化是将结构化数据进行一定规则的二进制编码,通过网络传输后按该规则重新反序列化,得到原始的结构化数据。

如图6所示,数据缓存模块的具体步骤如下:

步骤501、根据分布式仓库数据节点总数以及缓存总数量建立内存矩阵;

每个内存矩阵分别对应每一个分布式数据仓库节点,预申请的内存长度保存在内存矩阵中;

步骤502、加载器开始申请内存,用于在数据校验流程中内存拷贝;

步骤503、从分布式节点监听模块中获取一个健康节点序号对应内存矩阵中一点;

步骤504、根据健康节点序号将数据分类缓存;

步骤505、根据节点序号判断对应节点缓存量是否达到上限,如果达到上限则进入步骤506,否则执行结束;

步骤506:将该节点缓存数据进行序列化,并提交到数据传输模块,执行结束;

应该注意到并理解,数据缓存模块中的内存并没有被频繁的释放和重新申请,这样有效提高了整个处理流程的效率。

步骤六、分布式节点监听模块获取每个分布式数据仓库的监听状态,并发送给数据传输模块等待查阅;

如图7所示,具体为:分布式节点监听模块启动监听服务器,并启动分布式数据仓库的连接;当某分布式数据仓库启动后,向监听服务器进行注册,监听服务器获取该分布式数据仓库的状态信息,从而分布式节点监听模块获取所有N个分布式数据仓库的健康状态,并保存在内存中,等待数据传输模块查阅;

加载器申请获取各节点信息;判断当前是否有节点a可以用,如果没有节点可以用,则重新获取所有节点状态信息,如果有,判断节点a状态是否正常,如果不正常,重新申请另一个节点。如果正常,将节点a交给加载器使用,执行完毕。

监听服务器是一个不断循环监听其他节点的服务;

步骤七、数据传输模块收到缓存数据后,查阅健康的分布式数据仓库并发送数据,实现负载均衡和链路冗余的功能。

分布式节点监听模块创建监听状态,并保存在内存中,实时监听N个分布式数据仓库的健康情况,并发送给数据传输模块等待数据传输模块查阅;数据传输模块根据收到的缓存数据,按预定发送地址发送给数据仓库节点;并判断是否发送成功,如果发送成功,记录发送日志后,执行结束。否则,向分布式节点监听模块重新申请健康的数据仓库节点重新发送。

如图8所示,具体步骤如下:

步骤701:首先与分布式数据仓库各节点建立连接,准备工作完成;

步骤702:收到由数据缓存模块提交的数据,并按预定发送地址进行发送;

步骤703:判断是否发送成功,如果发送成功后记录发送日后,执行结束;否则,进入步骤704;

步骤704:向分布式节点监听模块重新申请健康的节点,并重新发送数据。

本发明分别建立多个加载器并集中管理,采用数据缓存模块对内存进行可伸缩重复利用,避免频繁的申请和释放内存提高内存使用效率,并且具有集群节点监听模型可以及时的在健康和非健康节点之间快速切换,有效提高了发送成功率,具有很强的实用性,应用范围和应用前景。

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