สถาปัตยกรรม HBase: แบบจำลองข้อมูล HBase และกลไกการอ่าน / เขียน HBase



บล็อกนี้เกี่ยวกับ HBase Architecture อธิบายถึง HBase Data Model และให้ข้อมูลเชิงลึกเกี่ยวกับ HBase Architecture นอกจากนี้ยังอธิบายกลไกต่างๆใน HBase

สถาปัตยกรรม HBase

ในบล็อกก่อนหน้าของฉันเกี่ยวกับ การสอน HBase ฉันอธิบายว่า HBase คืออะไรและคุณสมบัติของมัน ฉันยังกล่าวถึงกรณีศึกษาของ Facebook Messenger เพื่อช่วยให้คุณเชื่อมต่อได้ดีขึ้น ตอนนี้ก้าวต่อไปใน ฉันจะอธิบายแบบจำลองข้อมูลของ HBase และ HBase Architectureก่อนที่คุณจะดำเนินการต่อคุณควรทราบด้วยว่า HBase เป็นแนวคิดสำคัญที่ประกอบขึ้นเป็นส่วนสำคัญของไฟล์ สำหรับการรับรอง Big Data Hadoop

หัวข้อสำคัญที่ฉันจะนำคุณไปสู่บล็อกสถาปัตยกรรม HBase นี้ ได้แก่ :





ให้เราเข้าใจโมเดลข้อมูลของ HBase ก่อน ช่วยให้ HBase อ่าน / เขียนและค้นหาได้เร็วขึ้น



สถาปัตยกรรม HBase: แบบจำลองข้อมูล HBase

อย่างที่เราทราบกันดีว่า HBase เป็นฐานข้อมูล NoSQL แบบคอลัมน์ แม้ว่าจะมีลักษณะคล้ายกับฐานข้อมูลเชิงสัมพันธ์ซึ่งมีแถวและคอลัมน์ แต่ก็ไม่ใช่ฐานข้อมูลเชิงสัมพันธ์ ฐานข้อมูลเชิงสัมพันธ์เป็นแบบแถวในขณะที่ HBase เป็นแบบคอลัมน์ ก่อนอื่นให้เราเข้าใจความแตกต่างระหว่างฐานข้อมูลเชิงคอลัมน์และฐานข้อมูลแบบแถว:

ฐานข้อมูลเชิงแถวเทียบกับฐานข้อมูลเชิงคอลัมน์:

  • ฐานข้อมูลเชิงแถวจัดเก็บเรกคอร์ดตารางตามลำดับแถว ในขณะที่ฐานข้อมูลเชิงคอลัมน์จัดเก็บเร็กคอร์ดตารางตามลำดับคอลัมน์นั่นคือรายการในคอลัมน์จะถูกเก็บไว้ในตำแหน่งที่อยู่ติดกันบนดิสก์

เพื่อให้เข้าใจได้ดีขึ้นให้เราใช้ตัวอย่างและพิจารณาตารางด้านล่าง



ตาราง - สถาปัตยกรรม HBase - Edureka

ถ้าตารางนี้ถูกเก็บไว้ในฐานข้อมูลเชิงแถว จะจัดเก็บบันทึกดังที่แสดงด้านล่าง:

หนึ่ง,พอลวอคเกอร์,เรา,231,กล้าหาญ,

2, วินดีเซล,บราซิล,520,มัสแตง

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

ในขณะที่ฐานข้อมูลเชิงคอลัมน์จัดเก็บข้อมูลนี้เป็น:

หนึ่ง,2, พอลวอคเกอร์,วินดีเซล, เรา,บราซิล, 231,520, กล้าหาญ,มัสแตง

