【FusionInsight Elasticsearch二次开发最佳实践】二次开发建议

网友投稿 1057 2022-05-30

集群安装为安全版,则需要保证客户端与服务端的时间一致

如果集群为安全版,需要进行kerberos认证,则需要服务端与客户端的时间一致,时间一致需要注意时区之间的时差的转换。如果时间不一致,会导致客户端认证失败,后续业务流程无法执行。

在应用程序结束之前调用Client的关闭函数

在应用程序结束时需要调用Client的close()方法。任务运行过程中不要频繁创建和关闭Client。

使用批量请求,设置合理的数据条数

当前集群的最佳批量请求大小,可以从5MB开始测试,缓慢增加这个大小,直到写入性能不能提升为止。

使用bulk命令进行批量索引数据时,每批次提交的数据大小为5~15MB。

比如每条数据大小为1k,那么建议批量提交的数据条数为5000条。

【FusionInsight Elasticsearch二次开发最佳实践】二次开发建议

每个批量请求中只处理一个索引的数据

一个bulk请求只写入一个索引的数据,不建议一个bulk请求同时写入多个索引的数据,不同索引的数据分多个bulk请求提交。

使用多线程方式并发索引数据

比如32核的主机,可设置线程数为30~60个。应用程序使用多线程并发索引数据,推荐的并发线程数为主机CPU核数的1~2倍。

运行多个客户端并发执行任务

运行多个客户端并发执行索引/查询任务,提升性能。

客户端配置多个EsNode实例的IP和Port列表

建议所有的EsNode实例的IP和Port都配置在客户端IP列表中。客户端需要配置多个EsNode实例的IP和Port列表,实现负荷分担和负载均衡,避免单EsNode性能瓶颈。

客户端禁止配置EsMaster节点的IP和Port

EsMaster实例为重要的管理进程,为确保elasticsearch集群稳定性,不允许在客户端的IP列表中配置EsMaster节点IP和Port。

分配足够多的堆内存给EsMaster和EsNode实例

在FusionInsight Manager界面,单击“集群 > 待操作集群的名称 > 服务 > Elasticsearch > 配置 > 全部配置”,搜索框输入“GC_OPTS”,修改“GC_OPTS”参数值中的“-Xms”和“-Xmx”的值。

设置Xmx不要大于物理内存的50%,用来确保有足够多的物理内存预留给操作系统缓存。若机器内存的50% > 实例数*30G,设置为30G,否则设置为机器内存的50%/实例数。

不要设置Xmx超过JVM用来压缩对象指针的cutoff(compressed oops),精确的cutoff可能不同,但接近于31G,因此最大设置为30G。

Elasticsearch创建索引建议

为了减少索引数量并避免非常庞大的映射,请考虑将相同索引结构的数据存储在相同的索引中。

避免将不相关的数据放在同一个索引中,以避免稀疏,将这些文件放在不同的索引中通常会更好。

合理规划索引的Shard数

主分片个数一旦确定,就不可以更改。副本分片个数可以根据需要随时修改。

每个分片都可以处理索引和查询请求,在设定分片数目时,可从以下几个方面考虑:

建议单个分片保存的数据量在10~20GB左右,最大不超过30GB。

根据索引预计承载的最大数据容量和单个分片容量确定主分片个数。

为了提升数据可靠性,合理设置副本分片个数,至少设置为1,如果集群的存储空间足够,推荐设置为2。

不要返回大的结果集。

不要返回大的结果集

Elasticsearch被设计为一个搜索引擎,这使得它非常擅长获取与查询匹配的最优文档,但是不适合用来检索与特定查询匹配的所有文档。Elasticsearch为了避免深分页,不允许使用分页(from&size)查询10000条以后的数据,如果需要这样做,请确保使用Scroll API。

安装EsClient实例

EsClient实例用于接收查询请求、查询结果聚合,EsNodeX用于接收写入请求、数据写入,提升集群性能和稳定性。

对于读写业务量较大的Elasticsearch集群,建议安装3~10个EsClient实例。

FusionInsight Elasticsearch EI企业智能

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【Python3网络爬虫开发实战】1.7.3-Appium的安装
下一篇:2020遥感大数据爆发,催生下一个最具普惠价值的AI应用
相关文章