一种数据加载方法和系统的制作方法

文档序号:6493970阅读:238来源:国知局
一种数据加载方法和系统的制作方法
【专利摘要】本申请公开了一种数据加载方法和系统。该方法包括:配置数据块标识ID与收集点的映射关系,在收集点出现故障时,将该出现故障的收集点映射的数据块ID重新配置为与其他未出现故障的收集点相映射;将需要加载的数据按照预设规则划分为数据块,并为每个数据块赋予ID,获取数据块ID与收集点的映射关系,根据该映射关系,将数据块发给该数据块ID映射的收集点;收集点将数据块写入到数据仓库。应用本发明能够解决由于收集节点出现故障而导致部分数据无法加载到数据仓库的问题。
【专利说明】一种数据加载方法和系统
【技术领域】
[0001]本申请涉及数据处理【技术领域】,尤其涉及一种数据加载方法和系统。
【背景技术】
[0002]在互联网、通信等领域中,常常需要将大批量的数据加载到指定的数据仓库中。图1是目前常用的数据加载系统组成示意图。
[0003]如图1所示,目前的数据加载系统包括主节点101、代理服务节点102、收集点103和数据仓库104,每个代理服务节点102都绑定特定的收集点103,例如,在图1所示例子中,代理服务节点A和代理服务节点B都和收集点A绑定,代理服务节点C和代理服务节点D都和收集点B绑定。
[0004]主节点101,用于启动或停止代理服务节点102以及收集点103。
[0005]代理服务节点102包括存储模块和代理服务模块,存储模块用于存储需要加载的数据,代理服务模块用于读取所述存储模块中需要加载的数据,将所述需要加载的数据发给与该代理服务节点102绑定的收集点103。
[0006]收集点103,用于将接收的数据通过数据仓库104提供的接口写入到数据仓库104,从而实现数据加载。
[0007]其中,代理服务模块在从存储模块读取需要加载的数据以后,按照一定的格式解析需要加载的数据,由于需要加载的数据一般都是文件类型,为了保证数据加载过程中不会丢失数据,代理服务模块对需要加载的数据文件进行解析后不进行任何其他处理而直接重命名为隐藏文件,然后将所述隐藏文件直接发给与该代理服务模块所在的代理服务节点102绑定的收集点103。
[0008]在实际应用中,数据加载系统有时会出现一些异常情况,例如,数据加载系统中的某个或某些收集点103出现故障。
[0009]目前,当收集点103出现故障时,与该收集点103绑定的代理服务节点102在向该收集点103发送数据时将会出错,该代理服务节点102从而得知与其自身绑定的收集点103出现了故障。
[0010]由于目前的数据加载系统中代理服务节点102和收集点103之间是绑定的关系,即每个代理服务节点102绑定到特定的收集点103上,只能通过绑定的收集点103实现数据加载,因此,当某些收集点103出现故障时,与这些收集点103绑定的代理服务节点102中存储的需要加载的数据将无法加载到数据仓库104中,造成数据丢失。

【发明内容】

