JAVA问答12

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: JAVA问答12

7、Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法

面试官:想了解对 ES 集群的运维能力。

解答

1、关闭缓存 swap;

2、堆内存设置为:Min(节点内存/2, 32GB);

3、设置最大文件句柄数;

4、线程池+队列大小根据业务需要做调整;

5、磁盘存储 raid 方式——存储有条件使用 RAID10,增加单节点性能以及避免单

节点存储故障。

8、lucence 内部结构是什么?

面试官:想了解你的知识面的广度和深度。

解答

第 88 页 共 485 页Lucene 是有索引和搜索的两个过程,包含索引创建,索引,搜索三个要点。可以

基于这个脉络展开一些。

最近面试一些公司,被问到的关于 Elasticsearch 和搜索引擎相关的问题,以及自

己总结的回答。

9、Elasticsearch 是如何实现 Master 选举的?

1、Elasticsearch 的选主是 ZenDiscovery 模块负责的,主要包含 Ping(节点之

间通过这个 RPC 来发现彼此)和 Unicast(单播模块包含一个主机列表以控制哪

些节点需要 ping 通)这两部分;

第 89 页 共 485 页2、对所有可以成为 master 的节点(node.master: true)根据 nodeId 字典排

序,每次选举每个节点都把自己所知道节点排一次序,然后选出第一个(第 0 位)

节点,暂且认为它是 master 节点。

3、如果对某个节点的投票数达到一定的值(可以成为 master 节点数 n/2+1)并

且该节点自己也选举自己,那这个节点就是 master。否则重新选举一直到满足上

述条件。

4、补充:master 节点的职责主要包括集群、节点和索引的管理,不负责文档级

别的管理;data 节点可以关闭 http 功能*。

10、Elasticsearch 中的节点(比如共 20 个),其中的 10 个

选了一个 master,另外 10 个选了另一个 master,怎么办?

1、当集群 master 候选数量不小于 3 个时,可以通过设置最少投票通过数量

discovery.zen.minimum_master_nodes)超过所有候选节点一半以上来解

决脑裂问题;

2、当候选数量为两个时,只能修改为唯一的一个 master 候选,其他作为 data

节点,避免脑裂问题。

11、客户端在和集群连接时,如何选择特定的节点执行请求的?

1、TransportClient 利用 transport 模块远程连接一个 elasticsearch 集群。它并

不加入到集群中,只是简单的获得一个或者多个初始化的 transport 地址,并以

的方式与这些地址进行通信。

12、详细描述一下 Elasticsearch 索引文档的过程。

第 90 页 共 485 页协调节点默认使用文档 ID 参与计算(也支持通过 routing),以便为路由提供合

适的分片。

shard = hash(document_id) % (num_of_primary_shards)

1、当分片所在的节点接收到来自协调节点的请求后,会将请求写入到 Memory

Buffer,然后定时(默认是每隔 1 秒)写入到 Filesystem Cache,这个从 Momery

Buffer 到 Filesystem Cache 的过程就叫做 refresh;

2、当然在某些情况下,存在 Momery Buffer 和 Filesystem Cache 的数据可能会

丢失,ES 是通过 translog 的机制来保证数据的可靠性的。其实现机制是接收到请

求后,同时也会写入到 translog 中,当 Filesystem cache 中的数据写入到磁盘中

时,才会清除掉,这个过程叫做 flush;

3、在 flush 过程中,内存中的缓冲将被清除,内容被写入一个新段,段的 fsync

将创建一个新的提交点,并将内容刷新到磁盘,旧的 translog 将被删除并开始一

个新的 translog。

4、flush 触发的时机是定时触发(默认 30 分钟)或者 translog 变得太大(默认

为 512M)时;

第 91 页 共 485 页补充:关于 Lucene 的 Segement:

1、Lucene 索引是由多个段组成,段本身是一个功能齐全的倒排索引。

2、段是不可变的,允许 Lucene 将新的文档增量地添加到索引中,而不用从头重

建索引。

3、对于每一个搜索请求而言,索引中的所有段都会被搜索,并且每个段会消耗

CPU 的时钟周、文件句柄和内存。这意味着段的数量越多,搜索性能会越低。

4、为了解决这个问题,Elasticsearch 会合并小段到一个较大的段,提交新的合并

段到磁盘,并删除那些旧的小段。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
6月前
|
存储 安全 Java
Java 集合(List、Set、Map 等)相关问答归纳再整理
HashMap 中使用键对象来计算 hashcode 值 HashSet 使用成员对象来计算 hashcode 值,对于两个对象来说hashcode 可能相同,所以 equals() 方法用来判断对象的相等性,如果两个对象不同的话,那么返回 false。 HashMap 比较快,因为是使用唯一的键来获取对象,HashSet 较 HashMap 来说比较慢。 4.1.3 HashMap 与 TreeMap
33 2
|
移动开发 小程序 Java
良心分享:基于Java+SpringBoot+Netty+WebSocket+Uniapp轻松搭建在线互动问答程序
本文将详细介绍如何基于你自己的开源项目搭建一个在线互动问答程序,包括微信小程序和H5网页版。 该项目服务端主要使用了Java + Spring Boot + Netty + WebSocket等技术栈,聊天客户端使用的是UniApp来轻松搭建微信小程序和H5网页端。
78 1
|
存储 SQL 缓存
JAVA问答17
JAVA问答17
84 0
|
存储 SQL 缓存
JAVA问答16
JAVA问答16
122 0
|
存储 搜索推荐 Java
JAVA问答15
JAVA问答15
101 0
|
缓存 自然语言处理 监控
JAVA问答14
JAVA问答14
96 0
|
存储 固态存储 Java
JAVA问答13
JAVA问答13
128 0
|
存储 自然语言处理 运维
JAVA问答11
JAVA问答11
103 0
|
存储 Dubbo 固态存储
JAVA问答10
JAVA问答10
119 0
|
设计模式 缓存 Dubbo
JAVA问答9
JAVA问答9
124 0