Elasticsearch ใช้พื้นที่ดิสก์มากเกินไป


12

ฉันมีCentOS 6.5เซิร์ฟเวอร์ที่ผมติดตั้งElasticSearch 1.3.2

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 ควรจะมีการบีบอัด ON โดยค่าเริ่มต้นและผมอ่านมาตรฐานต่างๆวางอัตราส่วนการอัดจากที่ต่ำเป็น 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

@mailq - AFAIK ยืดหยุ่นบีบอัดทั้งข้อมูลและดัชนีและคุณยังควรแจ้งให้ทราบการลดลงในการใช้พื้นที่บนดิสก์ของคุณเมื่อเทียบกับบันทึกข้อความ ฉันคิดว่าระยะทางอาจแตกต่างกันไปตามโครงสร้างของบันทึก แต่โดยทั่วไปแล้วบันทึกมักจะซ้ำซ้อนกันมากดังนั้นการสร้างดัชนีไม่ควรใช้พื้นที่ในการดำเนินการมากที่สุด ... หรือฉันผิด
mac

บันทึกไม่ใช่การทำซ้ำ ผู้ใช้เข้าสู่ระบบในเวลา 1 ผู้ใช้ B เข้าสู่ระบบในเวลา 2 ซ้ำคืออะไร? สิ่งอันดับทั้งสองจะต้องจัดทำดัชนีและจัดเก็บแยกต่างหาก นอกเหนือจากรายการบันทึกเอง
mailq

1
ลองคำแนะนำเหล่านั้น github.com/jordansissel/experiments/tree/master/elasticsearch/
......

@mailq - Supercool maliq ขอบคุณมาก หากคุณขยายความคิดเห็นของคุณและเขียนคำตอบที่เหมาะสมฉันยินดีที่จะทำเครื่องหมายว่าเป็นที่ยอมรับ (มิฉะนั้นฉันจะทำมันในภายหลัง แต่ไม่ต้องการขโมยฟ้าร้องของคุณ!)
mac

คำตอบ:


17

Elasticsearch จะไม่ลดขนาดข้อมูลของคุณโดยอัตโนมัติ สิ่งนี้เป็นจริงสำหรับฐานข้อมูลใด ๆ นอกจากการจัดเก็บข้อมูลดิบแต่ละฐานข้อมูลจะต้องเก็บข้อมูลเมตาไว้ด้วย ฐานข้อมูลปกติเก็บเฉพาะดัชนี (เพื่อการค้นหาที่รวดเร็วขึ้น) สำหรับคอลัมน์ที่ db-admin เลือกไว้ล่วงหน้า ElasticSearch จะแตกต่างกันตามดัชนีทุกคอลัมน์โดยค่าเริ่มต้น ดังนั้นการทำให้ดัชนีมีขนาดใหญ่มาก แต่ในทางกลับกันให้ประสิทธิภาพที่สมบูรณ์แบบในขณะที่ดึงข้อมูล

ในการกำหนดค่าปกติคุณจะเห็นการเพิ่มขึ้นของข้อมูลดิบ 4 ถึง 6 เท่าหลังจากการจัดทำดัชนี แม้ว่ามันจะหนักมากขึ้นอยู่กับข้อมูลจริง แต่นี่เป็นพฤติกรรมที่ตั้งใจจริง

ดังนั้นเพื่อลดขนาดฐานข้อมูลคุณต้องไปทางอื่น ๆ เหมือนที่คุณทำใน RDBMs: ยกเว้นคอลัมน์จากการจัดทำดัชนีหรือจัดเก็บที่คุณไม่จำเป็นต้องทำดัชนี

นอกจากนี้คุณสามารถเปิดการบีบอัดได้ แต่จะปรับปรุงได้ก็ต่อเมื่อ "เอกสาร" ของคุณมีขนาดใหญ่ซึ่งอาจไม่เป็นความจริงสำหรับรายการไฟล์บันทึก

มีการเปรียบเทียบและเคล็ดลับที่เป็นประโยชน์ที่นี่: https://github.com/jordansissel/experiments/tree/master/elasticsearch/disk

แต่อย่าลืม: การค้นหามาพร้อมกับค่าใช้จ่าย ค่าใช้จ่ายในการจ่ายคือพื้นที่ดิสก์ แต่คุณจะได้รับความยืดหยุ่น หากขนาดพื้นที่เก็บข้อมูลของคุณสูงกว่าขนาดที่คุณเพิ่มขึ้น นี่คือที่ ElasticSearch ชนะ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.