ในฐานข้อมูลเชิงคอลัมน์ค่าของคอลัมน์ทั้งหมดจะถูกเก็บไว้ด้วยกันเช่นค่าของคอลัมน์แรกจะถูกเก็บไว้ด้วยกันจากนั้นค่าของคอลัมน์ที่สองจะถูกจัดเก็บไว้ด้วยกันและข้อมูลในคอลัมน์อื่น ๆ จะถูกจัดเก็บในลักษณะที่คล้ายกัน

  • เมื่อข้อมูลมีจำนวนมากเช่นในรูปเพตะไบต์หรือเอ็กซาไบต์เราใช้วิธีเชิงคอลัมน์เนื่องจากข้อมูลของคอลัมน์เดียวจะถูกจัดเก็บไว้ด้วยกันและสามารถเข้าถึงได้เร็วขึ้น
  • แม้ว่าวิธีการเชิงแถวจะค่อนข้างจัดการจำนวนแถวและคอลัมน์น้อยกว่าได้อย่างมีประสิทธิภาพเนื่องจากฐานข้อมูลเชิงแถวเก็บข้อมูลเป็นรูปแบบที่มีโครงสร้าง
  • เมื่อเราต้องการประมวลผลและวิเคราะห์ข้อมูลกึ่งโครงสร้างหรือไม่มีโครงสร้างชุดใหญ่เราใช้แนวทางเชิงคอลัมน์ เช่นแอพพลิเคชั่นที่เกี่ยวข้องกับ การประมวลผลวิเคราะห์ออนไลน์ เช่นการขุดข้อมูลคลังข้อมูลแอพพลิเคชั่นรวมถึงการวิเคราะห์ ฯลฯ
  • ในขณะที่ การประมวลผลธุรกรรมออนไลน์ เช่นโดเมนการธนาคารและการเงินที่จัดการข้อมูลที่มีโครงสร้างและต้องการคุณสมบัติการทำธุรกรรม (คุณสมบัติของกรด) ให้ใช้วิธีการเชิงแถว

ตาราง HBase มีส่วนประกอบต่อไปนี้ดังแสดงในภาพด้านล่าง:

  • ตาราง : ข้อมูลถูกจัดเก็บในรูปแบบตารางใน HBase แต่ตารางที่นี่อยู่ในรูปแบบเชิงคอลัมน์
  • แถว สำคัญ : ปุ่มแถวใช้เพื่อค้นหาบันทึกซึ่งทำให้การค้นหารวดเร็ว คุณจะอยากรู้ว่าเป็นอย่างไร? ฉันจะอธิบายในส่วนของสถาปัตยกรรมที่กำลังดำเนินอยู่ในบล็อกนี้
  • คอลัมน์ ครอบครัว : คอลัมน์ต่างๆจะรวมกันในตระกูลคอลัมน์ ตระกูลคอลัมน์เหล่านี้ถูกจัดเก็บไว้ด้วยกันซึ่งทำให้กระบวนการค้นหาเร็วขึ้นเนื่องจากข้อมูลที่อยู่ในตระกูลคอลัมน์เดียวกันสามารถเข้าถึงร่วมกันได้ในการค้นหาเดียว
  • คอลัมน์ รอบคัดเลือก : ชื่อคอลัมน์แต่ละคอลัมน์เรียกว่าตัวระบุคอลัมน์
  • เซลล์ : ข้อมูลถูกเก็บไว้ในเซลล์ ข้อมูลจะถูกถ่ายโอนไปยังเซลล์ซึ่งระบุโดยเฉพาะด้วย rowkey และ column qualifiers
  • การประทับเวลา : Timestamp คือการรวมกันของวันที่และเวลา เมื่อใดก็ตามที่ข้อมูลถูกจัดเก็บข้อมูลจะถูกจัดเก็บด้วยการประทับเวลา สิ่งนี้ทำให้ง่ายต่อการค้นหาข้อมูลเวอร์ชันหนึ่ง ๆ

ด้วยวิธีที่ง่ายและเข้าใจมากขึ้นเราสามารถพูดได้ว่า HBase ประกอบด้วย:

  • ชุดโต๊ะ
  • แต่ละตารางมีตระกูลคอลัมน์และแถว
  • คีย์แถวทำหน้าที่เป็นคีย์หลักใน HBase
  • การเข้าถึงตาราง HBase ใช้คีย์หลักนี้
  • คุณสมบัติแต่ละคอลัมน์ที่มีอยู่ใน HBase หมายถึงแอตทริบิวต์ที่สอดคล้องกับวัตถุที่อยู่ในเซลล์

ตอนนี้คุณรู้เกี่ยวกับ HBase Data Model แล้วให้เราดูว่าโมเดลข้อมูลนี้สอดคล้องกับ HBase Architecture อย่างไรและทำให้เหมาะสำหรับการจัดเก็บข้อมูลขนาดใหญ่และการประมวลผลที่เร็วขึ้น

สถาปัตยกรรม HBase: ส่วนประกอบของสถาปัตยกรรม HBase

HBase มีองค์ประกอบหลักสามประการ ได้แก่ HMaster เซิร์ฟเวอร์ , HBase Region Server ภูมิภาค และ Zookeeper .

