- 浏览: 850720 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1095)
- 大数据存储 (76)
- 编程语言(Java&Scala) (46)
- 大数据建模 (33)
- 开发与管理 (8)
- 操作系统 (13)
- 实用代码集合 (25)
- 新技术研究 (15)
- 前端技术研究 (22)
- 物联网 (18)
- 兴趣探索 (15)
- 编程语言(Groovy&Grails) (92)
- 编程语言(RubyOnRails) (153)
- 个人收藏 (152)
- 技术管理 (12)
- 编程语言(Flex) (8)
- 架构和框架(GWT) (4)
- 数学和算法 (6)
- 人工智能(TensorFlow) (11)
- 编程语言(Python) (6)
- 移动开发 (4)
- 软件工程实践 (54)
- 个人感悟 (6)
- 职场感悟 (5)
- 行业经验 (23)
- 产品和运营 (10)
- 生活与随想 (155)
- 简单生活 (70)
- 天空的云 (53)
- 秋月春风 (14)
- 东逝水 (59)
- 浪花淘 (35)
- 白发渔樵 (4)
最新评论
-
cljhyjs:
今天看看在研究,已经安装好了,请问怎么一步一步使用呢?
Thingsboard -
yx200404:
说一下十维空间 -
Clear_Love:
设置了也报错
Xcode 7遇到 App Transport Security has blocked a cleartext HTTP 错误 -
wang263574375:
我想问的是,如果防火墙的设置不能改变,那么要怎么处理呢?
ORA-12571:TNS包写入程序失败 -
ralflsb:
SmartSVN 8.6
SmartSVN破解包
最近一直在研究ES集群,也看了很多篇前辈们总结的博客,同事借鉴了官方给出的一些建议,做了一下几点总结,希望对后来者有用:
1、内存交换。为了防止ES进程的内存被置换到磁盘上(会导致在检索的时候发生内存交换导致检索速度迟缓)引起性能急速下降。在启动ES的时
候可以把config/elasticsearch.yml中的bootstrap.mlockall设置为true就可以了。
2、节点的细分。在官方文档中,主要定义了master node 、data node 、client node 、tribe node、coordinating node,他们之间的协调工作,才能使
集群节点更好的工作。(需要仔细研究,多搭建几个节点测试下)。
master node:配置 node.master : true node.data : false
1)当master为false,而data为true时,会对该节点产生严重负荷;
2)当master为true,而data为false时,该节点作为一个协调者;
3)当master为false,data也为false时,该节点就变成了一个负载均衡器。
3 索引刷新。每次在进行一次document操作的时候,有两个可选项,在索引(动词,理解为插入一条document)之后刷新,在查询(同上)之前刷
新,在索引之后刷新,会牺牲索引的效率(每次插入document都额外的进行刷新),在查询之前刷新会牺牲查询的效率(查询之前会额外的进行刷新)。这两种方式虽然都可以让我们每次查到的数据都是实时性的,但是效率特别的低下,因此我们正常情况可以采用定时刷新的方式,即每次间隔一秒刷新一次(时间可以自己定)。在创建构建客户端的时候,设置index.refresh_interval为想要的数值即可。如:1s,也可以在elasticsearch中配置index.refresh_interval:1s
4 内存分配。es在内存分配上官方给的内存最大不超过32G(和os有关,超过32G,指针会变长,增加cpu压力),一般为机器内存的50%即可,剩下
的会交给lucene,Lucene的设计目的是把底层OS里的数据缓存到内存中。Lucene的段是分别存储到单个文件中的,这些文件都是不会变化的,所以很利于缓存,同时操作系统也会把这些段文件缓存起来,以便更快的访问。
5 分片数量。ES在创建索引的时候默认的分片大小是5。我们可以在创建索引的时候指定分片数量。注意:分片一旦确定,就没法更改。这是因为
Es在创建分片之后,每次索引(动词)都会使用一个算法
shard= hash(routing) % number_of_primary_shards
来确定存储在哪一个分片上,如果更改分片的数量,那么之前所有的document都将无效。没法被routing。
官方给的建议:每个node上的分片数量不超过3个,因此我们如果想要更多的分片只能通过增加节点的方式。
分片不宜过大,也不宜过小。具体可以参考官网的文档和压力测试的结果来设定大小。
为了导入数据更快,可以在创建索引的时候把复制分片设置为0.导入数据结束之后再设置为想要的值。
6 routing。Elasticsearch的路由机制和它的分片机制有相似的地方,他们都是使用的hash算法。将具有相同hash值得文档放在一起。
情景分析:如果poi将全国所有的店面的信息放在es中,如果我们不指定路由,es会随机的将所有的文档存入分片中(数据很大,所以我们需要不止5个分片),现在我们想要查询上海地区所有的poi信息,es的做法是master收到请求,然后广播,每个节点查询数据,然后将数据交给通道节点合并,排序交给用户。这个会严重增加es的节点压力,网络负载。如果我们在查询的时候能明确的知道上海的poi数据在某一个节点上,我们只需要在查询的时候指定routing,es就会在routing指定的节点上查询,就可以避免不必要的资源浪费。也可以提高查询的速度。
我们可以在添加数据的时候指定某一个相同值得字段放在一起,比如上海的cityid=1,我们可以使用以下命令
Curl -XPUT localhost:9200/store/poi?routing=cityId -d '{
"cityId":"1",
"cityName":"上海"
}'
PUT test/_settings
{
"index.routing.allocation.include.size":"big,medium" #这个是把test索引的数据全部分配到big和medium节点
}
PUT test/_settings
{
"index.routing.allocation.exclude.size": "small" #与上面相反,把test索引的数据全部移除small节点
}
7 导入。在导入数据的时候建议先把副本设置为0.待导入完毕之后再设置为需要的数据。
curl -XPUT '192.168.5.112:9200/qinzi/_settings?pretty' -d '
{
"index" : {
"number_of_replicas" : 1
}
}'
导入的时候先把刷新的时间设置为-1(这样在索引的时候,数据对搜索不可见,就是在索引的时候,数据是没法实时查询的),等到索引结束之后,在设置为想要的时间,这个值可以可以通过api设置
curl -XPUT localhost:9200/test/_settings-d '{
"index" : {
"refresh_interval" :"-1"
}
}'
记得在索引之后改回来,不然之前索引的数据都没法查询。
8 节点状态监控。
9 segments优化 ES是基于lucene的,
curl -XPOST192.168.5.112:9200/baidu/_forcemerge?max_num_segments=1(强制性的把segments变为1)在合并的时候需要预留足够的磁盘空间,因为segments合并时候是采用一定的策略,把segments合并,但是旧的还会暂时存在的。
curl -XPOST 192.168.5.112:9200/baidu/_optimize?max_num_segments=1
1、内存交换。为了防止ES进程的内存被置换到磁盘上(会导致在检索的时候发生内存交换导致检索速度迟缓)引起性能急速下降。在启动ES的时
候可以把config/elasticsearch.yml中的bootstrap.mlockall设置为true就可以了。
2、节点的细分。在官方文档中,主要定义了master node 、data node 、client node 、tribe node、coordinating node,他们之间的协调工作,才能使
集群节点更好的工作。(需要仔细研究,多搭建几个节点测试下)。
master node:配置 node.master : true node.data : false
1)当master为false,而data为true时,会对该节点产生严重负荷;
2)当master为true,而data为false时,该节点作为一个协调者;
3)当master为false,data也为false时,该节点就变成了一个负载均衡器。
3 索引刷新。每次在进行一次document操作的时候,有两个可选项,在索引(动词,理解为插入一条document)之后刷新,在查询(同上)之前刷
新,在索引之后刷新,会牺牲索引的效率(每次插入document都额外的进行刷新),在查询之前刷新会牺牲查询的效率(查询之前会额外的进行刷新)。这两种方式虽然都可以让我们每次查到的数据都是实时性的,但是效率特别的低下,因此我们正常情况可以采用定时刷新的方式,即每次间隔一秒刷新一次(时间可以自己定)。在创建构建客户端的时候,设置index.refresh_interval为想要的数值即可。如:1s,也可以在elasticsearch中配置index.refresh_interval:1s
4 内存分配。es在内存分配上官方给的内存最大不超过32G(和os有关,超过32G,指针会变长,增加cpu压力),一般为机器内存的50%即可,剩下
的会交给lucene,Lucene的设计目的是把底层OS里的数据缓存到内存中。Lucene的段是分别存储到单个文件中的,这些文件都是不会变化的,所以很利于缓存,同时操作系统也会把这些段文件缓存起来,以便更快的访问。
5 分片数量。ES在创建索引的时候默认的分片大小是5。我们可以在创建索引的时候指定分片数量。注意:分片一旦确定,就没法更改。这是因为
Es在创建分片之后,每次索引(动词)都会使用一个算法
shard= hash(routing) % number_of_primary_shards
来确定存储在哪一个分片上,如果更改分片的数量,那么之前所有的document都将无效。没法被routing。
官方给的建议:每个node上的分片数量不超过3个,因此我们如果想要更多的分片只能通过增加节点的方式。
分片不宜过大,也不宜过小。具体可以参考官网的文档和压力测试的结果来设定大小。
为了导入数据更快,可以在创建索引的时候把复制分片设置为0.导入数据结束之后再设置为想要的值。
6 routing。Elasticsearch的路由机制和它的分片机制有相似的地方,他们都是使用的hash算法。将具有相同hash值得文档放在一起。
情景分析:如果poi将全国所有的店面的信息放在es中,如果我们不指定路由,es会随机的将所有的文档存入分片中(数据很大,所以我们需要不止5个分片),现在我们想要查询上海地区所有的poi信息,es的做法是master收到请求,然后广播,每个节点查询数据,然后将数据交给通道节点合并,排序交给用户。这个会严重增加es的节点压力,网络负载。如果我们在查询的时候能明确的知道上海的poi数据在某一个节点上,我们只需要在查询的时候指定routing,es就会在routing指定的节点上查询,就可以避免不必要的资源浪费。也可以提高查询的速度。
我们可以在添加数据的时候指定某一个相同值得字段放在一起,比如上海的cityid=1,我们可以使用以下命令
Curl -XPUT localhost:9200/store/poi?routing=cityId -d '{
"cityId":"1",
"cityName":"上海"
}'
PUT test/_settings
{
"index.routing.allocation.include.size":"big,medium" #这个是把test索引的数据全部分配到big和medium节点
}
PUT test/_settings
{
"index.routing.allocation.exclude.size": "small" #与上面相反,把test索引的数据全部移除small节点
}
7 导入。在导入数据的时候建议先把副本设置为0.待导入完毕之后再设置为需要的数据。
curl -XPUT '192.168.5.112:9200/qinzi/_settings?pretty' -d '
{
"index" : {
"number_of_replicas" : 1
}
}'
导入的时候先把刷新的时间设置为-1(这样在索引的时候,数据对搜索不可见,就是在索引的时候,数据是没法实时查询的),等到索引结束之后,在设置为想要的时间,这个值可以可以通过api设置
curl -XPUT localhost:9200/test/_settings-d '{
"index" : {
"refresh_interval" :"-1"
}
}'
记得在索引之后改回来,不然之前索引的数据都没法查询。
8 节点状态监控。
9 segments优化 ES是基于lucene的,
curl -XPOST192.168.5.112:9200/baidu/_forcemerge?max_num_segments=1(强制性的把segments变为1)在合并的时候需要预留足够的磁盘空间,因为segments合并时候是采用一定的策略,把segments合并,但是旧的还会暂时存在的。
curl -XPOST 192.168.5.112:9200/baidu/_optimize?max_num_segments=1
发表评论
-
安装vscode,git之后,点击‘初始化储存库’报错
2023-04-10 14:44 346安装vscode,git之后,点击‘初始化储存库’报错 -
一个未了的心结
2022-09-27 14:16 87我有一个未了的心结, 就是攻克癌症, 我后面不管做啥, 挣了钱 ... -
马云的启示
2022-07-19 17:36 0我挺羡慕马云的, 不是羡慕他的财富, 而是羡慕他的机缘和经历。 ... -
SpringBoot+SpringCloud面试题整理
2021-07-08 16:18 1475什么是SpringBoot? 1、用 ... -
自定义png,端午快乐
2021-06-14 10:00 0ppt+工具。 https://www.iloveimg.co ... -
在线ps软件
2021-06-08 19:02 1717在线ps软件https://www.uupoop.com/ -
万种滋味在心头
2021-05-28 12:30 0万种滋味在心头, 苦涩在自己心里浇灌, 我为什么一定要拧着搞呢 ... -
梦有预测作用
2021-05-12 19:51 653梦有预测作用。 此时此刻的一幕, 梦里梦到过。 -
一些感想
2021-03-10 12:13 4当前阶段对我来说无疑是一个低谷, 我现在经历的所有的困苦、沉闷 ... -
云南华坪女子高中誓词
2021-03-10 11:48 851“我生来就是高山而非溪流,我欲于群峰之巅俯视平庸的沟壑。 我生 ... -
基于 Avue 的可视化表单设计器
2021-03-04 16:05 986本项目是一款基于 Avue 的表单设计器,拖拽式操作让你快速构 ... -
等级保护和分级保护
2021-03-04 17:20 516等级保护和分级保护 -
当Swagger遇上YApi,瞬间高大上了!(一个好用的接口管理工具)
2021-03-03 14:15 505当Swagger遇上YApi,瞬间高大上了!(一个好用的接口管 ... -
从0到N建立高性价比的大数据平台
2021-03-03 13:14 311从0到N建立高性价比的大数据平台 -
大数据平台 - 数据采集及治理
2021-03-03 12:04 351大数据平台 - 数据采集 ... -
pdf2ppt-格式互转神器
2021-03-01 10:26 2http://pdftoword.55.la/pdf-to-p ... -
SpringBlade微服务开发平台
2021-02-25 14:06 326SpringBlade微服务开发平台: https://git ... -
avue-doc数据大屏解决方案
2021-02-25 14:04 309avue-doc数据大屏解决方案 https://www.ka ... -
heroku部署指南
2021-02-04 23:17 241heroku提供的免费网站可以用于构建个人网站,非常适用于实验 ... -
使用 Apache Atlas 进行数据治理
2021-02-02 16:16 398使用 Apache Atlas 进行数据治理
相关推荐
本人在工作期间主要负责公司的集群维护与ES的分布式平台搭建,在这期间总结了自己的一套关于ES集群的优化配置的准则,性能提升有3-5倍,希望可以帮到你
本人在实际的工作中,负责ES平台的搭建以及维护,在实际中总结的集群优化准则,所有集群通用,性能提升有3-5倍
视频资源太大,这里提供百度云链接: 资源包括项目源码和所需的数据: 01-1 _课程导学~1.mp4 01-2 说明和建议~1.mp4 02-1 -术语介绍 .mp4 02-2 Document介绍.mp4...24-1 课程总结.avi codes.zip project.zip 文件树.txt
前言 曾几何时,我们是如上图的方式引入JS... 其他的还包括比如你可以用ES 6 或CoffeeScript写源码,然后构建出浏览器支持的ES5 所以,前端这么好玩,如果还有项目没有前后端分离的话,真的是守旧过头了。 主流构建工
1、内容概要:Hadoop+Spark+Hive+HBase+Oozie+Kafka+Flume+Flink+Elasticsearch+Redash等大数据集群及组件搭建指南(详细搭建步骤+实践过程问题总结)。 2、适合人群:大数据运维、大数据相关技术及组件初学者。 3、...
SDCC 2016数据库峰会(上海站)PPT ...7 ElasticSearch分析与实践-卢亿雷-卢亿雷 AdMaster技术副总裁兼总架构师 8 饿了么数据库架构演进_虢国飞 饿了么DBA经理 9 InfluxDB的架构演进 陈超 七牛云技术总监
24. elasticsearch 安装与配置 25. 进程管理 26. 文件系统管理 27. git 初始化本地仓库 28. Nacos 安装与配置 29. ruby 安装与配置 30. Go 语言的安装与配置 31. MongoDB 安装与配置 32. 添加中文字符集
常用CSS优化总结——网络性能与语法性能建议 编程语言 2013流行Python项目汇总 15款Django开发常用软件包 Rails 3 升级 Rails 4 中遇到的问题及解决方法 php性能优化 Java中的 equals() 和 hashCode() 契约 程序...
整理大牛分享文档如下,一线开发架构,技术...阿里云Elasticsearch架构解析与性能优化实践 Go在区块链的发展和演进 Aliyun ApasaDB Go 微服务架构 罗辑思维Go语言微服务改造实践 Golang打造下一代互联网-IPFS全解析等
技术文档网易蜂巢公有容器云架构之路新浪微博redis优化历程微博缓存架构设计实践在大数据开发中的经验总结基于Go合成滴滴核心业务平台的实践京东分布式KV存储设计与挑战去哪网数据库架构发展历程58速运数据库降压...
本仓库是对Java后端各个知识点的整理! 性能优化 elasticsearch 高并发 分布式 网络安全
ELK (ELK Stack: ElasticSearch, LogStash, Kibana, Beats) 是一套成熟的日志解决方案,其开源及高性能在各大公司广泛使用。而我们业务所使用的服务框架,如何接入 ELK 系统呢? 业务背景 我们的业务框架背景: ...
卢珑文JavaScript技术栈 1 JS技术学习路线 打回来 诺言 es6 类 ...5 JS性能优化 6 ES6-10 7个TypeScript 8 JS数据可视化 Javascript基础 内置函数 数组 目的 功能 布尔型 日期 数 串 符号 内置对象
基于SpringCloudAlibaba,uni-app,ElasticSearch,RabbitMQ,Redis实现。 随着移动互联网技术的发展和用户需求的变化,【小程序名称】应运而生,以其轻量化、便捷化的设计理念为用户提供了一种全新的服务模式。...
希望跟老板预测将新项目采用微前端架构,继续总结更多落地经验,届时有空了分享一波给大家同时也会继续做小掘金的优化 2020.09.25 Vite本地开发接收失败,原因是由于qiankun暂时不支持ESModule类型的包,虽然build后...
最后两章总结了本书,我希望它们是轻松有趣的。第17章探究了将网桥和路由器区别开来的秘密,第18章试图收集人们有关如何设计协议的经验知识。最后有一张术语表。我在第一次使用某个术语时会给出定义,但如果我没有给...