宝石流云 Elasticsearch全攻略( 二 )
【宝石流云 Elasticsearch全攻略】以一个三节点集群的为例:
初始状态:
节点A和C只是知道B 。 B是种子主机 。 种子主机要么以配置文件的形式提供给ES , 要么直接放入elasticsearch.yml中 。
实际上不是这样的 。 在Lucene后台 , 会进行段合并 。 该操作不对段进行更改 , 但是可以两个较小段的数据合并创建新的段 , 并将合并的两个小段清理掉:
如果进行搜索 , 请求入口点ES节点会将其广播到索引中的所有分片 , 这些分片来查看该文档的所有段 。 如果要插入 , 则ES节点会随机选择一个主分片并??将文档放在其中 , 然后将其写入该主要分片及其所有副本 。
生产实践最后部分来说说在生产中如何部署和管理Elasticsearc 。
Elasticsearch实践中最常见的一个问题是 , 估计需要的集群规模 , 包括节点数量 , 需要硬件资源等 。
内存首先要考虑内存使用 , 内存大小将限制所有其他资源 。
Java堆ES是用Java开发的 。 Java要用堆 , 可以将其视为Java保留的内存 。 关于堆 , 有所有重要的东西会使这个文档的大小增加三倍 。
关于尽量可能多的使用 , 但堆大小不要超过30G 。
有一个这很多人都不知道的关于堆的秘密:堆中的每个对象都需要一个唯一的地址 , 即一个对象指针 。 该地址的长度是固定的 , 所以可以寻址的对象数量是有限的 。 简而言之 , 在某一时刻 , Java会需要使用压缩的对象指针而不是未压缩的对象指针 。 这样每个内存访问都将涉及其他步骤 , 并且速度会慢得多 。 请不要超过此阈值(大约32G) 。
根据社区对Elasticsearch的不同文件系统 , 堆大小 , FS和BIOS的组合的基准测试 , 结果如下:
推荐阅读
