一种索引创建方法及装置
文献发布时间:2023-06-19 13:49:36
技术领域
本申请涉及计算机技术领域,尤其涉及一种索引创建方法及装置。
背景技术
Elasticsearch是一个开源的分布式搜索引擎,具有分布式、可扩展性、实时搜索以及数据分析能力,是当前主流的企业级搜索引擎,可提供对海量数据的存储管理以及全文检索能力。
Elasticsearch集群由至少一个Elasticsearch节点(以下简称节点)组成,每一个节点包括用于存储数据的至少一块磁盘。在数据存储时,节点可根据业务需求将相关联的数据存储到同一索引(Index)中,该索引为指向一个或多个物理分片(shard)的逻辑命名空间,换言之,一个索引可被切分成多个分片,数据最终按分片存储在磁盘上。
在实际使用中发现,对于支持多用户使用的集群,当某一个磁盘故障时,常会影响到多个用户的业务。
发明内容
有鉴于此,本申请提出一种索引创建方法及装置,用以尽量避免磁盘故障对多个用户业务造成影响。
为实现上述申请目的,本申请提供了如下技术方案:
第一方面,本申请提供一种索引创建方法,应用于Elasticsearch集群包括的节点,所述Elasticsearch集群包括至少一个节点,每一个节点包括至少一块磁盘,所述Elasticsearch集群支持多用户使用,所述方法包括:
接收目标用户发送的索引创建请求,所述索引创建请求包括所述目标用户的标识、所述目标用户待创建的目标索引的索引名以及所述目标用户指定的用于存放所述目标索引对应分片的至少一个第一数据目录;
从已配置的至少一个权限策略中,查找包含所述目标索引的索引名的目标权限策略,所述权限策略用于授予用户在为其配置的至少一个第二数据目录下创建索引的权限,其中,每一个用户对应的第二数据目录不同,且分属于不同用户的第二数据目录所挂载的磁盘不同;
如果所述目标权限策略包括的用户的标识与所述目标用户的标识相同,且所述目标权限策略包括的至少一个第二数据目录包括所述目标用户指定的至少一个第一数据目录,则向所述至少一个第一数据目录分配所述目标索引对应分片。
可选的,所述向所述至少一个第一数据目录分配所述目标索引对应分片,包括:
针对所述目标索引对应的每一个待分配的分片执行如下处理:
预估当前分片的大小;
从所述至少一个第一数据目录中,筛选剩余容量不小于所预估的当前分片大小的至少一个第三数据目录;
针对每一个第三数据目录,统计该第三数据目录下已存在的属于所述目标索引的分片的个数;
从所述至少一个第三数据目录中,选择所统计的分片的个数最少的第四数据目录;
向所述第四数据目录分配所述当前分片。
可选的,所述向所述第四数据目录分配所述当前分片,包括:
如果存在多个第四数据目录,针对每一个第四数据目录,统计该第四数据目录下已存在的分片的总个数;
从所述多个第四数据目录中,选择统计的总个数最少的第五数据目录;
向所述第五数据目录分配所述当前分片。
可选的,所述方法还包括:
如果所述至少一个第一数据目录中不存在所述第三数据目录,则从所述至少一个第一数据目录中,选择剩余容量最大的数据目录;
向所述剩余容量最大的数据目录分配所述当前分片。
可选的,所述预估当前分片的大小,包括:
获取所述至少一个第一数据目录的剩余总容量;
获取占所述剩余总容量预设百分比的目标容量;
将当前Elasticsearch集群中已存在的所有分片的总大小与所述已存在的所有分片的总数量的商,作为所述目标索引对应分片大小的平均值;
从所述目标容量和所述平均值中选择最大值,作为预估的当前分片的大小。
第二方面,本申请提供一种索引创建装置,应用于Elasticsearch集群包括的节点,所述Elasticsearch集群包括至少一个节点,每一个节点包括至少一块磁盘,所述Elasticsearch集群支持多用户使用,所述装置包括:
接收单元,用于接收目标用户发送的索引创建请求,所述索引创建请求包括所述目标用户的标识、所述目标用户待创建的目标索引的索引名以及所述目标用户指定的用于存放所述目标索引对应分片的至少一个第一数据目录;
查找单元,用于从已配置的至少一个权限策略中,查找包含所述目标索引的索引名的目标权限策略,所述权限策略用于授予用户在为其配置的至少一个第二数据目录下创建索引的权限,其中,每一个用户对应的第二数据目录不同,且分属于不同用户的第二数据目录所挂载的磁盘不同;
分配单元,用于如果所述目标权限策略包括的用户的标识与所述目标用户的标识相同,且所述目标权限策略包括的至少一个第二数据目录包括所述目标用户指定的至少一个第一数据目录,则向所述至少一个第一数据目录分配所述目标索引对应分片。
可选的,所述分配单元向所述至少一个第一数据目录分配所述目标索引对应分片,包括:
针对所述目标索引对应的每一个待分配的分片执行如下处理:
预估当前分片的大小;
从所述至少一个第一数据目录中,筛选剩余容量不小于所预估的当前分片大小的至少一个第三数据目录;
针对每一个第三数据目录,统计该第三数据目录下已存在的属于所述目标索引的分片的个数;
从所述至少一个第三数据目录中,选择所统计的分片的个数最少的第四数据目录;
向所述第四数据目录分配所述当前分片。
可选的,所述分配单元向所述第四数据目录分配所述当前分片,包括:
如果存在多个第四数据目录,针对每一个第四数据目录,统计该第四数据目录下已存在的分片的总个数;
从所述多个第四数据目录中,选择统计的总个数最少的第五数据目录;
向所述第五数据目录分配所述当前分片。
可选的,所述分配单元,还用于如果所述至少一个第一数据目录中不存在所述第三数据目录,则从所述至少一个第一数据目录中,选择剩余容量最大的数据目录;向所述剩余容量最大的数据目录分配所述当前分片。
可选的,所述分配单元预估当前分片的大小,包括:
获取所述至少一个第一数据目录的剩余总容量;
获取占所述剩余总容量预设百分比的目标容量;
将当前Elasticsearch集群中已存在的所有分片的总大小与所述已存在的所有分片的总数量的商,作为所述目标索引对应分片大小的平均值;
从所述目标容量和所述平均值中选择最大值,作为预估的当前分片的大小。
由以上描述可以看出,本申请实施例中,通过权限策略配置,为不同用户配置不同的数据目录,且分属于不同用户的数据目录所挂载的磁盘不同,用户数据最终存储在为其分配的数据目录所挂载的磁盘中。可以看出,通过权限策略配置已限定不同用户在物理空间上隔离。当接收到用户创建索引的请求时,通过与已配置的权限策略进行匹配,验证创建索引的用户的合法性以及该用户指定的数据目录的合法性,只有通过验证的请求,才被允许执行,即,只有合法用户在合法数据目录上创建索引才被允许,从而保证不同用户的业务数据物理上隔离,单个磁盘故障将不再导致多个用户业务受到影响。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例示出的一种索引创建方法流程图;
图2是本申请实施例示出的一种权限策略配置页面示意图;
图3是本申请实施例出的一种步骤103的实现流程;
图4是本申请实施例出的一种步骤305的实现流程;
图5是本申请实施例示出的一种步骤301的实现流程;
图6是本申请实施例示出的一种索引创建装置示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。
在本申请实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请实施例。在本申请实施例中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请实施例范围的情况下,协商信息也可以被称为第二信息,类似地,第二信息也可以被称为协商信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
参见图1,为本申请实施例示出的一种索引创建方法流程图,该流程应用于Elasticsearch集群包括的节点。
Elasticsearch集群可包括至少一个节点,每一个节点包括至少一块磁盘。Elasticsearch集群可为多用户提供存储管理以及检索服务。
如图1所示,该流程可包括以下步骤:
步骤101,接收目标用户发送的索引创建请求。
这里,将发送索引创建请求的用户称为目标用户。可以理解的是,之所以称为目标用户,只是为便于区分而进行的命名,并非用于限定。
该索引创建请求包括目标用户的标识、目标用户待创建的目标索引的索引名以及目标用户指定的用于存放目标索引对应分片的至少一个第一数据目录。
这里,将目标用户待创建的索引称为目标索引。可以理解的是,之所以称为目标索引,只是为便于区分而进行的命名,并非用于限定。
将目标用户指定的用于存放目标索引对应分片的数据目录称为第一数据目录。可以理解的是,之所以称为第一数据目录,只是为便于区分而进行的命名,并非用于限定。
步骤102,从已配置的至少一个权限策略中,查找包含目标索引的索引名的目标权限策略。
本申请实施例中,管理员可通过权限管理平台配置权限策略。作为一个实施例,该权限管理平台可以为Ranger。
Ranger是一个集监控和权限管理于一身的统一框架,管理员可通过Ranger提供的网络产品界面设计(英文:Website User Interface,缩写:Web UI)页面进行权限策略配置。
参见图2,为本申请实施例示出的一种权限策略配置页面的示意图。通过该页面配置的权限策略包括但不限于以下内容:策略名称(比如,P1)、该策略所适用索引的索引名(比如,Index1)、对该索引具有操作权限的用户的用户名(比如,User1)、为该用户配置的用于存放索引对应分片的数据目录(比如,/path1,/path2,/path3,/path4)以及对该索引可执行的操作(比如,创建)。
本申请实施例中,通过配置权限策略授权用户创建索引的权限,具体为,授权用户在为其配置的数据目录下创建索引的权限,比如,图2所示权限策略表示授权User1在/path1,/path2,/path3,/path4下创建Index1的权限。
本申请实施例中,将在权限策略中为用户配置的数据目录,称为第二数据目录。可以理解的是,之所以称为第二数据目录,只是为便于区分而进行的命名,并非用于限定。
此外,需要说明的是,本申请实施例中,针对不同用户配置的第二数据目录不同,且分属于不同用户的第二数据目录所挂载的磁盘不同。
比如,为用户1(User1)配置的第二数据目录分别为/path1,/path2,/path3,/path4,该各第二数据目录分别挂载的磁盘为Disk1、Disk2、Disk3、Disk4;为用户2(User2)配置的第二数据目录分别为/path5,/path6,该各第二数据目录分别挂载的磁盘为Disk5、Disk6。
即,在配置权限策略时,已限定将不同用户对应的存储空间物理隔离。
Elasticsearch集群的节点可通过运行Ranger插件,定时从Ranger权限管理平台拉取已配置的权限策略。当节点通过步骤101获取到目标用户待创建的目标索引的索引名时,可根据该目标索引的索引名,从已获取的权限策略中,查询包括该目标索引的索引名的权限策略,即,针对目标索引配置的权限策略。
比如,通过步骤101获取的目标索引的索引名为Index1,则可通过本步骤查询到包括Index1的权限策略P1。
本申请实施例中,将包含目标索引的索引名的权限策略称为目标权限策略。可以理解的是,之所以称为目标权限策略,只是为便于区分而进行的命名,并非用于限定。
步骤103,如果目标权限策略包括的用户的标识与目标用户的标识相同,且目标权限策略包括的至少一个第二数据目录包括目标用户指定的至少一个第一数据目录,则向至少一个第一数据目录分配目标索引对应分片。
这里,目标权限策略包括的用户的标识与目标用户的标识相同,说明目标用户为合法用户,其有创建目标索引的权限;目标权限策略包括的至少一个第二数据目录包括目标用户指定的至少一个第一数据目录,说明用户指定的用于存放目标索引对应分片的第一数据目录在管理员为其配置的合法数据目录(第二数据目录)范围内。
在通过本步骤确定用户身份合法且指定的数据目录合法后,即,通过权限验证后,允许在用户指定的第一数据目录下创建目标索引,即,允许将目标索引对应分片分配至第一数据目录下。
比如,User1请求创建Index1,并指定存放该Index1对应分片的数据目录分别为/path1,/path2,/path3,则通过与Index1对应权限策略P1匹配可知,User1为合法用户,/path1,/path2,/path3也为被允许的合法数据目录,则可在/path1,/path2,/path3下创建Index1。
具体向第一数据目录分配目标索引对应分片的过程,在下文中介绍,这里暂不赘述。
至此,完成图1所示流程。
通过图1所示流程可以看出,本申请实施例中,通过权限策略配置,为不同用户配置不同的数据目录,且分属于不同用户的数据目录所挂载的磁盘不同,用户数据最终存储在为其分配的数据目录所挂载的磁盘中。可以看出,通过权限策略配置已限定不同用户在物理空间上隔离。当接收到用户创建索引的请求时,通过与已配置的权限策略进行匹配,验证创建索引的用户的合法性以及该用户指定的数据目录的合法性,只有通过验证的请求,才被允许执行,即,只有合法用户在合法数据目录上创建索引才被允许,从而保证不同用户的业务数据物理上隔离,单个磁盘故障将不再导致多个用户业务受到影响。
下面对步骤103中向至少一个第一数据目录分配目标索引对应分片的过程进行描述。具体地,可针对目标索引对应的每一个待分配的分片依次执行图3所示流程。如图3所示,该流程可包括以下步骤:
步骤301,预估当前分片的大小。
由于当前是预分配阶段,无法确定分片实际大小,因此,需要对待分配的分片预估大小,以便后续根据该预估大小确定可放置该分片的数据目录(磁盘)。
具体预估分片大小的过程,在下文中介绍,这里暂不赘述。
步骤302,从至少一个第一数据目录中,筛选剩余容量不小于所预估的当前分片大小的至少一个第三数据目录。
这里,第三数据目录指剩余容量不小于预估的当前分片大小的第一数据目录。即,从第一数据目录中,找到剩余存储空间足够放置当前分片的数据目录。可以理解的是,之所以称为第三数据目录,只是为便于区分而进行的命名,并非用于限定。
仍以User1指定的/path1,/path2,/path3为例,其中,/path1的剩余容量为100GB,/path2的剩余容量为200GB,/path3的剩余容量为18GB,预估当前分片大小为20GB,则可确定/path1,/path2为剩余容量不小于当前分片大小的第三数据目录。
步骤303,针对每一个第三数据目录,统计该第三数据目录下已存在的属于目标索引的分片的个数。
在通过步骤302筛选出剩余存储空间满足要求的第三数据目录后,统计每一个第三数据目录下已存在(已分配)的、与当前分片所属索引(目标索引)相同的分片的个数。
仍以Index1为例,在通过步骤302筛选出/path1和/path2后,分别统计/path1和/path2下已存在的属于Index1的分片的数量。
步骤304,从至少一个第三数据目录中,选择所统计的属于目标索引的分片个数最少的第四数据目录。
这里,第四数据目录指当前包括的属于目标索引的分片的数量最少的第三数据目录。即,从第三数据目录中,选择当前存放目标索引对应分片最少的数据目录。可以理解的是,之所以称为第四数据目录,只是为便于区分而进行的命名,并非用于限定。
步骤305,向第四数据目录分配当前分片。
仍以当前分片所属Index1为例,通过步骤303分别统计/path1下已存在的属于Index1的分片的数量为1个,/path2下已存在的属于Index1的分片的数量为2个,则将当前分片分配至已存在Index1对应分片数量最少的/path1。
本申请实施例中,通过将同一索引对应分片均衡分配至各数据目录,可有效提升后续搜索该索引对应数据的效率,且可尽量避免在某一数据目录下形成热点数据。
至此,完成图3所示流程。
通过图3所示流程可以看出,本申请实施例中,通过综合考虑数据目录的存储空间以及同一索引对应分片在各数据目录的已有分配情况,均衡分配该索引对应分片,从而尽量避免热点数据产生。
下面对步骤305中向第四数据目录分配当前分片的过程进行描述。参见图4,为本申请实施例出的一种步骤305的实现流程。
如图4所示,该流程可包括以下步骤:
步骤401,如果存在多个第四数据目录,针对每一个第四数据目录,统计该第四数据目录下已存在的分片的总个数。
当通过步骤304筛选出多个第四数据目录时,需要从该多个第四数据目录中选择一个数据目录分配当前分片。
作为一个实施例,可从该多个第四数据目录中任选一个第四数据目录,将当前分片分配至该选择的第四数据目录。
作为另一个实施例,可进一步统计每一个第四数据目录下已存在的分片的总个数。
仍以当前分片所属Index1为例,如果通过步骤303统计的/path1和/path2下已存在的属于Index1的分片的数量相同,比如,均为2个,则继续统计/path1下已存在的所有分片的数量,以及/path2下已存在的所有分片的数量。
步骤402,从多个第四数据目录中,选择统计的已有分片总个数最少的第五数据目录。
这里,第五数据目录指已有分片总个数最少的第四数据目录。即,从第四数据目录中选择已有分片数量最少的数据目录。可以理解的是,之所以称为第五数据目录,只是为便于区分而进行的命名,并非用于限定。
步骤403,向第五数据目录分配当前分片。
比如,通过步骤401统计的/path1下已有分片总数量为20个,/path2下已有分片总数量为16个,则将当前分片分配至已有分片数量最少的/path2。
至此,完成图4所示流程。
通过图4所示流程可以看出,本申请实施例中,在确定当前索引对应已分配分片在各数据目录(第四数据目录)上的分配已均衡的情况下,需进一步考虑各数据目录的整体负载情况,选择负载相对较轻(分片总数量较少)的数据目录进行分配,即,尽量均衡各数据目录的分片数量,以提升集群检索效率。
此外,需要补充说明的是,在通过图3、图4未筛选出符合条件的数据目录时,可直接从用户指定的第一数据目录中,选择剩余容量最大的数据目录,向该剩余容量最大的数据目录分配当前分片,以达到合理利用存储空间的目的。
下面对步骤301中预估当前分片大小的过程进行描述。参见图5,为本申请实施例示出的一种步骤301的实现流程。
如图5所示,该流程可包括以下步骤:
步骤501,获取至少一个第一数据目录的剩余总容量。
即,统计用户指定的可存放目标索引对应分片的所有第一数据目录的剩余总容量。
仍以User1为Index1指定的/path1,/path2,/path3为例,其中,/path1的剩余容量为100GB,/path2的剩余容量为200GB,/path3的剩余容量为18GB,则可当前剩余总容量为318GB。
步骤502,获取占剩余总容量预设百分比的目标容量。
比如,预设百分比为5%,则当前得到的目标容量为318GB×5%=15.9GB。
这里,将占剩余总容量预设百分比的容量称为目标容量。可以理解的是,之所以称为目标容量,只是为便于区分而进行的命名,并非用于限定。
步骤503,将当前Elasticsearch集群中已存在的所有分片的总大小与该已存在的所有分片的总数量的商,作为目标索引对应分片大小的平均值。
比如,当前Elasticsearch集群中已存在的所有分片的总大小为2000GB,该已存在的所有分片的总数量为100个,则通过本步骤确定的分片大小平均值为2000/100=20GB。
步骤504,从目标容量和平均值中选择最大值,作为预估的当前分片的大小。
仍以目标容量为15.9GB,分片大小平均值为20GB为例,则本步骤选择20GB作为预估的当前分片的大小。
至此,完成图5所示流程。通过图5所示流程完成对分片大小的预估。
以上对本申请实施例提供的方法进行了描述,下面对本申请实施例提供的装置进行描述:
参见图6,为本申请实施例示出的一种索引创建装置,应用于Elasticsearch集群包括的节点,所述Elasticsearch集群包括至少一个节点,每一个节点包括至少一块磁盘,所述Elasticsearch集群支持多用户使用,所述装置包括:接收单元601、查找单元602、分配单元603,其中:
接收单元601,用于接收目标用户发送的索引创建请求,所述索引创建请求包括所述目标用户的标识、所述目标用户待创建的目标索引的索引名以及所述目标用户指定的用于存放所述目标索引对应分片的至少一个第一数据目录;
查找单元602,用于从已配置的至少一个权限策略中,查找包含所述目标索引的索引名的目标权限策略,所述权限策略用于授予用户在为其配置的至少一个第二数据目录下创建索引的权限,其中,每一个用户对应的第二数据目录不同,且分属于不同用户的第二数据目录所挂载的磁盘不同;
分配单元603,用于如果所述目标权限策略包括的用户的标识与所述目标用户的标识相同,且所述目标权限策略包括的至少一个第二数据目录包括所述目标用户指定的至少一个第一数据目录,则向所述至少一个第一数据目录分配所述目标索引对应分片。
作为一个实施例,所述分配单元603向所述至少一个第一数据目录分配所述目标索引对应分片,包括:
针对所述目标索引对应的每一个待分配的分片执行如下处理:
预估当前分片的大小;
从所述至少一个第一数据目录中,筛选剩余容量不小于所预估的当前分片大小的至少一个第三数据目录;
针对每一个第三数据目录,统计该第三数据目录下已存在的属于所述目标索引的分片的个数;
从所述至少一个第三数据目录中,选择所统计的分片的个数最少的第四数据目录;
向所述第四数据目录分配所述当前分片。
作为一个实施例,所述分配单元603向所述第四数据目录分配所述当前分片,包括:
如果存在多个第四数据目录,针对每一个第四数据目录,统计该第四数据目录下已存在的分片的总个数;
从所述多个第四数据目录中,选择统计的总个数最少的第五数据目录;
向所述第五数据目录分配所述当前分片。
作为一个实施例,所述分配单元603,还用于如果所述至少一个第一数据目录中不存在所述第三数据目录,则从所述至少一个第一数据目录中,选择剩余容量最大的数据目录;向所述剩余容量最大的数据目录分配所述当前分片。
作为一个实施例,所述分配单元603预估当前分片的大小,包括:
获取所述至少一个第一数据目录的剩余总容量;
获取占所述剩余总容量预设百分比的目标容量;
将当前Elasticsearch集群中已存在的所有分片的总大小与所述已存在的所有分片的总数量的商,作为所述目标索引对应分片大小的平均值;
从所述目标容量和所述平均值中选择最大值,作为预估的当前分片的大小。
至此,完成图6所示装置的描述。
由以上描述可以看出,本申请实施例中,通过权限策略配置,为不同用户配置不同的数据目录,且分属于不同用户的数据目录所挂载的磁盘不同,用户数据最终存储在为其分配的数据目录所挂载的磁盘中。可以看出,通过权限策略配置已限定不同用户在物理空间上隔离。当接收到用户创建索引的请求时,通过与已配置的权限策略进行匹配,验证创建索引的用户的合法性以及该用户指定的数据目录的合法性,只有通过验证的请求,才被允许执行,即,只有合法用户在合法数据目录上创建索引才被允许,从而保证不同用户的业务数据物理上隔离,单个磁盘故障将不再导致多个用户业务受到影响。
以上所述仅为本申请实施例的较佳实施例而已,并不用以限制本申请,凡在本申请实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
- 一种创建索引的方法和创建索引的装置
- 一种索引创建方法和装置以及索引查询方法和装置