[0011]有鉴于此,本申请提供了一种数据加载方法和系统,能够解决由于收集节点出现故障而导致部分数据无法加载到数据仓库的问题。
[0012]一种数据加载方法,该方法包括:
[0013]配置数据块标识ID与收集点的映射关系,在收集点出现故障时,将该出现故障的收集点映射的数据块ID重新配置为与其他未出现故障的收集点相映射;
[0014]将需要加载的数据按照预设规则划分为数据块,并为每个数据块赋予ID,获取数据块ID与收集点的映射关系,根据该映射关系,将数据块发给该数据块ID映射的收集点;
[0015]收集点将数据块写入到数据仓库。
[0016]一种数据加载系统,该系统包括主节点、代理服务节点和收集点;
[0017]所述主节点,用于配置数据块标识ID与收集点的映射关系,在收集点出现故障时,将该出现故障的收集点映射的数据块ID重新配置为与其他未出现故障的收集点相映射;
[0018]所述代理服务节点,用于将需要加载的数据按照预设规则划分为数据块,并为每个数据块赋予ID,获取数据块ID与收集点的映射关系,根据该映射关系,将数据块发给该数据块ID映射的收集点;
[0019]所述收集点,用于将数据块写入到数据仓库。
[0020]可见,由于本发明在进行数据加载时,并非像现有技术那样将每个代理服务节点与收集点进行绑定,每个代理服务节点负责的需要加载的数据只能通过绑定的特定收集点加载到数据仓库中,而是将需要加载的数据划分为粒度较小的数据块,为每个数据块赋予ID,建立数据块ID与收集点的映射关系,根据映射关系确定每个收集点负责加载的数据块,并且,一旦发现有某个或某些收集点出现故障,则重新配置数据块ID与收集点的映射关系,即将出现故障的收集点映射的数据块ID重新配置为与其他未出现故障的收集点相映射,进而使得能够通过其他未出现故障的收集点将已出现故障的收集点原来负责的数据块写入到数据仓库中,解决了现有技术中由于收集点出现故障而导致部分数据无法加载到数据仓库的问题。
【专利附图】

