一种分布式创建索引的方法和装置的制造方法

文档序号:8258657阅读:265来源:国知局
一种分布式创建索引的方法和装置的制造方法
【专利说明】一种分布式创建索引的方法和装置 【技术领域】
[0001] 本发明涉及计算机应用技术领域,特别涉及一种分布式创建索引的方法和装置。 【【背景技术】】
[0002] 随着大数据时代的来临,数据量越来越大,分布式计算集群大量出现,为了提供针 对全文索引数据的查询和计算服务,分布式创建索引随之发展,以提供分布式索引数据。其 中,计算集群主要包括查询计算集群和创建索引集群,如图1所示,其中查询计算集群使用 索引数据对外提供查询和计算服务,创建索引集群负责上述索引数据的创建。
[0003]由于查询计算集群分片数的限制,现有技术中创建索引任务的并发任务数设置为 查询计算集群分片数。这里,查询计算集群分片数指的是查询计算集群将索引数据切分的 数量。然而,每个分片维护的索引数据有限制,否则分片数过多会导致每个分片的数据量较 少,对查询集群的查询计算效率、稳定性、可维护性影响很大。这就会导致分布式创建索引 的并发任务数较少,大大影响分布式创建索引的效率。 【
【发明内容】

[0004] 有鉴于此,本发明提供了一种分布式创建索引的方法和装置,以便于提高分布式 创建索引的效率。
[0005] 具体技术方案如下:
[0006] 本发明提供了一种分布式创建索引的方法,该方法包括:
[0007] 索引创建子任务并发地读取待创建索引的数据并针对读取的待创建索引的数据 创建索引数据,所述索引创建子任务的并发数大于查询计算集群分片数M;
[0008] 索引合并子任务并发地将所述索引数据进行合并,得到M组索引数据,所述索引 合并子任务的并发数为M。
[0009] 根据本发明一优选实施方式,所述索引创建子任务的并发数为M*N,所述N为大于 1的正整数。
[0010] 根据本发明一优选实施方式,该方法还包括:将待创建索引的数据的主键进行哈 希后,根据哈希值将所述待创建索引的数据分配给对应的索引创建子任务进行读取。
[0011] 根据本发明一优选实施方式,所述索引创建子任务被分成M组,所述索引创建子 任务在针对待创建索引的数据创建索引数据时,进一步对索引数据打上标识该索引数据所 属分组的标记;
[0012] 每个索引合并子任务对应索引数据中的一种标记,将索引数据分配给与该索引数 据的标记对应的索引合并子任务进行所述合并的处理。
[0013] 根据本发明一优选实施方式,所述索引创建子任务与所述索引合并子任务存在对 应关系,所述索引合并子任务负责合并其对应索引创建子任务所创建的索引数据。
[0014] 根据本发明一优选实施方式,每个所述索引合并子任务启动X个线程进行索引数 据的合并,所述X为正整数。
[0015] 根据本发明一优选实施方式,所述索引创建子任务在创建索引数据时,对所述索 引数据的元数据信息进行归一化处理;
[0016] 将所述索引数据进行合并具体包括:对于归一化处理后元数据信息相同的索引数 据的正向信息进行批量合并,所述批量合并为批量地将索引数据的正向信息中的数据信息 进行合并。
[0017] 根据本发明一优选实施方式,将所述索引数据进行合并具体包括:
[0018] 获得所述索引数据域中的所有词,对于不同的词在合并反向信息时均保留,对于 相同的词在合并反向信息时更新该词所在的文档以及出现的频率。
[0019] 本发明还提供了一种分布式创建索引的装置,该装置包括:索引创建单元和索引 合并单兀;
[0020] 所述索引创建单元中包含的索引创建子单元的并发数大于查询计算集群分片数 M,所述索引创建子单元,用于并发地读取待创建索引的数据并针对读取的待创建索引的数 据创建索引数据;
[0021] 所述索引合并单元中包含的索引合并子单元的并发数为M,所述索引合并子单元, 用于并发地将所述索引数据进行合并,使得所述索引合并单元得到M组索引数据。
[0022] 根据本发明一优选实施方式,所述索引创建子单元的并发数为M*N,所述N为大于 1的正整数。
[0023] 根据本发明一优选实施方式,所述索引创建单元还包括:第一分配子单元,用于将 待创建索引的数据的主键进行哈希后,根据哈希值将待创建索引的数据分配给对应的索引 创建子任务进行读取。
[0024] 根据本发明一优选实施方式,所述索引创建子单元被分成M组,所述索引创建子 单元在针对待创建索引的数据创建索引数据时,还用于对索引数据打上标识该索引数据所 属分组的标记;
[0025] 每个索引合并子单元对应索引数据中的一种标记,所述索引合并单元还包括:第 二分配子单元,用于将所述索引创建单元创建的索引数据分配给与索引数据的标记对应的 索引合并子单元进行所述合并的处理。
[0026] 根据本发明一优选实施方式,所述索引创建子单元与所述索引合并子单元存在对 应关系,所述索引合并子单元负责合并其对应索引创建子单元所创建的索引数据。
[0027] 根据本发明一优选实施方式,每个索引合并子单元启动X个线程进行索引数据的 合并,所述X为正整数。
[0028] 根据本发明一优选实施方式,所述索引创建子单元,还用于在创建索引数据时,对 所述索引数据的元数据信息进行归一化处理;
[0029] 所述索引合并子单元,具体用于:对于归一化处理后元数据信息相同的索引数据 的正向信息进行批量合并,所述批量合并为批量地将索引数据的正向信息中的数据信息进 行合并。
[0030] 根据本发明一优选实施方式,所述索引合并子单元,具体用于:获得所述索引数据 域中的所有词,对于不同的词在合并反向信息时均保留,对于相同的词在合并反向信息时 更新该词所在的文档以及出现的频率。
[0031] 由以上技术方案可以看出,本发明将创建索引的任务进行拆分,通过大于查询计 算集群分片数M的索引创建子任务并发进行索引数据的创建,再由索引合并子任务并发地 将索引数据进行合并,最终得到M组索引数据,从而提高了分布式创建索引的效率。 【【附图说明】】
[0032] 图1为现有技术中计算集群的示意图;
[0033] 图2为本发明实施例一提供的分布式创建索引的方法示意图;
[0034] 图3为本发明实施例二提供的一种分布式创建索引的装置结构图;
[0035] 图4为本发明实施例二提供的另一种分布式创建索引的装置结构图。 【【具体实施方式】】
[0036] 为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对 本发明进行详细描述。
[0037] 本发明的核心思想在于,将分布式创建索引的任务分成两部分:一部分用于生成 索引数据,在该部分任务中并发数采用一个大于查询计算集群分片数的值;第二部分用于 将索引数据进行合并,最终合并得到的分片数等于查询集群分片数。下面通过实施例一对 本发明提供的方法进行详细描述。
[0038] 实施例一、
[0039] 图2为本发明实施例一提供的分布式创建索引的方法示意图,如图2中所示,该方 法流程主要包括三部分任务。
[0040] 计算集群(通常可以是分布式计算集群或者云计算集群)启动第一部分任务,第一 部分任务的并发数为一个大于查询计算集群分片数的值,优选地,可以为M*N,图1中以该 优选实施方式为例。其中M为查询计算集群分片数,N为大于1的正整数。也就是说,第 一部分任务包含了M*N个并发的索引创建子任务,每一个索引创建子任务分别读取HDFS (Hadoop分布式文件系统)数据,并针对读取的HDFS数据创建索引数据。需要说明的是,在 本发明实施例中均以HDFS数据作为数据源进行举例描述,但本发明并不限于此类型的数 据源,可以是任意其他类型的待创建索引的数据。
[0041] 其中,对于N值的设置而言,如果N值设置的较小,则第一部分任务的运行时间会 比较长;如果N值设置的较大,则并发的索引创建子任务过多,需要占用较多的资源。因此 就需要在这两者之间做一个权衡,通常N值采用经验值,例如选取40。
[0042] 对于并发的索引创建子任务的数据分配而言,由于每一条HDFS数据(看做一个文 档)都存在一个主键,主键唯一标识每个文档的值,例如淘宝(WWW. taobao. com)登陆ID唯 一标识某个淘宝会员,对于尚没有主键的文档则会生成唯一的主键。因此可以采用将HDFS 数据的主键进行哈希(hash)后,根据hash值将HDFS数据分配给对应的索引创建子任务, 从而保证各索引创建子任务达到负载均衡。例如在根据hash值将HDFS数据分配给对应的 索引创建子任务时,可以将hash值对M*N取mod,结果相同的HDFS数据被分配至同一个索 引创建子任务。
[0043] 计算集群启动第二部分任务,第二部分的并发数等于查询集群分片数M,即第二部 分任务包含了M个并发的索引合并子任务,由这M个索引合并子任务并发将第一部分任务 生成的索引数据进行合并,最终生成M组索引数据。
[0044] 具体地,每个索引合并子任务被分配N个索引数据,具体索引合并子任务负责处 理哪些索引数据可以采用以下两种方式:
[0045] 第一种方式:第一部分任务中并发的索引创建子任务可以看做被分成了M组,例 如M*N个并发的索引创建子任务被分成M组,每一组中包含N个索引创建子任务。对于每 一个索引创建子任务在针对读取的HDFS数据创建索引数据时,可以进一步对索引数据打 上标记,该标记用于标识该索引数据所属的分组,即属于第1至M组中的哪个分组,例如可 以将M*N个并发的索引创建子任务的任务编号对M取mod,将结果作为标记。每个索引合并 子任务对应索引数据中的一种标记,将索引数据分配给与其标记对应的索引合并子任务进 行合并。例如标记索引数据属于第1分组的索引数据分配给第
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1