有关ElasticSearch群集配置的建议

时间:2015-12-11 18:52:34

标签: elasticsearch logstash

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

     

此节点当前正在运行带有LS_HEAP_SIZE = 3000m

的logstash实例      

数据节点#2:16GB RAM,ES_HEAP_SIZE = 8000m,单核i7

我目前ES已配置为默认的5个分片+每个索引1个重复。

目前,每个节点都配置为将数据写入外部HD并记录到另一个节点。

在我的测试运行中,我使用Logstash平均每秒10K事件。我的主要目标是优化这些文件加载​​到ES的速度。我认为根据我所读到的内容,我应该接近80K。

我一直在改变工人数量和冲洗大小,但似乎无法超越这个门槛。我想我可能会遗漏一些基本的东西。

我的问题有两个:

1)对于我的群集配置或可能改进流程的一些建议,是否有任何跳出来的东西?

2)如果我在索引单独文件的每个数据节点上运行logstash实例会有帮助吗?

非常感谢您提前获得的所有帮助以及花时间阅读。

-Zinga

1 个答案:

答案 0 :(得分:0)

我首先看看logstash或es是否是您设置中的瓶颈。尝试在没有es输出的情况下摄取文件。你是从朴素/裸体的logstash得到什么。

如果这个数字要高得多,那么你可以继续做事。一个好的首发可能是: https://www.elastic.co/guide/en/elasticsearch/guide/current/indexing-performance.html

如果普通logstash没有显着提高吞吐量,您可以尝试增加/并行化整个机器的logstash。

希望有所帮助