图解Elasticsearch之一——索引创建过程

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 引言这是国外培训ppt课程的节选内容。以下是我们的Core Elasticsearch:Operations课程中的一些很棒的幻灯片,它们有助于解释分片分配的概念。 我们建议您更全面地了解这一点,但我会在此提供我们培训的概述:分片分配是将分片分配给节点的过程。 这可能发生在初始恢复,副本分配,重新平衡或添加或删除节点期间。 大多数时候,你不需要考虑它,这项工作是由Elasticsearch在后台完成的。 如果您发现自己对这些细节感到好奇,本文将探讨在几种不同情况下的分片分配。由于是图解,为方便阅读,我分了4篇文章逐一呈现。

image.png

链接

1、认知前提

这是我们的4节点集群,我们将在内容中使用这些示例:

image.png

2、创建索引

image.png

图1:创建索引c


这是最简单的用例。 我们已经创建了一个索引c,为此我们必须分配新的分片。 如上,通过使用Kibana中的Console插件将第一个文档索引到新索引c中,使用灰色框中的命令进行索引相关操作。

对于索引c,我们创建了一个主分片和一个副本分片。 Master主节点需要创建索引c,并分配两个分片c0(主分片和副本分片)。 集群平衡的方式如下:

1、通过查看群集中每个节点包含的平均分片数,然后尝试使该数字尽可能接近相同

2、通过评估集群中的每个索引级别,并尝试在这些索引之间重新平衡分片。

这个过程有一些限制,这些限制是由分配决策者强加的。 主节点评估集群尝试做出的每个决策,并做出是/否决定。


3、分片分配机制

最干净的示例是您不能将主分片和副本分片数据放在同一节点上。


3.1、基于冷热节点类型设置分片

这允许您仅在具有某些属性的节点上放置分片,并接受或拒绝集群做出的决策。

这是控制此配置的用户驱动决策的示例。

image.png

知识点:集群的冷热数据分离。

当使用elasticsearch进行更大时间的数据分析用例时,我们建议使用基于时间的索引和分层架构,其中包含3种不同类型的节点(主节点,Hot热节点和Warm暖冷节点),我们将其称为“冷热数据分离 “架构。每个节点都有自己的特征,如下所述。


主节点

我们建议每个群集运行3个专用主节点,以提供最大的弹性性能。使用这些时,您还应将discovery.zen.minimum_master_nodes设置为2,这样可以防止出现“裂脑”情况。

利用专用主节点,仅负责处理集群管理和状态,提高整体稳定性。

因为它们不包含数据也不参与搜索和索引操作,所以它们在繁重索引或长时间的搜索期间可能不会遇到对JVM的相同需求。因此不太可能受到长时间垃圾收集暂停(gc pause)的影响。

因此,可以为它们配置CPU,RAM和磁盘配置,远低于数据节点所需的配置。


热节点

此专用数据节点执行集群中的所有索引操作。他们也拥有最新的、最常被查询的索引数据。

由于索引是CPU和IO密集型操作,因此这些服务器需要功能强大,并且需要连接SSD存储。

我们建议至少运行3个热节点以实现高可用性。

根据您希望收集和查询的最新数据量,您可能需要增加此数字以实现性能目标。


暖冷节点

这种类型的数据节点旨在处理大量不经常查询的只读索引。

由于这些索引是只读的,因此热节点倾向于使用大型连接磁盘(通常是机械磁盘)而不是SSD。

与热节点一样,我们建议至少使用3个热节点以实现高可用性。

和以前一样,需要注意的是,大量数据可能需要额外的节点来满足性能要求。

另请注意,CPU和内存配置通常需要接近热节点的配置。这只能通过测试类似于您在生产环境中遇到的查询来确定。


相关冷热节点设置和操作参考:

https://www.elastic.co/blog/hot-warm-architecture-in-elasticsearch-5-x


3.2、基于磁盘使用率分片

image.png

Master主节点监视群集上的磁盘使用情况并查看高/低警戒水位线。

3.3、分配分片的节流机制

节流——意味着原则上我们可以为节点分配一个分片,但是有太多的分片在后台需要持续恢复。

为了保护节点并允许恢复,分配决策器可以告诉集群等待并重试在下一次迭代中将分片分配给同一节点。

image.png

4、分片的初始化过程

一旦我们确定了主分片所属的位置,它就会被标记为“初始化”,并且决策将通过修改后的集群状态广播到集群,集群状态可供集群中的所有节点使用。

image.png

