Elasticsearch(ES)做为NOSQL+搜索引擎的有机结合体,不只有近实时的查询能力,还具备强大的聚合分析能力。所以在全文检索、日志分析、监控系统、数据分析等领域ES均有普遍应用。而完整的Elastic Stack体系(Elasticsearch、Logstash、Kibana、Beats),更是提供了数据采集、清洗、存储、可视化的整套解决方案。
预留一半内存给Lucene使用
毋庸置疑,内存对于 Elasticsearch 来讲绝对是重要的,但还有一个内存消耗大户 —— Lucene。
Apache Lucenejava
more /data/elasticsearch/config/elasticsearch.yml node
cluster.name: sevfun_es_mall //es的集群名称 node.name: sevfun_es_mall3 //节点名 node.master: true //该节点是否有资格被选举成为master node.ingest: false node.data: true //该节点是否存储索引数据 http.enabled: true //是否使用http协议对外提供服务 http.cors.enabled: true http.cors.allow-origin: "*" path.data: /data/esdata //设置索引数据的存储路径 path.logs: /data/eslogs action.auto_create_index: false bootstrap.memory_lock: false //防止内存溢出避免es使用swap network.host: 10.100.0.22 //设置绑定的ip地址 http.port: 9200 //设置对外服务的http端口;节点间交互的tcp端口默认是9300 discovery.zen.ping.unicast.hosts: [10.100.0.45,10.100.0.37,10.100.0.22] discovery.zen.minimum_master_nodes: 2 //候选主节点的个数/2+1 discovery.zen.fd.ping_timeout: 120s //设置集群中自动发现其它节点时ping链接超时时间为2分钟 discovery.zen.fd.ping_retries: 6 //节点超过6次心跳没有回应,则认为该节点脱离master discovery.zen.fd.ping_interval: 30s //节点每隔30s同maste发送一次心跳 client.transport.ping_timeout: 60s //ping命令的响应超时时间,默认为5s。 discovery.zen.ping_timeout: 10s indices.query.bool.max_clause_count: 5000 thread_pool.search.size: 40 //线程池优化 thread_pool.search.queue_size: 1000 //1秒内可接受的搜索请求 thread_pool.index.queue_size: 1000 thread_pool.bulk.queue_size: 1000
more /data/elasticsearch/config/jvm.optionsjson
-Xms8g //JVM堆的大小 设置最小堆的值为2g -Xmx8g //JVM堆的大小 设置组大堆的值为2g -XX:NewRatio=3 //设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 -XX:+ExitOnOutOfMemoryError -XX:HeapDumpPath=/data/ //生成DUMP文件的路径 -XX:+ExitOnOutOfMemoryErrorsss //防止出现内存溢出可是进程没有退出
ES延迟插件安装:
cd /data/elasticsearch/
echo "y
" | bin/elasticsearch-plugin install repository-hdfs
ES集群初始化hdfs仓库报错
es_hdfs_repository报错path: /_snapshot/es_hdfs_repository, params: {repository=es_hdfs_repository
`curl -XPUT 'http://192.168.0.138:9200/_snapshot/es_hdfs_repository' -H 'Content-Type: application/json' -d '{"type":"hdfs","settings":{"uri":"hdfs://192.168.0.5:8020/","path":"/es/repository","compress":true,"max_restore_bytes_per_sec":"80mb","max_snapshot_bytes_per_sec":"80mb","chunk_size":"20mb","buffer_size":"500kb"}}'``
修改jvm配置
vim /data/elasticsearch/config/jvm.options
-Djava.security.policy=file:////data/elasticsearch/plugins/repository-hdfs/plugin-security.policy
须要重启集群全部节点bootstrap
Linux参数调优:
禁用swap
索引优化:
建议根据集群节点的个数规模,分片个数建议>=集群节点的个数。
5节点的集群,5个分片就比较合理。
建议每一个分片大小不要超过30GB
建议冷热数据分离:
热数据存储SSD和普通历史数据存储机械磁盘,物理上提升检索效率。vim