เอชเบส Architecture: กรณีการใช้งาน ส่วนประกอบ และแบบจำลองข้อมูล
⚡ สรุปอย่างชาญฉลาด
โครงสร้างของ HBase สร้างขึ้นจากส่วนประกอบที่ประสานงานกันสี่ส่วน ได้แก่ HMaster, Region Servers, ZooKeeper และ HDFS ซึ่งจัดเก็บข้อมูลในรูปแบบคอลัมน์ แบ่งข้อมูลออกเป็นภูมิภาค และให้บริการการอ่านและการเขียนแบบสุ่มที่มีความหน่วงต่ำ

Apache HBase เป็นฐานข้อมูล NoSQL แบบกระจายศูนย์และเน้นการจัดเก็บในคอลัมน์ ซึ่งทำงานอยู่บน Hadoop และระบบไฟล์แบบกระจายของ Hadoop (HDFS) สถาปัตยกรรมของมันรวมเอามาสเตอร์ที่ทำหน้าที่ประสานงาน เซิร์ฟเวอร์ภูมิภาค และ ZooKeeper เข้าด้วยกันเพื่อจัดเก็บตารางขนาดใหญ่มาก และให้บริการการอ่านและเขียนแบบสุ่มที่รวดเร็ว
เอชเบส Archiเทคเจอร์และส่วนประกอบที่สำคัญ
โครงสร้างของ HBase ประกอบด้วยส่วนประกอบหลักดังต่อไปนี้:
- เอชมาสเตอร์
- เซิร์ฟเวอร์ภูมิภาค
- HRRegions
- ZooKeeper
- เอชดีเอฟเอส
ด้านล่างนี้คือสถาปัตยกรรมโดยละเอียดของ HBase พร้อมส่วนประกอบต่างๆ ดังที่แสดงในแผนภาพ
เอชมาสเตอร์
HMaster ใน HBase คือการใช้งานเซิร์ฟเวอร์หลัก (Master server) ในสถาปัตยกรรมของ HBase ทำหน้าที่เป็นตัวแทนตรวจสอบเพื่อติดตามอินสแตนซ์ Region Server ทั้งหมดที่มีอยู่ในคลัสเตอร์ และทำหน้าที่เป็นอินเทอร์เฟซสำหรับการเปลี่ยนแปลงเมตาเดต้าทั้งหมด ในสภาพแวดล้อมคลัสเตอร์แบบกระจาย เซิร์ฟเวอร์หลักจะทำงานบน NameNode โดยเซิร์ฟเวอร์หลักจะทำงานในเธรดพื้นหลังหลายเธรด
ต่อไปนี้คือบทบาทสำคัญที่ HMaster ปฏิบัติใน HBase:
- มีบทบาทสำคัญในด้านประสิทธิภาพการทำงานและการดูแลรักษาโหนดในคลัสเตอร์
- HMaster มอบประสิทธิภาพของผู้ดูแลระบบและกระจายบริการไปยังเซิร์ฟเวอร์ภูมิภาคต่างๆ
- HMaster กำหนดภูมิภาคให้กับเซิร์ฟเวอร์ภูมิภาค
- HMaster ทำหน้าที่ควบคุมการกระจายโหลดและการสลับการทำงานเมื่อเกิดข้อผิดพลาด เพื่อจัดการโหลดที่เกิดขึ้นกับโหนดต่างๆ ในคลัสเตอร์
- เมื่อลูกค้าต้องการเปลี่ยนแปลงโครงสร้างข้อมูลหรือการดำเนินการเมตาเดตาใดๆ HMaster จะรับผิดชอบในการดำเนินการเหล่านั้น
เมธอดบางส่วนที่เปิดเผยโดยอินเทอร์เฟซ HMaster นั้นเป็นเมธอดที่เน้นเมตาเดตาเป็นหลัก:
- ตาราง (createTable, RemoveTable, เปิดใช้งาน, ปิดการใช้งาน)
- ColumnFamily (เพิ่มคอลัมน์ แก้ไขคอลัมน์)
- ภูมิภาค (ย้าย, กำหนด)
ไคลเอนต์สื่อสารแบบสองทิศทางกับทั้ง HMaster และ ZooKeeper สำหรับการอ่านและเขียนข้อมูล ไคลเอนต์จะติดต่อเซิร์ฟเวอร์ HRegion โดยตรง HMaster จะกำหนดภูมิภาคให้กับเซิร์ฟเวอร์ภูมิภาค และในทางกลับกัน จะตรวจสอบสถานะความสมบูรณ์ของเซิร์ฟเวอร์ภูมิภาคเหล่านั้น
ในโครงสร้างสถาปัตยกรรมทั้งหมด เรามีเซิร์ฟเวอร์ประจำภูมิภาคหลายตัว โดยมี HLog อยู่ในเซิร์ฟเวอร์ประจำภูมิภาคเหล่านั้น ซึ่งทำหน้าที่จัดเก็บไฟล์บันทึกทั้งหมด
เซิร์ฟเวอร์ภูมิภาค HBase
เมื่อ HBase Region Server ได้รับคำขอเขียนและอ่านจากไคลเอ็นต์ มันจะกำหนดคำขอเหล่านั้นให้กับภูมิภาคเฉพาะ ซึ่งเป็นที่ตั้งของกลุ่มคอลัมน์จริง ไคลเอ็นต์สามารถติดต่อเซิร์ฟเวอร์ HRegion ได้โดยตรง โดยไม่จำเป็นต้องมีสิทธิ์ HMaster ในการสื่อสารกับเซิร์ฟเวอร์ HRegion ไคลเอ็นต์ต้องการความช่วยเหลือจาก HMaster เฉพาะเมื่อต้องการดำเนินการที่เกี่ยวข้องกับการเปลี่ยนแปลงเมตาเดต้าและสคีมาเท่านั้น
HRegionServer คือการใช้งาน Region Server มีหน้าที่ให้บริการและจัดการ Region หรือข้อมูลที่อยู่ในคลัสเตอร์แบบกระจาย Region Server ทำงานบน Data Node ที่อยู่ในคลัสเตอร์ Hadoop
HMaster สามารถติดต่อกับเซิร์ฟเวอร์ HRegion หลายเครื่องและทำหน้าที่ดังต่อไปนี้:
- การโฮสต์และการจัดการภูมิภาค
- การแบ่งเขตโดยอัตโนมัติ
- การจัดการคำขออ่านและเขียน
- การสื่อสารกับลูกค้าโดยตรง
ภูมิภาค HBase
HRegions คือองค์ประกอบพื้นฐานของคลัสเตอร์ HBase ประกอบด้วยการกระจายของตารางและประกอบด้วยตระกูลคอลัมน์ หนึ่ง region ประกอบด้วย store หลายแห่ง โดยแต่ละแห่งสำหรับแต่ละตระกูลคอลัมน์ โดยหลักแล้วประกอบด้วยสองส่วน คือ MemStore และ HFile
ZooKeeper
เอชเบส ZooKeeper ZooKeeper เป็นเซิร์ฟเวอร์ตรวจสอบส่วนกลางที่เก็บรักษาข้อมูลการกำหนดค่าและให้การซิงโครไนซ์แบบกระจาย การซิงโครไนซ์แบบกระจายจะประสานงานแอปพลิเคชันแบบกระจายที่ทำงานอยู่ทั่วคลัสเตอร์ โดยให้บริการประสานงานระหว่างโหนดต่างๆ หากไคลเอ็นต์ต้องการสื่อสารกับภูมิภาคต่างๆ ไคลเอ็นต์จะต้องติดต่อ ZooKeeper ก่อน
เป็นโครงการโอเพนซอร์ส และให้บริการที่สำคัญมากมาย
บริการต่างๆ ที่ ZooKeeper ให้บริการ:
- รักษาข้อมูลการกำหนดค่า
- ให้การซิงโครไนซ์แบบกระจาย
- สร้างการสื่อสารระหว่างไคลเอ็นต์กับเซิร์ฟเวอร์ประจำภูมิภาค
- จัดเตรียมโหนดชั่วคราวที่แสดงถึงเซิร์ฟเวอร์ภูมิภาคต่างๆ
- อนุญาตให้เซิร์ฟเวอร์หลักใช้โหนดชั่วคราวเหล่านี้เพื่อค้นหาเซิร์ฟเวอร์ที่พร้อมใช้งานในคลัสเตอร์
- Tracเซิร์ฟเวอร์ ks ล้มเหลวและการแบ่งเครือข่าย
โหนดหลัก (Master) และโหนดรอง (Slave) ของ HBase (Region Server) จะลงทะเบียนตัวเองกับ ZooKeeper ไคลเอนต์จำเป็นต้องเข้าถึงการกำหนดค่า Quorum ของ ZooKeeper (ZK) เพื่อเชื่อมต่อกับโหนดหลักและโหนดรองเหล่านั้น
ในระหว่างที่เกิดความล้มเหลวของโหนดในคลัสเตอร์ HBase โควรัมของ ZooKeeper จะสร้างข้อความแสดงข้อผิดพลาดและเริ่มซ่อมแซมโหนดที่ล้มเหลว
เอชดีเอฟเอส
HDFS คือ Hadoop Distributed File Systemอย่างที่ชื่อบ่งบอก ระบบนี้เป็นสภาพแวดล้อมแบบกระจายสำหรับการจัดเก็บข้อมูล และเป็นระบบไฟล์ที่ออกแบบมาให้ทำงานบนฮาร์ดแวร์ทั่วไป โดยจะจัดเก็บไฟล์แต่ละไฟล์ไว้ในบล็อกหลายบล็อก และเพื่อรักษาความทนทานต่อความผิดพลาด บล็อกเหล่านั้นจะถูกทำสำเนาซ้ำทั่วทั้งคลัสเตอร์ Hadoop
HDFS มีความทนทานต่อความผิดพลาดสูงและสามารถทำงานบนฮาร์ดแวร์ราคาถูกได้ การเพิ่มโหนดลงในคลัสเตอร์และการประมวลผลและการจัดเก็บข้อมูลโดยใช้ฮาร์ดแวร์ราคาถูก จะช่วยให้ลูกค้าได้รับผลลัพธ์ที่ดีกว่าเมื่อเทียบกับการตั้งค่าเดิม
ในระบบนี้ ข้อมูลที่จัดเก็บในแต่ละบล็อกจะถูกทำสำเนาไปยังโหนด 3 โหนด ดังนั้นหากโหนดใดโหนดหนึ่งล่ม ข้อมูลก็จะไม่สูญหาย เนื่องจากมีกลไกการสำรองและกู้คืนข้อมูลที่เหมาะสม
HDFS เชื่อมต่อกับส่วนประกอบของ HBase และจัดเก็บข้อมูลจำนวนมากในลักษณะแบบกระจาย
แบบจำลองข้อมูล HBase
โมเดลข้อมูล HBase คือชุดของส่วนประกอบที่ประกอบด้วย ตาราง แถว กลุ่มคอลัมน์ เซลล์ คอลัมน์ และเวอร์ชัน ตาราง HBase ประกอบด้วยกลุ่มคอลัมน์และแถว โดยมีองค์ประกอบที่กำหนดเป็นคีย์หลัก คอลัมน์ในตารางโมเดลข้อมูล HBase แสดงถึงคุณลักษณะของวัตถุ
แบบจำลองข้อมูลของ HBase ประกอบด้วยองค์ประกอบต่อไปนี้:
- ชุดโต๊ะ
- แต่ละตารางมีตระกูลคอลัมน์และแถว
- แต่ละตารางจะต้องมีองค์ประกอบที่กำหนดให้เป็นคีย์หลัก
- คีย์แถวทำหน้าที่เสมือนคีย์หลักใน HBase
- การเข้าถึงตาราง HBase ใดๆ จะใช้คีย์หลักนี้
- แต่ละคอลัมน์ใน HBase แสดงถึงคุณลักษณะที่สอดคล้องกับวัตถุหนึ่งๆ
กรณีการใช้งาน HBase
ต่อไปนี้เป็นตัวอย่างการใช้งาน HBase พร้อมคำอธิบายโดยละเอียดเกี่ยวกับวิธีแก้ปัญหาที่ HBase มอบให้สำหรับปัญหาทางเทคนิคต่างๆ
| คำชี้แจงปัญหา | Solution |
| อุตสาหกรรมโทรคมนาคมเผชิญกับความท้าทายทางเทคนิคดังต่อไปนี้: การจัดเก็บบันทึกรายละเอียดการโทร (CDR) หลายพันล้านรายการที่สร้างขึ้นโดยระบบโทรคมนาคม; การให้การเข้าถึงบันทึก CDR และข้อมูลการเรียกเก็บเงินของลูกค้าแบบเรียลไทม์; และการจัดหาโซลูชันที่คุ้มค่าเมื่อเทียบกับระบบฐานข้อมูลแบบดั้งเดิม | HBase ใช้เพื่อจัดเก็บข้อมูลรายละเอียดการโทรจำนวนหลายพันล้านแถว หากเพิ่มข้อมูล 20TB ต่อเดือนลงในฐานข้อมูล RDBMS ที่มีอยู่ ประสิทธิภาพจะลดลง หากต้องการจัดการข้อมูลจำนวนมากในกรณีการใช้งานนี้ HBase ถือเป็นโซลูชันที่ดีที่สุด HBase ดำเนินการค้นหาและแสดงระเบียนได้รวดเร็ว |
| อุตสาหกรรมการธนาคารสร้างข้อมูลนับล้านรายการในแต่ละวัน นอกจากนี้ อุตสาหกรรมการธนาคารยังต้องการโซลูชันด้านการวิเคราะห์ที่สามารถตรวจจับการฉ้อโกงในการทำธุรกรรมทางการเงินได้ | เพื่อจัดเก็บ ประมวลผล และอัปเดตข้อมูลจำนวนมหาศาล รวมถึงทำการวิเคราะห์ข้อมูล โซลูชันที่เหมาะสมที่สุดคือ HBase ที่ผสานรวมกับส่วนประกอบต่างๆ ของระบบนิเวศ Hadoop |
นอกจากนั้นแล้ว HBase ยังสามารถใช้งานได้ดังนี้:
- เมื่อใดก็ตามที่มีความจำเป็นต้องใช้งานแอปพลิเคชันที่มีการเขียนข้อมูลจำนวนมาก
- เพื่อดำเนินการวิเคราะห์บันทึกข้อมูลออนไลน์และจัดทำรายงานการปฏิบัติตามข้อกำหนด
กลไกการจัดเก็บใน HBase
HBase เป็นฐานข้อมูลแบบคอลัมน์ และข้อมูลจะถูกจัดเก็บไว้ในตาราง โดยตารางจะเรียงลำดับตาม RowId ดังแสดงในภาพด้านล่าง HBase มี RowId ซึ่งเป็นชุดของกลุ่มคอลัมน์หลายกลุ่มที่มีอยู่ในตาราง
กลุ่มคอลัมน์ที่มีอยู่ในสคีมาเป็นคู่คีย์-ค่า หากเราพิจารณาในรายละเอียด แต่ละกลุ่มคอลัมน์จะมีหลายคอลัมน์ ค่าของคอลัมน์จะถูกจัดเก็บไว้ในหน่วยความจำดิสก์ แต่ละเซลล์ของตารางจะมีเมตาเดต้าของตัวเอง เช่น เวลาและข้อมูลอื่นๆ
โครงสร้างการจัดเก็บข้อมูลแบบคอลัมน์ โดยมีคีย์แถว กลุ่มคอลัมน์ และเซลล์ แสดงไว้ด้านล่าง
ต่อไปนี้คือคำศัพท์สำคัญที่ใช้อธิบายโครงสร้างตารางใน HBase:
- ตาราง: ชุดของแถวที่มีอยู่
- แถว: กลุ่มของตระกูลคอลัมน์
- กลุ่มคอลัมน์: ชุดของคอลัมน์
- คอลัมน์: ชุดของคู่คีย์-ค่า
- เนมสเปซ: กลุ่มตรรกะping ของโต๊ะ
- เซลล์: ทูเปิล {แถว, คอลัมน์, เวอร์ชัน} ที่ระบุรายละเอียดของเซลล์ใน HBase อย่างแม่นยำ
พื้นที่เก็บข้อมูลแบบเน้นคอลัมน์เทียบกับแบบแถว
ระบบจัดเก็บข้อมูลแบบคอลัมน์และแบบแถวแตกต่างกันในกลไกการจัดเก็บข้อมูล ดังที่เราทราบกันดีอยู่แล้วว่า โมเดลเชิงสัมพันธ์แบบดั้งเดิมจัดเก็บข้อมูลในรูปแบบแถว โดยแบ่งเป็นแถวของข้อมูล ในขณะที่ระบบจัดเก็บข้อมูลแบบคอลัมน์จะจัดเก็บตารางข้อมูลโดยแบ่งเป็นคอลัมน์และกลุ่มคอลัมน์
ตารางต่อไปนี้แสดงความแตกต่างที่สำคัญบางประการระหว่างที่เก็บข้อมูลทั้งสองประเภทนี้
| ฐานข้อมูลเชิงคอลัมน์ | ฐานข้อมูลเชิงแถว |
| ใช้ในสถานการณ์ที่เกี่ยวข้องกับการประมวลผลและการวิเคราะห์ เช่น การประมวลผลเชิงวิเคราะห์ออนไลน์ (Online Analytical Processing) และแอปพลิเคชันต่างๆ ที่เกี่ยวข้อง | การประมวลผลธุรกรรมออนไลน์ เช่น ในด้านการธนาคารและการเงิน ใช้แนวทางนี้ |
| โมเดลนี้สามารถจัดเก็บข้อมูลได้ในปริมาณมหาศาล ในระดับเพตาไบต์ | มันถูกออกแบบมาสำหรับแถวและคอลัมน์จำนวนไม่มาก |
อธิบายการอ่านและเขียนข้อมูล HBase
แผนภาพด้านล่างแสดงการดำเนินการอ่านและเขียนข้อมูลจากไคลเอ็นต์ไปยังไฟล์ HFile
ขั้นตอนที่ 1) ไคลเอนต์ต้องการเขียนข้อมูล และจะสื่อสารกับเซิร์ฟเวอร์ประจำภูมิภาคก่อน จากนั้นจึงสื่อสารกับภูมิภาคต่างๆ
ขั้นตอนที่ 2) ภูมิภาคจะติดต่อ MemStore เพื่อจัดเก็บข้อมูลที่เกี่ยวข้องกับกลุ่มคอลัมน์
ขั้นตอนที่ 3) ขั้นแรก ข้อมูลจะถูกจัดเก็บไว้ใน MemStore ซึ่งข้อมูลจะถูกจัดเรียง จากนั้นจึงถูกบันทึกไปยัง HFile เหตุผลหลักในการใช้ MemStore คือการจัดเก็บข้อมูลในระบบไฟล์แบบกระจายโดยใช้คีย์แถว MemStore จะถูกวางไว้ในหน่วยความจำหลักของ Region Server ในขณะที่ HFiles จะถูกเขียนลงใน HDFS
ขั้นตอนที่ 4) ลูกค้าต้องการอ่านข้อมูลจากภูมิภาคต่างๆ
ขั้นตอนที่ 5) ในทางกลับกัน ลูกค้าสามารถเข้าถึง MemStore ได้โดยตรงและสามารถขอข้อมูลได้
ขั้นตอนที่ 6) ไคลเอนต์เข้าถึง HFiles เพื่อขอรับข้อมูล ข้อมูลจะถูกดึงและเรียกโดยไคลเอนต์
MemStore ทำหน้าที่เก็บการแก้ไขข้อมูลในหน่วยความจำ ลำดับชั้นของอ็อบเจ็กต์ใน HBase regions จากบนลงล่าง แสดงอยู่ในตารางด้านล่าง
| ตาราง | ตาราง HBase ที่มีอยู่ในคลัสเตอร์ HBase |
| ภูมิภาค | HRegions สำหรับตารางที่นำเสนอ |
| เก็บที่อุณหภูมิ: | จัดเก็บคอลัมน์แฟกเตอร์หนึ่งรายการต่อแต่ละภูมิภาคสำหรับตาราง |
| เมมสโตร์ | MemStore สำหรับแต่ละที่เก็บข้อมูลในแต่ละภูมิภาคสำหรับตาราง จะทำการเรียงลำดับข้อมูลก่อนที่จะบันทึกไปยัง HFiles ซึ่งจะช่วยเพิ่มประสิทธิภาพในการเขียนและอ่านข้อมูลเนื่องจากการเรียงลำดับ |
| StoreFile | StoreFiles สำหรับแต่ละร้านค้าสำหรับแต่ละภูมิภาคสำหรับตาราง |
| ปิดกั้น | มีบล็อกอยู่ใน StoreFiles |
HBase กับ HDFS
HBase ทำงานอยู่บน HDFS และ Hadoop ความแตกต่างที่สำคัญระหว่าง HDFS และ HBase นั้นอยู่ที่การดำเนินการและการประมวลผลข้อมูล
| เอชเบส | เอชดีเอฟเอส |
| การดำเนินการที่มีความล่าช้าต่ำ | การทำงานที่มีความล่าช้าสูง |
| สุ่มอ่านและเขียน | เขียนครั้งเดียว อ่านหลายครั้ง |
| เข้าถึงได้ผ่านทาง คำสั่งเชลล์API ไคลเอ็นต์ใน JavaREST, Avro หรือ Thrift | โดยหลักแล้วสามารถเข้าถึงได้ผ่านทาง MapReduce (MRงาน ) |
| สามารถดำเนินการได้ทั้งการจัดเก็บและการประมวลผล | ใช้สำหรับพื้นที่จัดเก็บเท่านั้น |
แอปพลิเคชันด้านไอทีในอุตสาหกรรมบางประเภทใช้การทำงานของ HBase ร่วมกับ Hadoop ตัวอย่างเช่น ข้อมูลตลาดหลักทรัพย์และข้อมูลการทำธุรกรรมทางการเงินออนไลน์ ซึ่ง HBase เป็นโซลูชันที่เหมาะสมที่สุด เมื่อคลัสเตอร์ของคุณพร้อมแล้ว คุณสามารถ... อ่านและเขียนข้อมูลใน HBase or ติดตั้ง HBase บนโหนดใหม่