【附图说明】
[0021]图1是目前常用的数据加载系统组成示意图。
[0022]图2是本发明提供的数据加载方法流程图。
[0023]图3是本发明提供的数据加载系统组成示意图。
【具体实施方式】
[0024]图2是本发明提供的数据加载方法流程图。
[0025]如图2所示,该流程包括:
[0026]步骤201,配置数据块标识(ID)与收集点的映射关系。
[0027]本步骤中,一般由主节点配置数据块ID与收集点的映射关系。
[0028]其中,可以预设数据块ID的生成方法,因此能够明确数据块ID的范围,进而确定每个收集点对应哪些数据块ID。例如,可以采用对数据块取HASH值的方式,将数据块的HASH值确定为该数据块的ID,还可以将随机数生成器生成的随机数确定为数据块的ID,只要保证每个数据块的ID都是唯一的即可。
[0029]为了提闻运行效率,可以将所述映射关系存储在主节点的内存中,为了增加映射的数据块的个数,当采用映射关系表存储所述映射关系时,可以存储数据块ID区间与收集点之间的映射关系。[0030]步骤202,在收集点出现故障时,将该出现故障的收集点映射的数据块ID重新配置为与其他未出现故障的收集点相映射。
[0031]其中,可以采用多种方法确定收集点是否出现故障,例如,当由主节点配置数据块ID与收集点的映射关系时,收集点可以定期向主节点上报自身的状态,如果主节点在指定的时间内没有收到收集点上报的状态信息,则可以确定出收集点出现故障。
[0032]步骤203,将需要加载的数据按照预设规则划分为数据块,并为每个数据块赋予ID0
[0033]其中,数据块的大小可以根据实际需要确定,例如,对于一个文件,可以将每1000条数据划分为一个数据块,如果该文件的剩余数据不足1000条数据,则将该剩余数据确定为该文件的最后一个数据块。
[0034]步骤204,获取数据块ID与收集点的映射关系,根据该映射关系,将数据块发给该数据块ID映射的收集点。
[0035]本步骤中,在向收集点发送数据块出错时,一般可以判断出此时该收集点出现了故障,数据块ID与收集点的映射关系可能已经被重新配置,因此可以主动地重新获取数据块ID与收集点的映射关系,根据重新获取的映射关系确定该数据块映射的收集点,向该收集点发送该数据块。当然,也可以由主节点在每次重配置所述映射关系后,下发最新的所述映射关系。
[0036]上述步骤201至步骤204,只要不出现逻辑矛盾,则相互之间的执行顺序可调,或者可以并发执行,例如,可以同时执行步骤201和步骤203。
[0037]步骤205,收集点将数据块写入到数据仓库。
[0038]本发明中,将出现故障的收集点映射的数据块ID重新配置为与其他未出现故障的收集点相映射具体可以包括:
[0039]根据所述其他未出现故障的收集点的负荷状态,选取负荷满足预定条件的收集点,例如选取负荷小于预定值的收集点、或选取负荷最小的收集点,将该出现故障的收集点映射的数据块ID重新配置为与所述负荷满足预定条件的收集点相映射,或者,将该出现故障的收集点映射的数据块ID均匀地、或按照一定比例地分成两份以上,将各份分别映射不同的未出现故障的收集点。
[0040]例如,当前一共有5个收集点,收集点I映射的ID值为f 100,收集点2映射的ID值为101?200,收集点3映射的ID值为201?300,收集点4映射的ID值为301?400,收集点5映射的ID值为40广500,当收集点2出现故障时,如果发现收集点5为最不繁忙,则收集点5将映射ID值为101?200以及401到500的数据块ID,如果各个收集点的负载较均衡,则可以将ID值IOf200分成IOf 150和151?200两个区间,选取两个其他收集点,例如收集点I和3,分别映射ID值为101?150的数据块ID和ID值为151?200的数据块ID。
[0041]为了避免数据的重复加载,本发明还提出,还可以维护收集点接收到的每个数据块的加载状态信息,则收集点在将数据块写入到数据仓库时,根据数据块的加载状态信息判断接收的数据块是否已被加载到数据仓库中,如果是,则不将该接收的数据块写入到数据仓库,否则,将该接收的数据块写入到数据仓库。
[0042]为了进一步提高避免数据重复加载的效果,不仅避免已经完全加载到数据仓库中的数据块的重复加载,还尽量避免已经部分加载到数据仓库中的数据块的重复加载,本发明还提出:
[0043]所述述加载状态信息包括已经加载状态、未加载状态和正在加载状态,收集点根据接收的数据块ID查询该数据块的加载状态,在该数据块的加载状态为已经加载状态时,丢弃该数据块,在该数据块的加载状态为未加载状态时,将该数据块写入到数据仓库,在该数据块的加载状态为正在加载状态时,根据该数据块ID查询数据仓库中该数据块已经加载的内容,删除该数据块已经加载的内容,然后再将该数据块写入到数据仓库。
[0044]其中,为了使得收集点能够根据数据块ID快速查询到数据仓库中是否已存储了该数据块ID对应的数据块的内容,收集点向数据仓库发送的内容不仅包括数据块的内容,还包括数据块的ID,数据仓库不仅存储数据块的内容,还存储数据块的内容与数据块ID的对应关系,数据仓库中还可以设置专门的查询模块,用于根据数据块ID返回数据仓库中针对该数据块ID的存储信息。
[0045]为了保证所维护的数据块的加载状态信息的准确性,本发明提出,维护数据块的加载状态信息具体可以包括:
[0046]维护数据块加载状态表,其中存储有数据块ID与相应数据块的加载状态信息的对应关系,在初始化所述数据块加载状态表时,将所有数据块ID对应的加载状态信息初始化为未加载状态,在接收到数据块并且确定该数据块ID对应的数据加载状态为未加载状态后,将该数据块ID对应的加载状态信息修改为正在加载状态,在该数据块全部加载成功后,将该数据块ID对应的加载状态信息修改为已经加载状态,在接收到数据块并且确定该数据块ID对应的数据加载状态为正在加载状态、且已经将数据仓库中该数据块已经加载的内容删除后,将该数据块ID对应的数据加载状态修改为未加载状态。
[0047]本发明还提供了一种数据加载系统,具体请参见图3。
[0048]图3是本发明提供的数据加载系统组成示意图。
[0049]如图3所示,该系统包括主节点301、代理服务节点302和收集点303,代理服务节点302根据主节点301配置的数据块ID与收集点的映射关系,将数据发给该数据所在数据块的ID映射的收集点,例如在图3所示的例子中,代理服务节点A上的数据所在数据块的ID映射收集点A,代理服务节点B、C和D上的数据所在数据块的ID映射收集点B。
[0050]具体地,图3所示系统中各个组成部分的功能如下:
[0051]主节点301,用于配置数据块标识ID与收集点的映射关系,在收集点303出现故障时,将该出现故障的收集点303映射的数据块ID重新配置为与其他未出现故障的收集点303相映射。
[0052]为了节省主节点301的存储空间,所述映射关系可以包括数据块ID区间与收集点303之间的映射关系。
[0053]代理服务节点302,用于将需要加载的数据按照预设规则划分为数据块,并为每个数据块赋予ID,获取数据块ID与收集点的映射关系,根据该映射关系,将数据块发给该数据块ID映射的收集点。
[0054]收集点303,用于将数据块写入到数据仓库。
[0055]其中,代理服务节点302的个数一般为两个以上,收集点303的个数一般也为两个以上,一般将需要加载的数据存储在指定的代理服务节点302的指定存储空间内,由代理服务节点302将自身存储的需要加载的数据进行分块。[0056]其中,代理服务节点302中一般包括有代理服务模块,由代理服务模块对需要加载的数据进行分块、并赋予数据块唯一 ID,获取数据块ID与收集点的映射关系,根据所述映射关系将数据块发给相应的收集点303。
[0057]其中,收集点303可以定期向主节点301报告自身的状态信息,主节点301在规定的时间内没有收到收集点303报告的状态信息时,主节点301确定该没有报告状态信息的收集点303出现故障。
[0058]主节点301也可以采用其他方法确定收集点303是否出现故障,例如,可以由代理服务节点302在向某个收集点303发送数据出错时,向主节点301报告该收集点303出现故障,从而触发主节点301重新配置数据块ID与收集点303的映射关系。
[0059]主节点301在确定出某个收集点303出现故障时,可以根据其他未出现故障的收集点303的负荷状态,选取负荷满足预定条件的收集点303,将该出现故障的收集点303映射的数据块ID重新配置为与所述负荷满足预定条件的收集点303相映射,或者,将该出现故障的收集点303映射的数据块ID均匀地、或按照一定比例地分成两份以上,将各份分别映射不同的未出现故障的收集点303。
[0060]其中的代理服务节点302,可以在向收集点303发送数据块出错时,从主节点301重新获取数据块ID与收集点的映射关系,根据重新获取的映射关系确定该数据块映射的收集点303,向该收集点303发送该数据块。
[0061]当然,代理服务节点302也可以直接接收主节点301下发的、更新后的映射关系表,根据更新后的映射关系表确定每个数据块映射的收集点303。
[0062]为了避免数据的重复加载,收集点303可以包括状态维护模块和写入模块。
[0063]所述状态维护模块,用于维护收集点接收到的每个数据块的加载状态信息。
[0064]所述写入模块,用于根据数据块的加载状态信息判断接收的数据块是否已被加载到数据仓库中,如果是,则不将该接收的数据块写入到数据仓库,否则,将该接收的数据块写入到数据仓库。
[0065]所述加载状态信息具体可以包括已经加载状态、未加载状态和正在加载状态。该系统还可以包括数据仓库。
[0066]所述写入模块,用于向数据仓库发送数据块的内容和该数据块的ID。
[0067]所述数据仓库,用于存储收集点发送的数据块内容,并且,存储数据块内容与数据块ID的对应关系。
[0068]所述写入模块,用于根据接收的数据块ID查询该数据块的加载状态,在该数据块的加载状态为已经加载状态时,丢弃该数据块,在该数据块的加载状态为未加载状态时,将该数据块写入到数据仓库,在该数据块的加载状态为正在加载状态时,根据该数据块ID查询数据仓库中该数据块已经加载的内容,删除该数据块已经加载的内容,然后再将该数据块写入到数据仓库。
[0069]所述状态维护模块,具体可以用于维护数据块加载状态表,其中存储有数据块ID与相应数据块的加载状态信息的对应关系,在初始化所述数据块加载状态表时,将所有数据块ID对应的加载状态信息初始化为未加载状态,在接收到数据块并且确定该数据块ID对应的数据加载状态为未加载状态后,将该数据块ID对应的加载状态信息修改为正在加载状态,在该数据块全部加载成功后,将该数据块ID对应的加载状态信息修改为已经加载状态,在接收到数据块并且确定该数据块ID对应的数据加载状态为正在加载状态、且已经将数据仓库中该数据块已经加载的内容删除后,将该数据块ID对应的数据加载状态修改为未加载状态。
[0070]可见,本发明中,一旦发现有某个或某些收集点出现故障,则重新配置数据块ID与收集点的映射关系,即将出现故障的收集点映射的数据块ID重新配置为与其他未出现故障的收集点相映射,进而使得能够通过其他未出现故障的收集点将已出现故障的收集点原来负责的数据块写入到数据仓库中,实现了不间断、无丢失地地进行数据加载,保证了数据加载的一致性和及时性。
[0071]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【权利要求】
1.一种数据加载方法,其特征在于,该方法包括: 配置数据块标识ID与收集点的映射关系,在收集点出现故障时,将该出现故障的收集点映射的数据块标识ID重新配置为与其他未出现故障的收集点相映射; 将需要加载的数据按照预设规则划分为数据块,并为每个数据块赋予标识ID,获取数据块标识ID与收集点的映射关系,根据该映射关系,将数据块发给该数据块标识ID映射的收集点; 收集点将数据块写入到数据仓库。
2.根据权利要求1所述的方法,其特征在于,该方法还包括:维护收集点接收到的每个数据块的加载状态信息; 收集点将数据块写入到数据仓库包括: 收集点根据数据块的加载状态信息判断接收的数据块是否已被加载到数据仓库中,如果是,则不将该接收的数据块写入到数据仓库,否则,将该接收的数据块写入到数据仓库。
3.根据权利要求2所述的方法,其特征在于,所述加载状态信息包括已经加载状态、未加载状态和正在加载状态; 收集点根据接收的数据块标识ID查询该数据块的加载状态,在该数据块的加载状态为已经加载状态时,丢弃该数据块,在该数据块的加载状态为未加载状态时,将该数据块写入到数据仓库,在该数据块的加载状态为正在加载状态时,根据该数据块标识ID查询数据仓库中该数据块已经加载的内容,删除该数据块已经加载的内容,然后再将该数据块写入到数据仓库; 其中,收集点向数据仓库发送数据块的内容和该数据块的标识ID,数据仓库存储收集点发送的数据块内容,并且,存储数据块内容与数据块标识ID的对应关系。
4.根据权利要求3所述的方法,其特征在于,所述维护收集点接收到的每个数据块的加载状态信息包括: 维护数据块加载状态表,其中存储有数据块标识ID与相应数据块的加载状态信息的对应关系,在初始化所述数据块加载状态表时,将所有数据块标识ID对应的加载状态信息初始化为未加载状态,在接收到数据块并且确定该数据块标识ID对应的数据加载状态为未加载状态后,将该数据块标识ID对应的加载状态信息修改为正在加载状态,在该数据块全部加载成功后,将该数据块标识ID对应的加载状态信息修改为已经加载状态,在接收到数据块并且确定该数据块标识ID对应的数据加载状态为正在加载状态、且已经将数据仓库中该数据块已经加载的内容删除后,将该数据块标识ID对应的数据加载状态修改为未加载状态。
5.根据权利要求1所述的方法,其特征在于,将该出现故障的收集点映射的数据块标识ID重新配置为与其他未出现故障的收集点相映射包括: 根据所述其他未出现故障的收集点的负荷状态,选取负荷满足预定条件的收集点,将该出现故障的收集点映射的数据块标识ID重新配置为与所述负荷满足预定条件的收集点相映射,或者,将该出现故障的收集点映射的数据块标识ID均匀地、或按照一定比例地分成两份以上,将各份分别映射不同的未出现故障的收集点。
6.根据权利要求1所述的方法,其特征在于,获取数据块标识ID与收集点的映射关系,根据该映射关系,将数据块发给该数据块标识ID映射的收集点包括:在向收集点发送数据块出错时,重新获取数据块标识ID与收集点的映射关系,根据重新获取的映射关系确定该数据块映射的收集点,向该收集点发送该数据块。
7.一种数据加载系统,其特征在于,该系统包括主节点、代理服务节点和收集点; 所述主节点,用于配置数据块标识ID与收集点的映射关系,在收集点出现故障时,将该出现故障的收集点映射的数据块标识ID重新配置为与其他未出现故障的收集点相映射; 所述代理服务节点,用于将需要加载的数据按照预设规则划分为数据块,并为每个数据块赋予标识ID,获取数据块标识ID与收集点的映射关系,根据该映射关系,将数据块发给该数据块标识ID映射的收集点; 所述收集点,用于将数据块写入到数据仓库。
8.根据权利要求7所述的系统,其特征在于,所述收集点包括状态维护模块和写入模块; 所述状态维护模块,用于维护收集点接收到的每个数据块的加载状态信息; 所述写入模块,用于根据数据块的加载状态信息判断接收的数据块是否已被加载到数据仓库中,如果是,则不将该接收的数据块写入到数据仓库,否则,将该接收的数据块写入到数据仓库。
9.根据权利要求8所述的系统,其特征在于,所述加载状态信息包括已经加载状态、未加载状态和正在加载状态;该系统还包括数据仓库; 所述写入模块,用于向数据仓库发送数据块的内容和该数据块的标识ID ; 所述数据仓库,用于存储收集点发送的数据块内容,并且,存储数据块内容与数据块标识ID的对应关系; 所述写入模块,用于根据接收的数据块标识ID查询该数据块的加载状态,在该数据块的加载状态为已经加载状态时,丢弃该数据块,在该数据块的加载状态为未加载状态时,将该数据块写入到数据仓库,在该数据块的加载状态为正在加载状态时,根据该数据块标识ID查询数据仓库中该数据块已经加载的内容,删除该数据块已经加载的内容,然后再将该数据块写入到数据仓库。
10.根据权利要求9所述的系统,其特征在于, 所述状态维护模块,用于维护数据块加载状态表,其中存储有数据块标识ID与相应数据块的加载状态信息的对应关系,在初始化所述数据块加载状态表时,将所有数据块标识ID对应的加载状态信息初始化为未加载状态,在接收到数据块并且确定该数据块标识ID对应的数据加载状态为未加载状态后,将该数据块标识ID对应的加载状态信息修改为正在加载状态,在该数据块全部加载成功后,将该数据块标识ID对应的加载状态信息修改为已经加载状态,在接收到数据块并且确定该数据块标识ID对应的数据加载状态为正在加载状态、且已经将数据仓库中该数据块已经加载的内容删除后,将该数据块标识ID对应的数据加载状态修改为未加载状态。
11.根据权利要求7所述的系统,其特征在于, 收集点定期向主节点报告自身的状态信息,主节点在规定的时间内没有收到收集点报告的状态信息时,主节点确定所述收集点出现故障。
12.根据权利要求7所述的系统,其特征在于,所述主节点,用于根据所述其他未出现故障的收集点的负荷状态,选取负荷满足预定条件的收集点,将该出现故障的收集点映射的数据块标识ID重新配置为与所述负荷满足预定条件的收集点相映射,或者,将该出现故障的收集点映射的数据块标识ID均匀地、或按照一定比例地分成两份以上,将各份分别映射不同的未出现故障的收集点。
13.根据权利要求7所述的系统,其特征在于, 所述代理服务节点,用于在向收集点发送数据块出错时,从主节点重新获取数据块标识ID与收集点的映射关系,根据重新获取的映射关系确定该数据块映射的收集点,向该收集点发送该数据块。
14.根据权利要求7所述的系统,其特征在于,所述映射关系包括数据块标识ID区间与收集点之间 的映射关系。
【文档编号】G06F17/30GK103902585SQ201210580016
【公开日】2014年7月2日 申请日期:2012年12月27日 优先权日:2012年12月27日
【发明者】秦平, 齐骥, 钱岭 申请人:中国移动通信集团公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1