Elasticsearch全新 . 我一直在做大量的阅读,但我希望SO上的专家可以权衡我的群集配置,看看是否有我遗漏的东西 .
目前我使用ES(1.7.3)为每个文件索引一些非常大的文本文件(约7亿行)并查找每个文件一个索引 . 我使用logstash(V2.1)作为索引文件的首选方法 . 配置文件在这里是我的第一个索引:
input {
file {
path => "L:/news/data/*.csv"
start_position => "beginning"
sincedb_path => "C:/logstash-2.1.0/since_db_news.txt"
}
}
filter {
csv {
separator => "|"
columns => ["NewsText", "Place", "Subject", "Time"]
}
mutate {
strip => ["NewsText"]
lowercase => ["NewsText"]
}
}
output {
elasticsearch {
action => "index"
hosts => ["xxx.xxx.x.xxx", "xxx.xxx.x.xxx"]
index => "news"
workers => 2
flush_size => 5000
}
stdout {}
}
我的群集包含3个在Windows 10上运行的盒子,每个盒子运行一个节点 . ES未作为服务安装,我只是站在一个主节点上:
主节点:8GB RAM,ES_HEAP_SIZE = 3500m,单核i7数据节点#1:8GB RAM,ES_HEAP_SIZE = 3500m,单核i7此节点当前正在运行logstash实例,LS_HEAP_SIZE = 3000m数据节点#2:16GB RAM,ES_HEAP_SIZE = 8000米,单核i7
我当前ES已配置为默认5个分片,每个索引1个重复 .
目前,每个节点都配置为将数据写入外部HD并记录到另一个HD .
在我的测试运行中,我使用Logstash平均每秒10K事件 . 我的主要目标是优化这些文件加载到ES的速度 . 我想我应该根据我所读到的内容接近80K .
我已经玩过改变 Worker 数量和冲洗大小,但似乎无法超越这个门槛 . 我想我可能会遗漏一些基本的东西 .
我的问题有两个问题:
1)是否有任何关于我的集群配置或一些可能改善过程的建议跳出来的东西?
2)如果我在索引单独文件的每个数据节点上运行logstash实例会有帮助吗?
非常感谢您提前获得的所有帮助以及花时间阅读 .
-Zinga
1 回答
我首先看一下logstash或es是否是你设置的瓶颈 . 尝试在没有es输出的情况下摄取文件 . 你从朴素/裸体的logstash获得了什么吞吐量 .
如果这个相当高,那么你可以继续在事物的方面 . 一个好的首发可能是:https://www.elastic.co/guide/en/elasticsearch/guide/current/indexing-performance.html
如果普通logstash不会显着增加吞吐量,您可以尝试增加/并行化整个机器的logstash .
希望有所帮助