รูปด้านล่างอธิบายลำดับชั้นของสถาปัตยกรรม HBase เราจะพูดถึงแต่ละคนเป็นรายบุคคล


ตอนนี้ก่อนที่จะไปที่ HMaster เราจะทำความเข้าใจกับภูมิภาคเนื่องจากเซิร์ฟเวอร์เหล่านี้ทั้งหมด (HMaster, เซิร์ฟเวอร์ภูมิภาค, Zookeeper) ถูกวางไว้เพื่อประสานงานและจัดการภูมิภาคและดำเนินการต่างๆภายในภูมิภาค คุณจึงอยากรู้ว่าภูมิภาคคืออะไรและทำไมจึงมีความสำคัญ?

สถาปัตยกรรม HBase: ภูมิภาค

พื้นที่ประกอบด้วยแถวทั้งหมดระหว่างปุ่มเริ่มต้นและปุ่มวางสายที่กำหนดให้กับภูมิภาคนั้น ตาราง HBase สามารถแบ่งออกเป็นหลายภูมิภาคเพื่อให้คอลัมน์ทั้งหมดของตระกูลคอลัมน์ถูกเก็บไว้ในภูมิภาคเดียว แต่ละภูมิภาคมีแถวเรียงตามลำดับ

หลายภูมิภาคได้รับมอบหมายให้เป็น เซิร์ฟเวอร์ภูมิภาค ซึ่งรับผิดชอบในการจัดการจัดการดำเนินการอ่านและเขียนการดำเนินการในชุดของภูมิภาคนั้น ๆ

ดังนั้นสรุปด้วยวิธีที่ง่ายกว่า:

  • ตารางสามารถแบ่งออกเป็นหลายภูมิภาค ภูมิภาคคือช่วงที่เรียงลำดับของแถวที่จัดเก็บข้อมูลระหว่างคีย์เริ่มต้นและคีย์สิ้นสุด
  • ภูมิภาคมีขนาดเริ่มต้น 256MB ซึ่งสามารถกำหนดค่าได้ตามความต้องการ
  • กลุ่มของภูมิภาคให้บริการแก่ลูกค้าโดยเซิร์ฟเวอร์ภูมิภาค
  • เซิร์ฟเวอร์ภูมิภาคสามารถให้บริการประมาณ 1,000 ภูมิภาคให้กับไคลเอนต์

ตอนนี้เริ่มจากด้านบนของลำดับชั้นก่อนอื่นฉันขออธิบายคุณเกี่ยวกับ HMaster Server ซึ่งทำหน้าที่คล้ายกับ NameNode ใน HDFS . จากนั้นเลื่อนลงมาตามลำดับชั้นฉันจะพาคุณผ่าน ZooKeeper และเซิร์ฟเวอร์ภูมิภาค

สถาปัตยกรรม HBase: HMaster

ดังภาพด้านล่างคุณจะเห็น HMaster จัดการกับคอลเลกชันของ Region Server ซึ่งอยู่บน DataNode ให้เราเข้าใจว่า HMaster ทำเช่นนั้นได้อย่างไร

  • HBase HMaster ดำเนินการ DDL (สร้างและลบตาราง) และกำหนดภูมิภาคให้กับเซิร์ฟเวอร์ภูมิภาคดังที่คุณเห็นในภาพด้านบน
  • ประสานงานและจัดการเซิร์ฟเวอร์ภูมิภาค (คล้ายกับ NameNode จัดการ DataNode ใน HDFS)
  • กำหนดขอบเขตให้กับเซิร์ฟเวอร์ภูมิภาคเมื่อเริ่มต้นและกำหนดภูมิภาคใหม่ให้กับเซิร์ฟเวอร์ภูมิภาคในระหว่างการกู้คืนและการทำโหลดบาลานซ์
  • ตรวจสอบอินสแตนซ์ของเซิร์ฟเวอร์ภูมิภาคทั้งหมดในคลัสเตอร์ (ด้วยความช่วยเหลือของ Zookeeper) และดำเนินกิจกรรมการกู้คืนเมื่อใดก็ตามที่เซิร์ฟเวอร์ภูมิภาคไม่ทำงาน
  • มีอินเทอร์เฟซสำหรับสร้างลบและอัปเดตตาราง

