태그 보관물: lucene

lucene

Elasticsearch가 디스크 공간을 너무 많이 사용하고 있습니다 CentOS 6.5

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.5store



답변

Elasticsearch는 데이터를 자동으로 축소하지 않습니다. 이것은 모든 데이터베이스에 해당됩니다. 원시 데이터를 저장하는 것 외에도 각 데이터베이스는 메타 데이터를 함께 저장해야합니다. 일반 데이터베이스는 db-admin이 사전에 선택한 열에 대한 색인 만 저장합니다 (더 빠른 검색을 위해). ElasticSearch는 기본적으로 모든 열을 색인화하기 때문에 다릅니다 . 따라서 인덱스를 매우 크게 만들지 만 데이터를 검색하는 동안 완벽한 성능을 제공합니다.

일반 구성에서는 인덱싱 후 원시 데이터가 4-6 배 증가합니다. 실제 데이터에 크게 의존하지만. 그러나 이것은 실제로 의도 된 동작입니다.

따라서 데이터베이스 크기를 줄이려면 RDBM에서와 달리 다른 방법으로 이동해야합니다. 색인화 할 필요가없는 열을 색인화하거나 저장하지 않도록 제외하십시오.

또한 압축을 켤 수 있지만 “문서”가 큰 경우에만 향상되며 로그 파일 항목에는 해당되지 않습니다.

https://github.com/jordansissel/experiments/tree/master/elasticsearch/disk에 대한 비교 및 ​​유용한 팁이 있습니다.

그러나 검색에는 비용이 따른다는 점을 기억하십시오. 지불 비용은 디스크 공간입니다. 그러나 유연성을 얻습니다. 저장 용량이 초과되면 가로로 늘어납니다! ElasticSearch가이기는 곳입니다.


답변