Elasticsearchが使用しているディスク容量が多すぎる


12

Elasticsearch 1.3.2をインストールしたCentOS 6.5サーバーがあります。

私のelasticsearch.yml設定ファイルは、デフォルトとしてelasticsearchを使用して出荷されたものの最小限の変更です。コメント行をすべて削除すると、次のようになります。

cluster.name: xxx-kibana

node:
    name: "xxx"
    master: true
    data: true

index.number_of_shards: 5

index.number_of_replicas: 1

path:
    logs: /log/elasticsearch/log
    data: /log/elasticsearch/data


transport.tcp.port: 9300

http.port: 9200

discovery.zen.ping.multicast.enabled: false

Elasticsearch ではデフォルト圧縮がオンになっている必要があり、圧縮率を50%から95%の範囲で設定するさまざまなベンチマークを読みました。残念ながら、私の場合の圧縮率は-400%です。つまり、ESで保存されたデータは、同じコンテンツのテキストファイルよりも4倍のディスク容量を消費します。見る:

12K     logstash-2014.10.07/2/translog
16K     logstash-2014.10.07/2/_state
116M    logstash-2014.10.07/2/index
116M    logstash-2014.10.07/2
12K     logstash-2014.10.07/4/translog
16K     logstash-2014.10.07/4/_state
127M    logstash-2014.10.07/4/index
127M    logstash-2014.10.07/4
12K     logstash-2014.10.07/0/translog
16K     logstash-2014.10.07/0/_state
109M    logstash-2014.10.07/0/index
109M    logstash-2014.10.07/0
16K     logstash-2014.10.07/_state
12K     logstash-2014.10.07/1/translog
16K     logstash-2014.10.07/1/_state
153M    logstash-2014.10.07/1/index
153M    logstash-2014.10.07/1
12K     logstash-2014.10.07/3/translog
16K     logstash-2014.10.07/3/_state
119M    logstash-2014.10.07/3/index
119M    logstash-2014.10.07/3
622M    logstash-2014.10.07/  # <-- This is the total!

対:

6,3M    /var/log/td-agent/legacy_api.20141007_0.log
8,0M    /var/log/td-agent/legacy_api.20141007_10.log
7,6M    /var/log/td-agent/legacy_api.20141007_11.log
6,7M    /var/log/td-agent/legacy_api.20141007_12.log
8,0M    /var/log/td-agent/legacy_api.20141007_13.log
7,6M    /var/log/td-agent/legacy_api.20141007_14.log
7,6M    /var/log/td-agent/legacy_api.20141007_15.log
7,7M    /var/log/td-agent/legacy_api.20141007_16.log
5,6M    /var/log/td-agent/legacy_api.20141007_17.log
7,9M    /var/log/td-agent/legacy_api.20141007_18.log
6,3M    /var/log/td-agent/legacy_api.20141007_19.log
7,8M    /var/log/td-agent/legacy_api.20141007_1.log
7,1M    /var/log/td-agent/legacy_api.20141007_20.log
8,0M    /var/log/td-agent/legacy_api.20141007_21.log
7,2M    /var/log/td-agent/legacy_api.20141007_22.log
3,8M    /var/log/td-agent/legacy_api.20141007_23.log
7,5M    /var/log/td-agent/legacy_api.20141007_2.log
7,3M    /var/log/td-agent/legacy_api.20141007_3.log
8,0M    /var/log/td-agent/legacy_api.20141007_4.log
7,5M    /var/log/td-agent/legacy_api.20141007_5.log
7,5M    /var/log/td-agent/legacy_api.20141007_6.log
7,8M    /var/log/td-agent/legacy_api.20141007_7.log
7,8M    /var/log/td-agent/legacy_api.20141007_8.log
7,2M    /var/log/td-agent/legacy_api.20141007_9.log
173M    total

私は何を間違えていますか?データが圧縮されないのはなぜですか?

リリースノートindex.store.compress.stored: 1で発見したelasticsearch 0.19.5ようにstore圧縮が最初に出たとき)、構成ファイルに暫定的に追加しましたが、それが違いを生んでいるかどうかはまだわかりません、とにかく圧縮をオンにする必要がありますデフォルト、最近では...


そのデータの保存とインデックス作成にかかるオーバーヘッドを考慮したことはありますか?これが違いの原因です。
mailq 14年

@mailq-知る限り、Elastic データとインデックスの両方を圧縮しますが、テキストログと比較して、ディスク上のスペース使用量が減少していることに気付くはずです。マイレージはログ構造によって異なる場合がありますが、通常、ログは本質的に非常に反復的であるため、インデックス作成は最もスペースを消費する操作ではありません。...またはこれが間違っていますか?
mac 14年

ログは実際には繰り返されません。ユーザーAは時間1にログインします。ユーザーBは時間2にログインします。繰り返しは何ですか?両方のタプルは別々にインデックスを作成して保存する必要があります。ログエントリ自体に加えて。
mailq 14年

1
これらの推奨事項を試してください。github.com/jordansissel/experiments/tree/master/elasticsearch/…–
mailq

@mailq-Supercool maliq、ありがとうございます。コメントを展開して適切な答えを書いたら、受け入れられたとマークして喜んでいるでしょう(そうでなければ後で行いますが、雷を盗みたくない!)。
mac 14年

回答:


16

Elasticsearchは、データを自動的に縮小しません。これは、すべてのデータベースに当てはまります。生データの保存に加えて、各データベースにはメタデータも一緒に保存する必要があります。通常のデータベースは、db-adminが事前に選択した列のインデックスのみを(より高速に検索するために)保存します。ElasticSearchは、デフォルトですべての列にインデックスを付けるため、異なります。したがって、インデックスを非常に大きくしますが、一方でデータを取得しながら完全なパフォーマンスを提供します。

通常の構成では、インデックス作成後に生データが4〜6倍増加します。ただし、実際のデータに大きく依存します。しかし、これは実際に意図された動作です。

そのため、データベースのサイズを小さくするには、RDBMで行ったのとは逆の方法で対処する必要があります。インデックスを作成する必要のない列のインデックス作成または保存を除外します。

さらに、圧縮をオンにすることもできますが、これは「ドキュメント」が大きい場合にのみ改善されます。これはおそらくログファイルエントリには当てはまりません。

ここにいくつかの比較と有用なヒントがあります:https : //github.com/jordansissel/experiments/tree/master/elasticsearch/disk

ただし、検索にはコストがかかることを忘れないでください。支払うコストはディスク容量です。しかし、柔軟性は得られます。ストレージのサイズを超える場合は、水平方向に成長してください!これがElasticSearchが勝つ場所です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.