HBase มีสภาพแวดล้อมแบบกระจายและใหญ่ซึ่ง HMaster เพียงอย่างเดียวไม่เพียงพอที่จะจัดการทุกอย่าง คุณคงสงสัยว่าอะไรช่วย HMaster ในการจัดการสภาพแวดล้อมขนาดใหญ่นี้? นั่นคือจุดที่ ZooKeeper เข้ามาในภาพ หลังจากที่เราเข้าใจว่า HMaster จัดการสภาพแวดล้อม HBase อย่างไรเราจะเข้าใจว่า Zookeeper ช่วย HMaster ในการจัดการสิ่งแวดล้อมได้อย่างไร

สถาปัตยกรรม HBase: ZooKeeper - ผู้ประสานงาน

ภาพด้านล่างนี้อธิบายกลไกการประสานงานของ ZooKeeper

  • Zookeeper ทำหน้าที่เหมือนผู้ประสานงานในสภาพแวดล้อมแบบกระจาย HBase ช่วยในการรักษาสถานะเซิร์ฟเวอร์ภายในคลัสเตอร์โดยการสื่อสารผ่านเซสชัน
  • เซิร์ฟเวอร์ทุกภูมิภาคพร้อมกับเซิร์ฟเวอร์ HMaster จะส่งสัญญาณการเต้นของหัวใจอย่างต่อเนื่องในช่วงเวลาปกติไปยัง Zookeeper และตรวจสอบว่าเซิร์ฟเวอร์ใดยังมีชีวิตอยู่และพร้อมใช้งานตามที่กล่าวไว้ในภาพด้านบน นอกจากนี้ยังมีการแจ้งเตือนความล้มเหลวของเซิร์ฟเวอร์เพื่อให้สามารถดำเนินมาตรการกู้คืนได้
  • อ้างอิงจากภาพด้านบนที่คุณเห็นมีเซิร์ฟเวอร์ที่ไม่ได้ใช้งานซึ่งทำหน้าที่สำรองข้อมูลสำหรับเซิร์ฟเวอร์ที่ใช้งานอยู่ หากเซิร์ฟเวอร์ที่ใช้งานอยู่ล้มเหลวจะต้องมีการช่วยเหลือ
  • HMaster ที่ใช้งานอยู่จะส่งการเต้นของหัวใจไปยัง Zookeeper ในขณะที่ HMaster ที่ไม่ได้ใช้งานจะรับฟังการแจ้งเตือนที่ส่งโดย HMaster ที่ใช้งานอยู่ หาก HMaster ที่ใช้งานอยู่ล้มเหลวในการส่งการเต้นของหัวใจเซสชันจะถูกลบและ HMaster ที่ไม่ได้ใช้งานจะทำงาน
  • แม้ว่าเซิร์ฟเวอร์ภูมิภาคจะไม่สามารถส่ง heartbeat ได้เซสชันจะหมดอายุและผู้ฟังทั้งหมดจะได้รับแจ้งเกี่ยวกับเรื่องนี้ จากนั้น HMaster จะดำเนินการกู้คืนที่เหมาะสมซึ่งเราจะพูดถึงต่อไปในบล็อกนี้
  • Zookeeper ยังดูแลเส้นทางของ. META Server ซึ่งช่วยลูกค้าในการค้นหาภูมิภาคใด ๆ อันดับแรกไคลเอ็นต์ต้องตรวจสอบกับ. META Server ซึ่ง Region Server เป็นภูมิภาคหนึ่งและได้รับเส้นทางของ Region Server นั้น

อย่างที่ผมพูดถึง. META Server ผมขออธิบายก่อนว่า. META Server คืออะไร? คุณจึงสามารถเชื่อมโยงการทำงานของ ZooKeeper และ. META Server เข้าด้วยกันได้อย่างง่ายดาย ต่อมาเมื่อฉันจะอธิบายกลไกการค้นหา HBase ในบล็อกนี้ฉันจะอธิบายว่าทั้งสองทำงานร่วมกันอย่างไร

สถาปัตยกรรม HBase: ตาราง Meta

  • ตาราง META เป็นตารางแคตตาล็อก HBase พิเศษ จะเก็บรายชื่อเซิร์ฟเวอร์ภูมิภาคทั้งหมด ในระบบจัดเก็บข้อมูล HBase ดังที่คุณเห็นในภาพด้านบน
  • มองไปที่รูปที่คุณเห็น .META ไฟล์เก็บรักษาตารางในรูปแบบของคีย์และค่า คีย์แสดงถึงคีย์เริ่มต้นของภูมิภาคและ id ในขณะที่ค่ามีเส้นทางของเซิร์ฟเวอร์ภูมิภาค