标记初始化后,节点将检测到它已分配新的分片, 将创建一个空的lucene索引,一旦完成,将通知主节点已准备好分片,主节点将分片标记为已启动,并发送另一个已修改的集群状态。

一旦分配了主分片的节点获得更新的集群状态,它就会将该分片标记为已启动。 因为它是主分片,现在可以索引它。


正如您所见,所有这些通信都是通过修改的集群状态完成的。 完成此循环后,主节点将执行重新路由并重新评估分片分配,从而可能决定上一次迭代中的节流限制的分片重新分配。


4.1 分配主分片

image.png

image.png

在我们的例子中,master现在必须尝试分配剩余的副本c0。 这也是分配决策者的决定,它阻止分配副本,直到主节点在包含它的节点上标记为已启动。


4.2 分配副本分片

此时,使用与上述相同的过程进行重新平衡,目标是确保整个群集中的数据平衡,并且在此示例的情况下,我们将按顺序将c0副本分片分配给群集中的node3 保持平衡。 这应该在群集中的每个节点上留下3个分片。

image.png

我们需要确保副本分片数据和主分片数据一致。


分配副本时,重要的是要了解我们要将任何丢失的数据从主分片复制到副本。

在此之后,主服务器将再次将副本标记为已启动并广播新的集群状态。


篇幅原因,后续的几个小章节:

集群重启、集群删除节点、移动分片引起的分片底层操作将后续跟进。


5、 小结

文章原标题"every-shard-deserves-a-home“ 直译为每个分片都值得拥有一个家。

实际的含义想通过图解的方式将不同场景下主分片、副本分片的来龙去脉讲明白。


本来准备写一篇segment底层的文章,但看到了这一片忍不住要翻译一下,

水平有限,欢迎拍砖。


参考:https://www.elastic.co/blog/every-shard-deserves-a-home

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
27天前
|
存储 自然语言处理 关系型数据库
ElasticSearch索引 和MySQL索引那个更高效实用那个更合适
ElasticSearch索引 和MySQL索引那个更高效实用那个更合适
38 0
|
2月前
|
存储 算法 NoSQL
Elasticsearch拆分索引知多少
Elasticsearch拆分索引知多少
33 0
|
3月前
|
数据采集 存储 自然语言处理
elasticsearch 跨索引联合多条件查询
elasticsearch 跨索引联合多条件查询
|
1月前
|
JSON 监控 数据管理
【Elasticsearch专栏 12】深入探索:Elasticsearch使用索引生命周期管理(ILM)自动化删除旧数据
Elasticsearch的ILM功能允许用户定义策略,自动管理索引从创建到删除的生命周期。用户可以设置策略,根据索引年龄或大小自动删除旧数据,节省存储空间。通过应用ILM策略于索引模板,新索引将遵循预定义的生命周期。用户还可以监控ILM状态,确保策略按预期执行。使用ILM,用户可以高效地管理数据,确保旧数据及时删除,同时保持数据完整性和安全性。
|
2月前
|
存储 自然语言处理 搜索推荐
【Elasticsearch专栏 01】深入探索:Elasticsearch的正向索引和倒排索引是什么?
正向索引根据文档ID直接查找文档内容,适用于精确匹配场景;而倒排索引则基于文档内容构建,通过关键词快速定位相关文档,适用于全文搜索,显著提高查询效率,是搜索引擎的核心技术。
|
2月前
|
存储 自然语言处理 搜索推荐
【Elasticsearch专栏 02】深入探索:Elasticsearch为什么使用倒排索引而不是正排索引
倒排索引在搜索引擎中更受欢迎,因为它直接关联文档内容,支持全文搜索和模糊搜索,提高查询效率。其紧凑的结构减少了存储空间,并方便支持多种查询操作。相比之下,正排索引在搜索效率、存储和灵活性方面存在局限。
|
2月前
|
API 索引
Elasticsearch Index Shard Allocation 索引分片分配策略
Elasticsearch Index Shard Allocation 索引分片分配策略
77 1
|
2月前
|
存储 自然语言处理 关系型数据库
Elasticsearch创建一个索引怎么也这么复杂
Elasticsearch创建一个索引怎么也这么复杂
41 0
|
2月前
|
Java 网络架构 索引
Elasticsearch 如何实现索引的伪·命名空间
Elasticsearch 如何实现索引的伪·命名空间
9 0
|
2月前
|
存储 Java API
在生产环境中部署Elasticsearch:最佳实践和故障排除技巧———索引与数据上传(二)
在生产环境中部署Elasticsearch:最佳实践和故障排除技巧———索引与数据上传(二)

热门文章

最新文章