Saya memiliki server CentOS 6.5 di mana saya menginstal Elasticsearch 1.3.2 .
elasticsearch.yml
File konfigurasi saya adalah modifikasi minimal dari pengiriman dengan elasticsearch sebagai default. Setelah dilucuti dari semua baris yang dikomentari, sepertinya:
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 seharusnya memiliki kompresi ON secara default , dan saya membaca berbagai tolok ukur yang menempatkan rasio kompresi dari serendah 50% hingga setinggi 95%. Sayangnya, rasio kompresi dalam kasus saya adalah -400%, atau dengan kata lain: data yang disimpan dengan ES membutuhkan ruang disk 4 kali lebih banyak daripada file teks dengan konten yang sama . Lihat:
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!
melawan:
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
Apa yang saya lakukan salah? Mengapa data tidak dikompresi?
Saya sementara menambahkan index.store.compress.stored: 1
ke file konfigurasi saya, karena saya menemukan bahwa dalam elasticsearch 0.19.5
catatan rilis (saat itulah store
kompresi keluar pertama), tapi saya belum dapat mengetahui apakah itu membuat perbedaan, dan bagaimanapun kompresi harus dinyalakan oleh default, saat ini ...
Jawaban:
Elasticsearch tidak mengecilkan data Anda secara otomatis. Ini berlaku untuk basis data apa pun. Selain menyimpan data mentah, setiap basis data juga harus menyimpan metadata. Database normal hanya menyimpan indeks (untuk pencarian yang lebih cepat) untuk kolom yang db-admin pilih dimuka. ElasticSearch berbeda karena mengindeks setiap kolom secara default. Dengan demikian membuat indeks sangat besar, tetapi di sisi lain memberikan kinerja yang sempurna saat mengambil data.
Dalam konfigurasi normal Anda melihat peningkatan 4 hingga 6 kali dari data mentah setelah pengindeksan. Meskipun sangat tergantung pada data aktual. Tapi ini sebenarnya perilaku yang dimaksudkan.
Jadi untuk mengurangi ukuran basis data, Anda harus sebaliknya seperti yang Anda lakukan di RDBM: Kecualikan kolom agar tidak diindeks atau disimpan sehingga Anda tidak perlu diindeks.
Selain itu Anda dapat mengaktifkan kompresi, tetapi ini hanya akan meningkat ketika "dokumen" Anda besar, yang mungkin tidak benar untuk entri file log.
Ada beberapa perbandingan dan dan tips yang bermanfaat di sini: https://github.com/jordansissel/experiments/tree/master/elasticsearch/disk
Tapi ingat: Pencarian membutuhkan biaya. Biaya yang harus dibayar adalah ruang disk. Tetapi Anda mendapatkan fleksibilitas. Jika ukuran penyimpanan Anda melebihi, maka tumbuhkan secara horizontal! Di sinilah ElasticSearch menang.
sumber