ดังที่ฉันได้กล่าวไปแล้วเซิร์ฟเวอร์ภูมิภาคและหน้าที่ของมันในขณะที่ฉันอธิบายภูมิภาคให้คุณดังนั้นตอนนี้เรากำลังย้ายลำดับชั้นลงและฉันจะเน้นที่ส่วนประกอบของเซิร์ฟเวอร์ภูมิภาคและหน้าที่ของมัน ในภายหลังฉันจะพูดถึงกลไกของการค้นหาอ่านเขียนและทำความเข้าใจว่าส่วนประกอบเหล่านี้ทำงานร่วมกันอย่างไร

สถาปัตยกรรม HBase: ส่วนประกอบของเซิร์ฟเวอร์ภูมิภาค

ภาพด้านล่างนี้แสดงส่วนประกอบของเซิร์ฟเวอร์ภูมิภาค ตอนนี้ฉันจะพูดคุยแยกกัน

เซิร์ฟเวอร์ภูมิภาคดูแลพื้นที่ต่างๆที่ทำงานอยู่ด้านบนของ . ส่วนประกอบของเซิร์ฟเวอร์ภูมิภาค ได้แก่ :

  • วอล: ดังที่คุณสามารถสรุปได้จากภาพด้านบน Write Ahead Log (WAL) คือไฟล์ที่แนบมากับเซิร์ฟเวอร์ทุกภูมิภาคภายในสภาพแวดล้อมแบบกระจาย WAL จัดเก็บข้อมูลใหม่ที่ยังไม่ได้รับการยืนยันหรือผูกมัดกับพื้นที่จัดเก็บถาวร ใช้ในกรณีที่กู้คืนชุดข้อมูลไม่สำเร็จ
  • บล็อกแคช: จากภาพด้านบนจะเห็นได้ชัดเจนว่า Block Cache อยู่ในอันดับต้น ๆ ของ Region Server จะเก็บข้อมูลที่อ่านบ่อยไว้ในหน่วยความจำ หากข้อมูลใน BlockCache ถูกใช้น้อยที่สุดข้อมูลนั้นจะถูกลบออกจาก BlockCache
  • MemStore: มันคือแคชการเขียน จะเก็บข้อมูลที่เข้ามาทั้งหมดก่อนที่จะส่งไปยังดิสก์หรือหน่วยความจำถาวร มี MemStore หนึ่งรายการสำหรับแต่ละตระกูลคอลัมน์ในภูมิภาค ดังที่คุณเห็นในภาพมี MemStores หลายรายการสำหรับภูมิภาคเนื่องจากแต่ละภูมิภาคมีตระกูลคอลัมน์หลายคอลัมน์ ข้อมูลจะถูกจัดเรียงตามลำดับศัพท์ก่อนที่จะส่งไปยังดิสก์
  • HFile: จากรูปด้านบนคุณจะเห็น HFile ถูกเก็บไว้ใน HDFS ดังนั้นจึงจัดเก็บเซลล์จริงบนดิสก์ MemStore ส่งข้อมูลไปยัง HFile เมื่อขนาดของ MemStore เกิน

ตอนนี้เรารู้ส่วนประกอบหลักและส่วนประกอบย่อยของ HBase Architecture แล้วฉันจะอธิบายกลไกและความพยายามในการทำงานร่วมกันในเรื่องนี้ ไม่ว่าจะเป็นการอ่านหรือการเขียนอันดับแรกเราต้องค้นหาว่าจะอ่านหรือเขียนไฟล์จากที่ใด ดังนั้นเรามาทำความเข้าใจกับกระบวนการค้นหานี้เนื่องจากนี่เป็นหนึ่งในกลไกที่ทำให้ HBase เป็นที่นิยมอย่างมาก

สถาปัตยกรรม HBase: การค้นหาเริ่มต้นใน HBase อย่างไร

ดังที่คุณทราบ Zookeeper จัดเก็บตำแหน่งโต๊ะ META เมื่อใดก็ตามที่ไคลเอ็นต์เข้าใกล้ด้วยการอ่านหรือเขียนคำร้องขอไปยัง HBase การดำเนินการต่อไปนี้จะเกิดขึ้น:

  1. ไคลเอนต์ดึงตำแหน่งของตาราง META จาก ZooKeeper
  2. จากนั้นไคลเอนต์จะร้องขอตำแหน่งของเซิร์ฟเวอร์ภูมิภาคของคีย์แถวที่เกี่ยวข้องจากตารางเมตาเพื่อเข้าถึง ไคลเอนต์เก็บข้อมูลนี้ด้วยตำแหน่งของตารางเมตา
  3. จากนั้นจะได้รับตำแหน่งแถวโดยการร้องขอจากเซิร์ฟเวอร์ภูมิภาคที่เกี่ยวข้อง

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

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

