elasticsearch 安装到底能玩多大的数据量

elasticsearch完整基础教程_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
elasticsearch完整基础教程
上传于||文档简介
&&e​l​a​s​t​i​c​s​e​a​r​c​h​完​整​基​础​教​程
大小:46.25KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢Elasticsearch 在高数据量低负载的情况下,应该使用什么配置最具性价比 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
Elasticsearch 在高数据量低负载的情况下,应该使用什么配置最具性价比
· 251 天前 · 2114 次点击
先附:这里说高,是指的对于我们应用来说,学生党能省则省
数据量在 10GB,查询访问峰值低于 10 QPS,查询速度最好低于 100ms,系统负载应低于 3
现在需要单独购买一个阿里云服务器示例,用来跑 Elasticsearch, 用什么配置最合适?
1 核心 1GB 内存 20GB 数据盘可以吗?
11 回复 &| &直到
03:42:28 +08:00
& &251 天前
能省则省的话不是应该挑国外便宜的主机吗
& &251 天前
ES官方推荐的最佳配置是64GB,http://www.elastic.co/guide/en/elasticsearch/guide/current/hardware.html
A machine with 64 GB of RAM is the ideal sweet spot, but 32 GB and 16 GB machines are also common. Less than 8 GB tends to be counterproductive (you end up needing many, many small machines), and greater than 64 GB has problems that we will discuss in Heap: Sizing and Swapping.
& &251 天前 via iPhone
一直用128G的机器跑Es
& &251 天前
用48G跑ES表示鸭梨很大
& &251 天前
@ 那是不是在小内存中跑 ES 就会变慢、或者不稳定呢?
& &251 天前
& &251 天前
ES毕竟是基于JVM之上的,1G内存有点捉急吧
& &251 天前
@ 48G内存跑ES,默认参数还会OOM,&_&
& &251 天前
@ @ 好吧,这货属于土豪和公司玩的,我们这小作坊。。。。。。
& &250 天前
SSD是必不可少的,效率提升极大
& · & 796 人在线 & 最高记录 1630 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.2 · 44ms · UTC 09:22 · PVG 17:22 · LAX 01:22 · JFK 04:22? Do have faith in what you're doing.日 14时33分来自&&&>>&
转发给粉丝
TA没有填写个人签名
属于TA的标签
TA关注的人
TA关注的公司
TA关注的专栏
给朋友加个备注名,方便认出他是谁(0~6个字符)用logstash,elasticSearch,kibana实现数据收集和统计分析工作
-------------
新增文件夹...
新增文件夹
(多个标签用逗号分隔)
世界上的软件80%是运行在内网的,为了使得运行在客户端的软件有良好的体验,并且得到有用的数据,我们需要对这些系统产生的数据,进行统计和分析,这个过程通常包括数据采集,清洗,建模,分析,报表等。接下来在本篇文章中,将会构建一个基于logstash,elasticSearch,kibana的一套数据收集分析的系统
一、框架概要
logstash实时的从业务日志中数据数据(可以进行响应的过滤),然后把数据输入到redis中,redis只做消息队列不对消息做处理和存储,然后redis会把数据转给elasticSearch,elasticSearch会对数据做存储,索引(基于Lunce),再kibana中建立对elasticSearch的链接,实时的抓取索索引后的数据,这样数据就可以实时的进行展示,通过一些数据组装,查询条件,得到我们想要的结果(可以通过各种方式例如图表,表格,折线图等显示)
接下来的第二章节讲述所需软件以及安装
二、所需软件
Redis(https://www.elastic.co/)
kibana(https://download.elastic.co/kibana/kibana/kibana-4.1.3-linux-x64.tar.gz)
logstash(https://download.elastic.co/logstash/logstash/logstash-2.1.0.zip)
Elasticsearch
对于kibana,logstash,Elasticsearch 这三件套,也可以是直接去下载套装()
把软件包均上传到/opt/tools文件夹下,软件均安装在/opt文件夹下
软件的安装和运行,最好不要使用root用户,因为里面有些软件,必须要求非root用于才可以正常的运行。
1、&卸载自带的jdk 安装jdk
上传下载的jdk rpm包
rpm&–ivh&&
jdk-8u65-linux-x64.rpm 通过命令查看jdk版本是否安装成功,安装完成它会自动的配置环境变量等相关信息
java&-version
java&version&"1.8.0_65"
Java(TM)&SE&Runtime&Environment&(build&1.8.0_65-b17)
Java&HotSpot(TM)&64-Bit&Server&VM&(build&25.65-b01,&mixed&mode)
2、 安装Redis
tar&xzf&redis-3.0.5.tar.gz&/opt
$&cd&redis-3.0.5
$&make&&&&make&install
$&src/redis-server
出现以上提示,redis启动成功
客户端测试
$&src/redis-cli
redis&&set&foo&bar
redis&&get&foo
"bar" 由于安装完成后,redis只能窗口化运行,当关闭server的那个shell窗口以后,服务就终端了,所以需要修改相关配置
Vi&redis.conf
daemonize yes&
appendonly yes
这样redis可以支持后台运行
同样,我们可以把Redis作为Linux服务开机启动
这里只提供一种最简单的方式,最好的是通过编写开机启动脚本来做。
如果要开机启动redis,我们需要把redis设置为daemon后台启动(如果不设置为后台启动,则linux启动后图形界面会卡在一个空白的页面),而redis只有1个启动参数,就是redis的配置文件路径。redis的默认配置文件redis.conf位于redis的安装目录下。我们可以把该文件copy到/etc目录下
Shell代码&
1[root@localhost&redis-2.6.14]#&cp&redis.conf&/etc/&
redis的默认配置文件中daemonize参数的值为no,代表为非后台启动,所以我们需要把该参数的值修改为yes。至于其它的参数在这里就不详细说了,具体可以参见:http://blog.csdn.net/htofly/article/details/7686436
修改完daemonize参数之后,redis就能够通过daemon方式启动了,那么下一步就是把redis加入到linux开机启动服务配置中了,具体步骤如下:
使用VI编辑器打开Linux开机启动服务配置文件/etc/rc.local,并在其中加入下面的一行代码:
Shell代码&
2/usr/local/redis-2.6.14/src/redis-server&/etc/redis.conf&
编辑完后保存,然后重启系统就OK了。
停止Redis服务:
Shell代码&
src/redis-cli&shutdown
3、安装elasticsearch
tar&zxvf&elasticsearch-2.1.0.tar.gz 进入elasticsearch-2.1.0文件夹,需要注意的是,elasticsearch不允许用root账户进行启动、
./bin/elasticsearch elasticSearch建议用一个专用的用户进行操作,如果用root用户启动的话,会报错,
会报如下错误:
&Don’t run Elasticsearch as root
在以下网址文档中有详细的说明
(https://www.elastic.co/blog/scripting-security)
curl&-X&GET&http://localhost:9200/
打印出以下信息:
&&"name"&:&"Witchfire",
&&"cluster_name"&:&"elasticsearch",
&&"version"&:&{
&&&&"number"&:&"2.1.0",
&&&&"build_hash"&:&"72cd1f1a3eee146dc",
&&&&"build_timestamp"&:&"T22:40:03Z",
&&&&"build_snapshot"&:&false,
&&&&"lucene_version"&:&"5.3.1"
&&"tagline"&:&"You&Know,&for&Search"
} ElasticSearch安装运行成功
4、&安装Logstash
cd&/opt/tools
unzip&logstash-2.1.0.zip
mv&logstash-2.1.0&/opt
建立服务器启动的配置文件
cd&logstash-2.10.0/
mkdir&conf&log
vi&server.conf
input&{&stdin&{&}
&&&&&&&&&redis{
&&&&&&&&&&&&&&type&=&&"redis-input"
&&&&&&&&&&&&&&data_type&=&&"list"
&&&&&&&&&&&&&&key&=&&"key_count"
&&&&&&&&&}
&&elasticsearch&{&hosts&=&&["localhost:9200"]&}
&&stdout&{&codec&=&&rubydebug&}
//reids地址是127.0.0.1.默认端口是6379 由于我都安装在了本机,所以这个就没有进行再配置,相关配置可以参考以下官网网址:
https://www.elastic.co/guide/en/logstash/current/plugins-inputs-redis.html
启动服务端
#bin/logstash&-f&&conf/server.conf&--log&logs/stdout&&&&&#&"&"为在后台执行
#bin/logstash&-f&&conf/client.conf&--log&logs/stdout&&&&&#&"&"为在后台执行 5、安装kibana
cd&/opt/tools
tar&-zxvf&kibana-4.1.3-linux-x64.tar.gz&-C&/opt
可以在kibana/conf/文件夹中,修改kibana.yml配置文件,修改 elasticsearch的访问路径为相关的访问路径,默认为:
elasticsearch_url:
由于我的elasticearc安装在了本机,这个地址和端口就暂时不做修改了
默认会有.kibana索引,如果没有的话再进行建立
curl -XPUT localhost:9200/.kibana
刚开始下载的是kibana 的版本是4.1.3,然后启动的时候报错,
{"name":"Kibana","hostname":"test-dev1","pid":15605,"level":30,"msg":"Found&kibana&index","time":"T07:49:48.672Z","v":0}
{"name":"Kibana","hostname":"test-dev1","pid":15605,"level":50,"err":{"message":{"root_cause":[{"type":"search_parse_exception","reason":"No&mapping&found&for&[buildNum]&in&order&to&sort&on"}],"type":"search_phase_execution_exception","reason":"all&shards&failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":".kibana","node":"uj6DUqLOSZOWghUpRlegmw","reason":{"type":"search_parse_exception","reason":"No&mapping&found&for&[buildNum]&in&order&to&sort&on"}}]},"name":"Error","stack":"Error:&[object&Object]\n&&&&at&respond&(/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/transport.js:235:15)\n&&&&at&checkRespForFailure&(/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/transport.js:203:7)\n&&&&at&HttpConnector.&anonymous&&(/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/connectors/http.js:156:7)\n&&&&at&IncomingMessage.bound&(/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/node_modules/lodash-node/modern/internals/baseBind.js:56:17)\n&&&&at&IncomingMessage.emit&(events.js:117:20)\n&&&&at&_stream_readable.js:944:16\n&&&&at&process._tickCallback&(node.js:442:13)"},"msg":"","time":"T07:49:48.683Z","v":0}
{"name":"Kibana","hostname":"test-dev1","pid":15605,"level":60,"err":{"message":{"root_cause":[{"type":"search_parse_exception","reason":"No&mapping&found&for&[buildNum]&in&order&to&sort&on"}],"type":"search_phase_execution_exception","reason":"all&shards&failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":".kibana","node":"uj6DUqLOSZOWghUpRlegmw","reason":{"type":"search_parse_exception","reason":"No&mapping&found&for&[buildNum]&in&order&to&sort&on"}}]},"name":"Error","stack":"Error:&[object&Object]\n&&&&at&respond&(/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/transport.js:235:15)\n&&&&at&checkRespForFailure&(/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/transport.js:203:7)\n&&&&at&HttpConnector.&anonymous&&(/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/connectors/http.js:156:7)\n&&&&at&IncomingMessage.bound&(/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/node_modules/lodash-node/modern/internals/baseBind.js:56:17)\n&&&&at&IncomingMessage.emit&(events.js:117:20)\n&&&&at&_stream_readable.js:944:16\n&&&&at&process._tickCallback&(node.js:442:13)"},"msg":"","time":"T07:49:48.683Z","v":0}
经过搜索得知,原来是版本问题,重新下载了4.3版本。重新启动,正常
启动kibana,默认端口为5601
默认是没有任何日志的,当我们访问nginx的时候,会产生一些访问日志,回头再看kibana,日志将会实时的显示到kibana中,深入的去学习kibana的使用,将会做出来我们想要的数据。
来自:http://my.oschina.net/u/2457218/blog/536893
相关资讯  — 
相关文档  — 
发布时间: 09:49:55
同类热门经验
26891次浏览
27664次浏览
18174次浏览
22009次浏览
21216次浏览
19391次浏览
OPEN-OPEN, all rights reserved.elasticsearch关于index性能优化 - CSDN博客
如果是在一个index-heavy的环境下,也许可以考虑牺牲部分查询的性能来满足index性能的提升,这种情形下,多半查询是非常稀少的,可以容忍结果返回的合理延时。这种特殊的应用场景,有一些措施可以用来提升index的性能。
1:科学的性能测试
导致性能低下可能有许多原因,定位影响最大的因素。
(1)一个node,一个shard,没有replicas,进行性能测试。
(2)全部用default值,得出性能基线,作为衡量性能的依据。
(3)长时间的测试(30+minites),一些事件诸如GC,merge等并不会立马发生。
(4)在default基础上,开始逐个修改,如果性能提升,则保留,然后继续修改其他影响因子。
2:用bulk方式
显而易见,bulk request可以提升index的性能。Bulk size取决于你的数据、分析器、集群配置等,但是一个好的开始是每次buck5-15m的数据,注意这是物理大小。document数目并不是一个好的buck的标准。比如:每次buck1000document,如果单个document是1k,则是1m,如果单个document是100k,则每一个是100m。因此,这个差距是相当大的。buck需要加载到内存中,因此,物理大小相比document的数量而言,具有更大的重要性。以5-15m为基线开始测试,缓慢增加,直到性能不能再提升为止。之后,开始增加buck操作的并行度,比如多线程。
用marvel或者iostat等工具,监控node,来发现是哪一种资源开始出现瓶颈。如果开始收到EsRejectedExecutionException,说明集群的某些资源开始出现了问题,这时候应该考虑减小并发度。
(1)用ssd(用不起哈哈)
(2)用RAID0,Striped RAID会提升disk io,也引进了潜在的问题(a drive dies)。不要用mirrored or partity RAIDS,因为replicas提供了这个功能。
(3)用mutiple drivers,通过指定多个path.data让es可以将数据分不到不同的地方。
(4)不要用remote-mounted storage,诸如NFS/SMB/CIFS.
(5)用过用的是EC2,请注意EBS。即使是ssd-based EBS的options也会比local drivers慢一些。
4:段数目和merge操作
segment merge操作非常昂贵,会吃掉大量的disk io。merge操作是在后台被调度,因为执行时间会比较久,尤其是比较大的segment。这样是合理的,因为大segment的merge操作是相对较少的。
但是有时候merge操作会落后与index的摄入量。如果出现这种情况,es会自动限制index request只用一个线程。这会防止segment爆炸(在被merge前出现了大量的segment)。es在发现merge操作落后与index的摄入量的时候,日志中会出现以“now throttling indexing”开头的INFO日志。es的默认设置对此是有考虑的:不想让search的性能受到merge的影响,但是在一些情况下(比如ssd,或者index-heavy),限制设置的上限确实有些低。默认是20mb/s,对于splnning
disk而言,这个默认值非常合理。如果是ssd disk,可以考虑增加到100-200mb/s,对应设置项为indices.store.throttle.max_bytes_per_sec:&100mb&,逐个测试哪一个具体的数值更合适一些。如果是在做buck操作而无需考虑search性能的情况狂下,你当然想要让index的性能达到disk的极限了,因此设置indices.store.throttle.type:&none&。完全禁止merge。当index结束后,重新开启即可。如果是在使用spinning
disk而非ssd,在elasticsearch.yml中增加以下设置:index.merge.scheduler.max_thread_count:1。Spinning disk在处理并发io的时候较慢,因此需要减少访问disk的并发线程数。上述设置将会允许3个thread。如果是ssd的话,可以忽略,默认的设置工作的就很好,Math.min(3,Runtime.getRuntime().availableProcessors()/2)。最后,调整index.translog.flush_threshold_size,默认200mb,比如增加到1gb。这样会使得大的segment在flush之前先在内存中聚合。通过生成更大的segment,减少flush的频率,同时较少了merge的频率。
以上所有的措施都在致力于较少disk io,以提升index性能。
(1)index.refresh_interval。设置为-1,待index结束后重新设置回来。前提是对search并不要求near-realtime的准确性。
(2)buck操作过程中设置index.numer_of_replicas为0。如果不为0的时候,整个document被发送到replicas所在节点,index process会再次执行,这也就以为着每一个replica都会执行analysis、index和潜在的merge。如果设置为0,等待结束后,然后再设置为合理的值,只是执行字节对字节的copy,这将会更高效。
(3)如果业务不需要显式的指定id,请用es自动生成的id。这避免了version lookup,因为自动生成的id是唯一的。
(4)如果使用自定义的id,请使用零填充序列的id、UUID-1和nanotime。这些id是一致连续的格式,压缩效果更好。相反的,UUID-4是完全随机的,压缩效果不好因此会锁好lucene的性能。}

我要回帖

更多关于 elasticsearch marvel 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信