ทีม
เหตุใดจึงต้องมีรูปแบบไฟล์ที่แตกต่างกัน
ปัญหาคอขวดด้านประสิทธิภาพที่สำคัญสำหรับแอปพลิเคชันที่เปิดใช้งาน HDFS เช่น MapReduce และ Spark คือเวลาที่ใช้ในการค้นหา อ่าน และเขียนข้อมูล ปัญหาเหล่านี้ประกอบขึ้นด้วยความยากลำบากในการจัดการชุดข้อมูลขนาดใหญ่ หากเรามีสคีมาที่พัฒนาไปมากกว่าที่จะแก้ไข หรือมีข้อจำกัดด้านพื้นที่จัดเก็บข้อมูล
การประมวลผลข้อมูลขนาดใหญ่จะเพิ่มภาระให้กับระบบย่อยการจัดเก็บข้อมูล - Hadoop จัดเก็บข้อมูลซ้ำซ้อนเพื่อให้เกิดความทนทานต่อข้อผิดพลาด นอกจากดิสก์แล้ว ตัวประมวลผล เครือข่าย ระบบอินพุต/เอาท์พุต และอื่นๆ ยังถูกโหลดอีกด้วย เมื่อปริมาณข้อมูลเพิ่มมากขึ้น ค่าใช้จ่ายในการประมวลผลและจัดเก็บข้อมูลก็เพิ่มขึ้นตามไปด้วย
ไฟล์รูปแบบต่างๆ ใน
- เวลาอ่านเร็วขึ้น
- เวลาบันทึกเร็วขึ้น
- ไฟล์ที่ใช้ร่วมกัน
- รองรับการพัฒนาสคีมา
- รองรับการบีบอัดแบบขยาย
ไฟล์บางรูปแบบมีไว้สำหรับการใช้งานทั่วไป บางรูปแบบสำหรับการใช้งานเฉพาะเจาะจง และบางรูปแบบได้รับการออกแบบเพื่อให้ตรงตามคุณลักษณะเฉพาะของข้อมูล ดังนั้นทางเลือกจึงค่อนข้างใหญ่จริงๆ
รูปแบบไฟล์ Avro
สำหรับ การจัดลำดับข้อมูล Avro มีการใช้กันอย่างแพร่หลาย-มัน ตามสตริงนั่นคือรูปแบบการจัดเก็บข้อมูลสตริงใน Hadoop โดยจะจัดเก็บสคีมาในรูปแบบ JSON ทำให้โปรแกรมต่างๆ อ่านและตีความได้ง่าย ข้อมูลอยู่ในรูปแบบไบนารี กะทัดรัดและมีประสิทธิภาพ
ระบบการทำให้เป็นอนุกรมของ Avro เป็นภาษาที่เป็นกลาง ไฟล์สามารถประมวลผลได้หลายภาษา ปัจจุบันคือ C, C++, C#, Java, Python และ Ruby
คุณสมบัติที่สำคัญของรว์คือการสนับสนุนที่แข็งแกร่งสำหรับแผนข้อมูลที่เปลี่ยนแปลงตลอดเวลา ซึ่งก็คือการพัฒนา Avro เข้าใจการเปลี่ยนแปลงสคีมา ไม่ว่าจะเป็นการลบ เพิ่ม หรือเปลี่ยนแปลงฟิลด์
Avro รองรับโครงสร้างข้อมูลที่หลากหลาย ตัวอย่างเช่น คุณสามารถสร้างเรกคอร์ดที่มีอาร์เรย์ ประเภทที่แจกแจง และเรกคอร์ดย่อยได้
รูปแบบนี้เหมาะสำหรับการเขียนไปยังโซนลงจอด (เปลี่ยนผ่าน) ของ Data Lake (
ดังนั้น รูปแบบนี้จึงเหมาะที่สุดสำหรับการเขียนไปยังโซนลงจอดของ Data Lake ด้วยเหตุผลต่อไปนี้:
- โดยปกติแล้วข้อมูลจากโซนนี้จะถูกอ่านอย่างครบถ้วนเพื่อการประมวลผลเพิ่มเติมโดยระบบดาวน์สตรีม และรูปแบบตามแถวจะมีประสิทธิภาพมากกว่าในกรณีนี้
- ระบบดาวน์สตรีมสามารถดึงตารางสคีมาจากไฟล์ได้อย่างง่ายดาย โดยไม่จำเป็นต้องจัดเก็บสคีมาแยกต่างหากในที่จัดเก็บข้อมูลเมตาภายนอก
- การเปลี่ยนแปลงใด ๆ กับสคีมาดั้งเดิมนั้นสามารถประมวลผลได้อย่างง่ายดาย (วิวัฒนาการของสคีมา)
รูปแบบไฟล์ปาร์เก้
Parquet เป็นรูปแบบไฟล์โอเพ่นซอร์สสำหรับ Hadoop ที่จัดเก็บ โครงสร้างข้อมูลที่ซ้อนกันในรูปแบบเสาแบน.
เมื่อเปรียบเทียบกับวิธีการแถวแบบดั้งเดิม ไม้ปาร์เก้มีประสิทธิภาพมากกว่าทั้งในแง่ของการจัดเก็บและประสิทธิภาพ
สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับแบบสอบถามที่อ่านคอลัมน์เฉพาะจากตารางแบบกว้าง (หลายคอลัมน์) ด้วยรูปแบบไฟล์ ทำให้อ่านเฉพาะคอลัมน์ที่จำเป็นเท่านั้น ดังนั้น I/O จึงถูกเก็บไว้ให้น้อยที่สุด
การพูดนอกเรื่องเล็กน้อยและคำอธิบาย: เพื่อให้เข้าใจรูปแบบไฟล์ Parquet ใน Hadoop ได้ดีขึ้น เรามาดูกันว่ารูปแบบตามคอลัมน์ เช่น แบบเรียงเป็นแนวคืออะไร รูปแบบนี้เก็บค่าที่คล้ายกันสำหรับแต่ละคอลัมน์ไว้ด้วยกัน
ID
Name
แผนก
1
emp1
d1
2
emp2
d2
3
emp3
d3
ในรูปแบบสตริง ข้อมูลจะถูกบันทึกดังนี้:
1
emp1
d1
2
emp2
d2
3
emp3
d3
ในรูปแบบไฟล์เรียงเป็นแนว ข้อมูลเดียวกันจะถูกบันทึกดังนี้:
1
2
3
emp1
emp2
emp3
d1
d2
d3
รูปแบบเรียงเป็นแนวจะมีประสิทธิภาพมากกว่าเมื่อคุณต้องการสืบค้นหลายคอลัมน์จากตาราง มันจะอ่านเฉพาะคอลัมน์ที่ต้องการเนื่องจากอยู่ติดกัน ด้วยวิธีนี้ การดำเนินการ I/O จะถูกเก็บไว้ให้น้อยที่สุด
ตัวอย่างเช่น คุณต้องการเพียงคอลัมน์ NAME เท่านั้น ใน
ดังนั้น รูปแบบเรียงเป็นแนวช่วยปรับปรุงประสิทธิภาพคิวรี เนื่องจากต้องใช้เวลาในการค้นหาน้อยลงเพื่อไปยังคอลัมน์ที่ต้องการ และลดจำนวนการดำเนินการ I/O เนื่องจากอ่านเฉพาะคอลัมน์ที่ต้องการเท่านั้น
หนึ่งในคุณสมบัติที่เป็นเอกลักษณ์
เพื่อให้เข้าใจรูปแบบไฟล์ Parquet ใน Hadoop คุณจำเป็นต้องทราบคำศัพท์ต่อไปนี้:
- กลุ่มของสตริง (กลุ่มแถว): การแบ่งข้อมูลตามแนวนอนเชิงตรรกะออกเป็นแถว กลุ่มแถวประกอบด้วยส่วนของแต่ละคอลัมน์ในชุดข้อมูล
- ส่วนของคอลัมน์ (ก้อนคอลัมน์): ส่วนของคอลัมน์เฉพาะ ส่วนของคอลัมน์เหล่านี้อยู่ในกลุ่มแถวเฉพาะและรับประกันว่าจะอยู่ติดกันในไฟล์
- หน้า (หน้า): ส่วนของคอลัมน์จะถูกแบ่งออกเป็นหน้าที่เขียนทีละหน้า หน้าต่างๆ มีชื่อเหมือนกัน ดังนั้นคุณจึงสามารถข้ามชื่อที่ไม่จำเป็นเมื่ออ่านได้
ที่นี่ชื่อเรื่องมีเพียงหมายเลขเวทย์มนตร์ PAR1 (4 ไบต์) ซึ่งระบุไฟล์เป็นไฟล์ Parquet
ส่วนท้ายบอกว่าต่อไปนี้:
- ข้อมูลเมตาของไฟล์ที่มีพิกัดเริ่มต้นของข้อมูลเมตาของแต่ละคอลัมน์ เมื่ออ่าน คุณต้องอ่านข้อมูลเมตาของไฟล์ก่อนเพื่อค้นหาส่วนของคอลัมน์ที่สนใจทั้งหมด ส่วนคอลัมน์ควรอ่านตามลำดับ ข้อมูลเมตาอื่นๆ รวมถึงเวอร์ชันของรูปแบบ สคีมา และคู่คีย์-ค่าเพิ่มเติม
- ความยาวข้อมูลเมตา (4 ไบต์)
- เลขมหัศจรรย์ PAR1 (4 ไบต์)
รูปแบบไฟล์ ORC
ปรับรูปแบบไฟล์แถว-คอลัมน์ให้เหมาะสม (คอลัมน์แถวที่ปรับให้เหมาะสม
ข้อดีของรูปแบบ ORC:
- ไฟล์เดียวคือเอาต์พุตของแต่ละงาน ซึ่งจะช่วยลดภาระบน NameNode (โหนดชื่อ)
- รองรับประเภทข้อมูล Hive รวมถึงประเภทข้อมูล DateTime ทศนิยมและซับซ้อน (struct รายการ แผนที่ และสหภาพ)
- การอ่านไฟล์เดียวกันพร้อมกันโดยกระบวนการ RecordReader ที่แตกต่างกัน
- ความสามารถในการแยกไฟล์โดยไม่ต้องสแกนหาเครื่องหมาย
- การประมาณค่าการจัดสรรหน่วยความจำฮีปที่เป็นไปได้สูงสุดสำหรับกระบวนการอ่าน/เขียนโดยอิงตามข้อมูลในส่วนท้ายของไฟล์
- ข้อมูลเมตาจะถูกจัดเก็บไว้ในรูปแบบไบนารีของบัฟเฟอร์โปรโตคอล ซึ่งอนุญาตให้เพิ่มและลบฟิลด์ได้
ORC จัดเก็บคอลเลกชันของสตริงในไฟล์เดียว และภายในคอลเลกชัน ข้อมูลสตริงจะถูกจัดเก็บในรูปแบบคอลัมน์
ไฟล์ ORC เก็บกลุ่มของบรรทัดที่เรียกว่าแถบและข้อมูลสนับสนุนในส่วนท้ายของไฟล์ Postscript ที่ท้ายไฟล์ประกอบด้วยพารามิเตอร์การบีบอัดและขนาดของส่วนท้ายที่ถูกบีบอัด
ขนาดแถบเริ่มต้นคือ 250 MB เนื่องจากแถบขนาดใหญ่ดังกล่าว การอ่านจาก HDFS จึงมีประสิทธิภาพมากขึ้น: ในบล็อกขนาดใหญ่ที่อยู่ติดกัน
ส่วนท้ายของไฟล์จะบันทึกรายการช่องทางในไฟล์ จำนวนแถวต่อช่องทาง และประเภทข้อมูลของแต่ละคอลัมน์ ค่าผลลัพธ์ของการนับ ต่ำสุด สูงสุด และผลรวมสำหรับแต่ละคอลัมน์จะถูกเขียนไว้ที่นั่นด้วย
ส่วนท้ายของแถบประกอบด้วยไดเร็กทอรีของตำแหน่งสตรีม
ข้อมูลแถวจะใช้เมื่อสแกนตาราง
ข้อมูลดัชนีประกอบด้วยค่าต่ำสุดและสูงสุดสำหรับแต่ละคอลัมน์และตำแหน่งของแถวในแต่ละคอลัมน์ ดัชนี ORC ใช้สำหรับการเลือกแถบและกลุ่มแถวเท่านั้น ไม่ใช่สำหรับการตอบแบบสอบถาม
การเปรียบเทียบรูปแบบไฟล์ต่างๆ
รว์เมื่อเทียบกับปาร์เก้
- Avro เป็นรูปแบบการจัดเก็บแถว ในขณะที่ Parquet เก็บข้อมูลเป็นคอลัมน์
- Parquet เหมาะสำหรับการสืบค้นเชิงวิเคราะห์มากกว่า ซึ่งหมายความว่าการดำเนินการอ่านและการสืบค้นข้อมูลจะมีประสิทธิภาพมากกว่าการเขียนมาก
- การดำเนินการเขียนใน Avro ดำเนินการได้อย่างมีประสิทธิภาพมากกว่าใน Parquet
- Avro เกี่ยวข้องกับวิวัฒนาการของวงจรที่เป็นผู้ใหญ่มากขึ้น Parquet รองรับเฉพาะการเพิ่มสคีมา ในขณะที่ Avro รองรับการวิวัฒนาการแบบมัลติฟังก์ชั่น นั่นคือ การเพิ่มหรือการเปลี่ยนแปลงคอลัมน์
- Parquet เหมาะอย่างยิ่งสำหรับการสืบค้นชุดย่อยของคอลัมน์ในตารางแบบหลายคอลัมน์ Avro เหมาะสำหรับการดำเนินการ ETL ที่เราสืบค้นคอลัมน์ทั้งหมด
ORC กับปาร์เก้
- ไม้ปาร์เก้เก็บข้อมูลที่ซ้อนกันได้ดีกว่า
- ORC เหมาะกว่าในการเพรดิเคตการกดลง
- ORC รองรับคุณสมบัติกรด
- ORC บีบอัดข้อมูลได้ดีขึ้น
มีอะไรอีกให้อ่านในหัวข้อ:
การวิเคราะห์ข้อมูลขนาดใหญ่ในระบบคลาวด์: วิธีที่บริษัทสามารถมุ่งเน้นข้อมูลได้ .คู่มือแบบเรียบง่ายสำหรับ Schema ฐานข้อมูล .ช่องโทรเลขของเราเกี่ยวกับการเปลี่ยนแปลงทางดิจิทัล .
ที่มา: will.com