สถาปัตยกรรม HBase: HBase เขียน กลไก

ภาพด้านล่างนี้อธิบายกลไกการเขียนใน HBase

กลไกการเขียนต้องผ่านกระบวนการต่อไปนี้ตามลำดับ (ดูภาพด้านบน):

ขั้นตอนที่ 1: เมื่อใดก็ตามที่ไคลเอนต์มีคำร้องขอการเขียนไคลเอนต์จะเขียนข้อมูลไปยัง WAL (Write Ahead Log)

  • จากนั้นการแก้ไขจะถูกต่อท้ายไฟล์ WAL
  • ไฟล์ WAL นี้ได้รับการดูแลในทุกเซิร์ฟเวอร์ภูมิภาคและเซิร์ฟเวอร์ภูมิภาคใช้เพื่อกู้คืนข้อมูลที่ไม่ได้ผูกมัดกับดิสก์

ขั้นตอนที่ 2: เมื่อข้อมูลถูกเขียนไปยัง WAL แล้วข้อมูลนั้นจะถูกคัดลอกไปยัง MemStore

ขั้นตอนที่ 3: เมื่อวางข้อมูลใน MemStore แล้วลูกค้าจะได้รับการตอบรับ

ขั้นตอนที่ 4: เมื่อ MemStore ถึงขีด จำกัด จะทิ้งหรือส่งข้อมูลลงใน HFile

ตอนนี้ให้เราดำน้ำลึกและทำความเข้าใจว่า MemStore มีส่วนช่วยในกระบวนการเขียนอย่างไรและมีหน้าที่อะไรบ้าง?

ความแตกต่างระหว่างวิธีการโอเวอร์โหลดและการแทนที่เมธอด

HBase เขียน กลไก- MemStore

  • MemStore จะอัปเดตข้อมูลที่เก็บไว้ในนั้นเสมอตามลำดับศัพท์ (ตามลำดับในลักษณะพจนานุกรม) เป็น KeyValues ​​ที่เรียงลำดับ มี MemStore หนึ่งรายการสำหรับแต่ละตระกูลคอลัมน์ดังนั้นการอัปเดตจะถูกจัดเก็บในลักษณะที่เรียงลำดับสำหรับแต่ละคอลัมน์
  • เมื่อ MemStore ถึงขีด จำกัด มันจะทิ้งข้อมูลทั้งหมดลงใน HFile ใหม่ในลักษณะที่เรียงลำดับ HFile นี้ถูกเก็บไว้ใน HDFS HBase มี HFiles หลายไฟล์สำหรับแต่ละตระกูลคอลัมน์
  • เมื่อเวลาผ่านไปจำนวน HFile จะเพิ่มขึ้นเมื่อ MemStore ทิ้งข้อมูล
  • MemStore ยังบันทึกหมายเลขลำดับที่เขียนล่าสุดดังนั้น Master Server และ MemStore ทั้งคู่จึงรู้ดีว่าสิ่งที่มุ่งมั่นจนถึงตอนนี้และจะเริ่มจากจุดใด เมื่อภูมิภาคเริ่มต้นขึ้นหมายเลขลำดับสุดท้ายจะถูกอ่านและจากจำนวนนั้นการแก้ไขใหม่จะเริ่มขึ้น

ดังที่ฉันได้พูดคุยกันหลายครั้ง HFile นั้นเป็นหน่วยเก็บข้อมูลถาวรหลักในสถาปัตยกรรม HBase ในที่สุดข้อมูลทั้งหมดจะถูกส่งไปยัง HFile ซึ่งเป็นที่จัดเก็บถาวรของ HBase ดังนั้นให้เราดูคุณสมบัติของ HFile ซึ่งทำให้การค้นหาเร็วขึ้นในขณะที่อ่านและเขียน

