Apache HBase เป็นฐานข้อมูลแบบโอเพนซอร์สแบบกระจายและไม่เกี่ยวข้องซึ่งจำลองแบบมาจาก Bigtable ของ Google และเขียนด้วย Java มีความสามารถคล้ายกับ Bigtable ที่ด้านบนของ Hadoop และ HDFS (Hadoop Distributed Filesystem) นั่นคือเป็นวิธีที่ทนต่อความผิดพลาดในการจัดเก็บข้อมูลกระจัดกระจายจำนวนมากซึ่งเป็นเรื่องปกติในกรณีการใช้ข้อมูลขนาดใหญ่จำนวนมาก HBase ใช้สำหรับการเข้าถึงข้อมูลขนาดใหญ่แบบอ่าน / เขียนแบบเรียลไทม์
ความแตกต่างระหว่างไม่แน่นอนและไม่เปลี่ยนรูป
สถาปัตยกรรม HBase Storage ประกอบด้วยส่วนประกอบมากมาย มาดูการทำงานของส่วนประกอบเหล่านี้และเรียนรู้วิธีเขียนข้อมูล
HFiles:
HFiles สร้างสถาปัตยกรรมระดับต่ำของ HBase HFiles เป็นไฟล์จัดเก็บที่สร้างขึ้นเพื่อจัดเก็บข้อมูลของ HBase อย่างรวดเร็วและมีประสิทธิภาพ
HMaster:
HMaster มีหน้าที่กำหนดภูมิภาคให้กับ HRegionServer แต่ละตัวเมื่อ HBase เริ่มทำงาน มีหน้าที่จัดการทุกอย่างที่เกี่ยวข้องกับแถวโต๊ะและกิจกรรมประสานงานของพวกเขา Hmaster ยังมีรายละเอียดของข้อมูลเมตา
ส่วนประกอบ ของ HBase:
HBase มีส่วนประกอบดังต่อไปนี้:
- ตาราง - ประกอบด้วยภูมิภาค
- ภูมิภาค - ช่วงของแถวที่จัดเก็บไว้ด้วยกัน
- เซิร์ฟเวอร์ภูมิภาค - ให้บริการหนึ่งภูมิภาคหรือมากกว่า
- เซิร์ฟเวอร์หลัก - Daemon มีหน้าที่จัดการคลัสเตอร์ HBase
HBase เก็บข้อมูลไว้ใน HDFS โดยตรงและอาศัยความพร้อมใช้งานสูงและความทนทานต่อความผิดพลาดของ HDFS เป็นอย่างมาก
สถาปัตยกรรมการจัดเก็บ HBase:
วิธีแคสสองครั้งเป็น int java
ขั้นตอนทั่วไปคือไคลเอ็นต์ติดต่อ Zookeeper ก่อนเพื่อค้นหาคีย์แถวที่เฉพาะเจาะจง ทำได้โดยการดึงชื่อเซิร์ฟเวอร์จาก Zookeeper ด้วยข้อมูลนี้ตอนนี้สามารถสอบถามเซิร์ฟเวอร์นั้นเพื่อรับเซิร์ฟเวอร์ที่มีการตรวจสอบ รายละเอียดทั้งสองนี้ถูกแคชและค้นหาเพียงครั้งเดียว สุดท้ายก็สามารถค้นหา metaserver และดึงข้อมูลเซิร์ฟเวอร์ที่มีแถวที่ไคลเอ็นต์กำลังมองหา
เมื่อทราบว่าแถวนั้นอยู่ในพื้นที่ใดระบบจะเก็บข้อมูลนี้ไว้ด้วยและติดต่อ HRegionServer โดยตรง ดังนั้นเมื่อเวลาผ่านไปลูกค้ามีข้อมูลที่สมบูรณ์ว่าจะรับแถวจากที่ใดโดยไม่จำเป็นต้องสอบถาม metaserver อีก เมื่อ HRegion เปิดขึ้นมันจะตั้งค่าอินสแตนซ์ Store สำหรับแต่ละ HColumnFamily สำหรับทุกตาราง ข้อมูลจะถูกเขียนขึ้นเมื่อลูกค้าส่งคำขอไปยัง HRegionServer ซึ่งให้รายละเอียดกับอินสแตนซ์ HRegion ที่ตรงกัน ขั้นตอนแรกคือเราต้องตัดสินใจว่าควรเขียนข้อมูลไปยัง 'Write-Ahead-Log' (WAL) ที่แสดงโดยคลาส HLog ก่อนหรือไม่ การตัดสินใจขึ้นอยู่กับแฟล็กที่กำหนดโดยลูกค้า
เมื่อข้อมูลถูกเขียนไปยัง WAL ข้อมูลนั้นจะถูกวางไว้ใน MemStore ในขณะเดียวกัน Memstore จะถูกตรวจสอบว่าเต็มหรือไม่และในกรณีนั้นจะมีการร้องขอให้ฟลัชลงดิสก์ จากนั้นข้อมูลจะถูกเขียนลงใน HFile
ความแตกต่างระหว่างไม่แน่นอนและไม่เปลี่ยนรูป
มีคำถามสำหรับเรา? พูดถึงพวกเขาในส่วนความคิดเห็นแล้วเราจะติดต่อกลับไป
กระทู้ที่เกี่ยวข้อง