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


해당 데이터를 저장하고 색인을 생성하는 데 걸리는 오버 헤드를 고려한 적이 있습니까? 이것이 차이점에서 비롯된 부분입니다.
mailq

@mailq-AFAIK, Elastic 데이터와 인덱스를 모두 압축 하므로 텍스트 로그에 비해 디스크의 공간 사용량 이 여전히 줄어 듭니다 . 마일리지는 로그 구조에 따라 다를 수 있지만 로그는 일반적으로 매우 반복적이므로 인덱싱이 공간을 가장 많이 소비하지 않아야합니다. ... 또는 내가 잘못하고 있습니까?
mac

로그는 실제로 반복적이지 않습니다. 사용자 A는 시간 1에 로그인합니다. 사용자 B는 시간 2에 로그인합니다. 반복되는 것은 무엇입니까? 두 튜플 모두 색인을 생성하고 별도로 저장해야합니다. 로그 항목 자체 외에.
mailq


@mailq-Supercool maliq, 고맙습니다. 당신의 의견을 넓히고 정답을 쓰면, 나는 그것을 받아 들인 것으로 표시하게되어 기쁘다.
mac

답변:


17

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.