สถาปัตยกรรม HBase: HBase เขียน กลไก- HFile

  • การเขียนจะถูกวางตามลำดับบนดิสก์ ดังนั้นการเคลื่อนไหวของหัวอ่าน - เขียนของดิสก์จึงน้อยลงมาก ทำให้กลไกการเขียนและการค้นหารวดเร็วมาก
  • ดัชนี HFile ถูกโหลดในหน่วยความจำทุกครั้งที่เปิด HFile สิ่งนี้ช่วยในการค้นหาบันทึกในการค้นหาครั้งเดียว
  • ตัวอย่างเป็นตัวชี้ที่ชี้ไปที่เมตาบล็อกของ HFile ถูกเขียนไว้ที่ส่วนท้ายของไฟล์คอมมิต ประกอบด้วยข้อมูลเกี่ยวกับการประทับเวลาและตัวกรองบาน
  • Bloom Filter ช่วยในการค้นหาคู่ค่าคีย์โดยข้ามไฟล์ที่ไม่มีคีย์แถวที่ต้องการ การประทับเวลายังช่วยในการค้นหาเวอร์ชันของไฟล์ซึ่งจะช่วยในการข้ามข้อมูล

หลังจากทราบกลไกการเขียนและบทบาทของส่วนประกอบต่างๆในการเขียนและค้นหาได้เร็วขึ้น ฉันจะอธิบายให้คุณฟังว่ากลไกการอ่านทำงานอย่างไรภายในสถาปัตยกรรม HBase? จากนั้นเราจะย้ายไปยังกลไกที่เพิ่มประสิทธิภาพของ HBase เช่นการบดอัดการแยกภูมิภาคและการกู้คืน

สถาปัตยกรรม HBase: อ่านกลไก

ตามที่กล่าวไว้ในกลไกการค้นหาของเราอันดับแรกไคลเอนต์จะดึงตำแหน่งของเซิร์ฟเวอร์ภูมิภาคจากเซิร์ฟเวอร์. META หากไคลเอนต์ไม่มีในหน่วยความจำแคช จากนั้นจะทำตามขั้นตอนตามลำดับดังนี้:

  • สำหรับการอ่านข้อมูลเครื่องสแกนจะมองหาเซลล์ Row ใน Block cache ก่อน คู่ค่าคีย์ที่อ่านล่าสุดทั้งหมดจะถูกเก็บไว้ที่นี่
  • หาก Scanner ไม่พบผลลัพธ์ที่ต้องการเครื่องจะย้ายไปที่ MemStore ตามที่เราทราบว่านี่คือหน่วยความจำแคชสำหรับการเขียน ที่นั่นค้นหาไฟล์ที่เขียนล่าสุดซึ่งยังไม่ถูกทิ้งใน HFile
  • ในที่สุดจะใช้ตัวกรองบลูมและบล็อกแคชเพื่อโหลดข้อมูลจาก HFile

จนถึงตอนนี้ฉันได้พูดถึงกลไกการค้นหาอ่านและเขียนของ HBase ตอนนี้เราจะดูกลไก HBase ซึ่งทำให้การค้นหาอ่านและเขียนอย่างรวดเร็วใน HBase ก่อนอื่นเราจะเข้าใจ การบดอัด ซึ่งเป็นหนึ่งในกลไกเหล่านั้น

สถาปัตยกรรม HBase: การบดอัด

HBase รวม HFiles เพื่อลดพื้นที่จัดเก็บและลดจำนวนการค้นหาดิสก์ที่จำเป็นสำหรับการอ่าน กระบวนการนี้เรียกว่า การบดอัด . การบดอัดเลือก HFiles บางส่วนจากภูมิภาคและรวมเข้าด้วยกัน การบดอัดมีสองประเภทดังที่คุณเห็นในภาพด้านบน

  1. การบดอัดเล็กน้อย : HBase เลือก HFiles ที่เล็กกว่าโดยอัตโนมัติและแนะนำให้เป็น HFiles ที่ใหญ่กว่าดังที่แสดงในภาพด้านบน สิ่งนี้เรียกว่าการบดอัดเล็กน้อย ดำเนินการเรียงลำดับการรวมสำหรับการส่ง HFiles ขนาดเล็กไปยัง HFiles ที่ใหญ่กว่า สิ่งนี้ช่วยในการเพิ่มประสิทธิภาพพื้นที่จัดเก็บ
  2. การบดอัดหลัก: ดังที่แสดงในภาพด้านบนในการบดอัดหลัก HBase จะรวมและรวม HFiles ที่เล็กกว่าของภูมิภาคเข้ากับ HFile ใหม่ ในกระบวนการนี้กลุ่มคอลัมน์เดียวกันจะถูกวางไว้ด้วยกันใน HFile ใหม่ มันจะลบเซลล์ที่ถูกลบและหมดอายุในกระบวนการนี้ เพิ่มประสิทธิภาพการอ่าน

