ทั้ง HBase และ HDFS ในภาพเดียว
บันทึก:
ตรวจสอบปีศาจ HDFS (ไฮไลต์เป็นสีเขียว) เช่นDataNode (เซิร์ฟเวอร์ภูมิภาคที่จัดเรียง)และ NameNode ในคลัสเตอร์ที่มีทั้ง HBase และ Hadoop HDFS
HDFSเป็นระบบไฟล์แบบกระจายที่เหมาะสำหรับการจัดเก็บไฟล์ขนาดใหญ่ ซึ่งไม่ได้ให้การค้นหาบันทึกแต่ละรายการอย่างรวดเร็วในไฟล์
ในทางกลับกันHBaseสร้างขึ้นบน HDFS และให้การค้นหาบันทึกที่รวดเร็ว (และการอัปเดต) สำหรับตารางขนาดใหญ่ บางครั้งสิ่งนี้อาจเป็นจุดของความสับสนทางแนวคิด HBase ทำให้ข้อมูลของคุณอยู่ใน "StoreFiles" ที่จัดทำดัชนีไว้ภายในซึ่งมีอยู่บน HDFS สำหรับการค้นหาความเร็วสูง
ลักษณะนี้เป็นอย่างไร?
ในระดับโครงสร้างพื้นฐานเครื่องช่วยกู้แต่ละเครื่องในคลัสเตอร์มีปีศาจติดตาม
- เซิร์ฟเวอร์ภูมิภาค - HBase
- โหนดข้อมูล - HDFS
การค้นหามันเร็วแค่ไหน?
HBase ประสบความสำเร็จในการค้นหาอย่างรวดเร็วบน HDFS (บางครั้งระบบไฟล์แบบกระจายอื่น ๆ ด้วย) เป็นที่เก็บข้อมูลพื้นฐานโดยใช้โมเดลข้อมูลต่อไปนี้
ตาราง
- ตาราง HBase ประกอบด้วยหลายแถว
แถว
- แถวใน HBase ประกอบด้วยคีย์แถวและคอลัมน์อย่างน้อยหนึ่งคอลัมน์ที่มีค่าที่เกี่ยวข้อง แถวจะเรียงตามตัวอักษรตามคีย์แถวตามที่จัดเก็บ ด้วยเหตุนี้การออกแบบคีย์แถวจึงมีความสำคัญมาก เป้าหมายคือการจัดเก็บข้อมูลในลักษณะที่แถวที่เกี่ยวข้องอยู่ใกล้กัน รูปแบบคีย์แถวทั่วไปคือโดเมนเว็บไซต์ หากคีย์แถวของคุณเป็นโดเมนคุณควรจัดเก็บไว้ในแบบย้อนกลับ (org.apache.www, org.apache.mail, org.apache.jira) วิธีนี้โดเมน Apache ทั้งหมดจะอยู่ใกล้กันในตารางแทนที่จะกระจายตามตัวอักษรตัวแรกของโดเมนย่อย
คอลัมน์
- คอลัมน์ใน HBase ประกอบด้วยตระกูลคอลัมน์และตัวระบุคอลัมน์ซึ่งคั่นด้วยอักขระ: (โคลอน)
คอลัมน์ครอบครัว
- กลุ่มคอลัมน์จัดวางชุดของคอลัมน์และค่าของคอลัมน์ทางกายภาพโดยมักจะเป็นเหตุผลด้านประสิทธิภาพ แต่ละตระกูลคอลัมน์มีชุดของคุณสมบัติการจัดเก็บเช่นควรแคชค่าไว้ในหน่วยความจำหรือไม่การบีบอัดข้อมูลหรือการเข้ารหัสคีย์แถวและอื่น ๆ แต่ละแถวในตารางมีตระกูลคอลัมน์เดียวกันแม้ว่าแถวที่กำหนดอาจไม่เก็บข้อมูลใด ๆ ในตระกูลคอลัมน์ที่ระบุ
รอบคัดเลือกคอลัมน์
- ตัวระบุคอลัมน์จะถูกเพิ่มลงในกลุ่มคอลัมน์เพื่อจัดทำดัชนีสำหรับข้อมูลที่กำหนด เมื่อพิจารณาถึงเนื้อหาตระกูลคอลัมน์ตัวกำหนดคอลัมน์อาจเป็นเนื้อหา: html และอีกรายการหนึ่งอาจเป็นเนื้อหา: pdf แม้ว่าตระกูลคอลัมน์จะได้รับการแก้ไขในการสร้างตาราง แต่ตัวระบุคอลัมน์สามารถเปลี่ยนแปลงได้และอาจแตกต่างกันอย่างมากระหว่างแถว
เซลล์
- เซลล์คือการรวมกันของแถวตระกูลคอลัมน์และตัวระบุคอลัมน์และมีค่าและการประทับเวลาซึ่งแสดงถึงเวอร์ชันของค่า
การประทับเวลา
- การประทับเวลาเขียนไว้ข้างแต่ละค่าและเป็นตัวระบุสำหรับค่าเวอร์ชันที่กำหนด ตามค่าเริ่มต้นการประทับเวลาจะแสดงเวลาบน RegionServer เมื่อข้อมูลถูกเขียน แต่คุณสามารถระบุค่าการประทับเวลาที่แตกต่างกันเมื่อคุณใส่ข้อมูลลงในเซลล์
ขั้นตอนการร้องขอการอ่านของลูกค้า:
ตารางเมตาในภาพด้านบนคืออะไร?
หลังจากข้อมูลทั้งหมดขั้นตอนการอ่าน HBase มีไว้สำหรับการค้นหาที่สัมผัสกับเอนทิตีเหล่านี้
- ขั้นแรกเครื่องสแกนจะมองหาเซลล์แถวในบล็อคแคช - แคชสำหรับอ่าน ค่าคีย์ที่อ่านล่าสุดจะถูกแคชไว้ที่นี่และใช้น้อยที่สุดจะถูกขับไล่เมื่อจำเป็นต้องใช้หน่วยความจำ
- จากนั้นสแกนเนอร์จะค้นหาในMemStoreซึ่งเป็นแคชการเขียนในหน่วยความจำที่มีการเขียนล่าสุด
- หากเครื่องสแกนไม่พบเซลล์แถวทั้งหมดใน MemStore และ Block Cache HBase จะใช้ดัชนี Block Cache และตัวกรองBloomเพื่อโหลดHFilesลงในหน่วยความจำซึ่งอาจมีเซลล์แถวเป้าหมาย
แหล่งที่มาและข้อมูลเพิ่มเติม:
- แบบจำลองข้อมูล HBase
- HBase architecute