แต่ในระหว่างขั้นตอนนี้ดิสก์อินพุตเอาต์พุตและการรับส่งข้อมูลเครือข่ายอาจคับคั่ง นี้เรียกว่า เขียนขยาย . ดังนั้นโดยทั่วไปจะกำหนดไว้ในช่วงเวลาโหลดสูงสุดต่ำ

ตอนนี้กระบวนการเพิ่มประสิทธิภาพอีกอย่างหนึ่งที่ฉันจะพูดถึงคือ การแบ่งภูมิภาค . สิ่งนี้สำคัญมากสำหรับการจัดสรรภาระงาน

สถาปัตยกรรม HBase: การแบ่งภูมิภาค

รูปด้านล่างแสดงกลไกการแบ่งภูมิภาค

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

การย้ายไปตามบรรทัดสุดท้าย แต่ไม่ท้ายสุดฉันจะอธิบายให้คุณทราบว่า HBase กู้คืนข้อมูลได้อย่างไรหลังจากเกิดความล้มเหลว อย่างที่เราทราบกันดีว่า การกู้คืนความล้มเหลว เป็นคุณสมบัติที่สำคัญมากของ HBase ดังนั้นโปรดแจ้งให้เราทราบว่า HBase กู้คืนข้อมูลอย่างไรหลังจากเกิดความล้มเหลว

สถาปัตยกรรม HBase: HBase Crash และ Data Recovery

  • เมื่อใดก็ตามที่เซิร์ฟเวอร์ภูมิภาคล้มเหลว ZooKeeper จะแจ้งไปยัง HMaster เกี่ยวกับความล้มเหลว
  • จากนั้น HMaster จะแจกจ่ายและจัดสรรพื้นที่ของเซิร์ฟเวอร์ภูมิภาคที่ล้มเหลวให้กับเซิร์ฟเวอร์ภูมิภาคที่ใช้งานอยู่จำนวนมาก ในการกู้คืนข้อมูล MemStore ของเซิร์ฟเวอร์ภูมิภาคที่ล้มเหลว HMaster จะกระจาย WAL ไปยังเซิร์ฟเวอร์ภูมิภาคทั้งหมด
  • เซิร์ฟเวอร์แต่ละภูมิภาคเรียกใช้งาน WAL อีกครั้งเพื่อสร้าง MemStore สำหรับตระกูลคอลัมน์ของภูมิภาคที่ล้มเหลว
  • ข้อมูลจะเขียนตามลำดับเวลา (ตามลำดับเวลา) ใน WAL ดังนั้นการเรียกใช้งาน WAL อีกครั้งหมายถึงการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้นและจัดเก็บไว้ในไฟล์ MemStore
  • ดังนั้นหลังจากเซิร์ฟเวอร์ภูมิภาคทั้งหมดเรียกใช้ WAL ข้อมูล MemStore สำหรับตระกูลคอลัมน์ทั้งหมดจะถูกกู้คืน

ฉันหวังว่าบล็อกนี้จะช่วยคุณในการอธิบาย HBase Data Model & HBase Architecture หวังว่าคุณจะสนุกกับมัน ตอนนี้คุณสามารถเชื่อมโยงกับคุณสมบัติของ HBase (ซึ่งฉันได้อธิบายไว้ในไฟล์ การสอน HBase บล็อก) ด้วย HBase Architecture และทำความเข้าใจวิธีการทำงานภายใน ตอนนี้คุณรู้ส่วนทฤษฎีของ HBase แล้วคุณควรย้ายไปที่ส่วนปฏิบัติ โปรดจำไว้ว่าบล็อกถัดไปของเราที่ จะอธิบายตัวอย่าง HBase POC .

ตอนนี้คุณเข้าใจสถาปัตยกรรม HBase แล้วลองดูไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ซึ่งมีเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก หลักสูตรการฝึกอบรม Edureka Big Data Hadoop Certification ช่วยให้ผู้เรียนมีความเชี่ยวชาญใน HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume และ Sqoop โดยใช้กรณีการใช้งานแบบเรียลไทม์ในโดเมนการค้าปลีกโซเชียลมีเดียการบินการท่องเที่ยวการเงิน

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นแล้วเราจะติดต่อกลับไป