สถาปัตยกรรม HBase
ในบล็อกก่อนหน้าของฉันเกี่ยวกับ การสอน HBase ฉันอธิบายว่า HBase คืออะไรและคุณสมบัติของมัน ฉันยังกล่าวถึงกรณีศึกษาของ Facebook Messenger เพื่อช่วยให้คุณเชื่อมต่อได้ดีขึ้น ตอนนี้ก้าวต่อไปใน ฉันจะอธิบายแบบจำลองข้อมูลของ HBase และ HBase Architectureก่อนที่คุณจะดำเนินการต่อคุณควรทราบด้วยว่า HBase เป็นแนวคิดสำคัญที่ประกอบขึ้นเป็นส่วนสำคัญของไฟล์ สำหรับการรับรอง Big Data Hadoop
หัวข้อสำคัญที่ฉันจะนำคุณไปสู่บล็อกสถาปัตยกรรม HBase นี้ ได้แก่ :
- แบบจำลองข้อมูล HBase
- HBase Architecture และส่วนประกอบ
- กลไกการเขียน HBase
- HBase อ่านกลไก
- กลไกการเพิ่มประสิทธิภาพ HBase
ให้เราเข้าใจโมเดลข้อมูลของ HBase ก่อน ช่วยให้ HBase อ่าน / เขียนและค้นหาได้เร็วขึ้น
สถาปัตยกรรม HBase: แบบจำลองข้อมูล HBase
อย่างที่เราทราบกันดีว่า HBase เป็นฐานข้อมูล NoSQL แบบคอลัมน์ แม้ว่าจะมีลักษณะคล้ายกับฐานข้อมูลเชิงสัมพันธ์ซึ่งมีแถวและคอลัมน์ แต่ก็ไม่ใช่ฐานข้อมูลเชิงสัมพันธ์ ฐานข้อมูลเชิงสัมพันธ์เป็นแบบแถวในขณะที่ HBase เป็นแบบคอลัมน์ ก่อนอื่นให้เราเข้าใจความแตกต่างระหว่างฐานข้อมูลเชิงคอลัมน์และฐานข้อมูลแบบแถว:
ฐานข้อมูลเชิงแถวเทียบกับฐานข้อมูลเชิงคอลัมน์:
- ฐานข้อมูลเชิงแถวจัดเก็บเรกคอร์ดตารางตามลำดับแถว ในขณะที่ฐานข้อมูลเชิงคอลัมน์จัดเก็บเร็กคอร์ดตารางตามลำดับคอลัมน์นั่นคือรายการในคอลัมน์จะถูกเก็บไว้ในตำแหน่งที่อยู่ติดกันบนดิสก์
เพื่อให้เข้าใจได้ดีขึ้นให้เราใช้ตัวอย่างและพิจารณาตารางด้านล่าง
ถ้าตารางนี้ถูกเก็บไว้ในฐานข้อมูลเชิงแถว จะจัดเก็บบันทึกดังที่แสดงด้านล่าง:
หนึ่ง,พอลวอคเกอร์,เรา,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 การดำเนินการต่อไปนี้จะเกิดขึ้น:
- ไคลเอนต์ดึงตำแหน่งของตาราง META จาก ZooKeeper
- จากนั้นไคลเอนต์จะร้องขอตำแหน่งของเซิร์ฟเวอร์ภูมิภาคของคีย์แถวที่เกี่ยวข้องจากตารางเมตาเพื่อเข้าถึง ไคลเอนต์เก็บข้อมูลนี้ด้วยตำแหน่งของตารางเมตา
- จากนั้นจะได้รับตำแหน่งแถวโดยการร้องขอจากเซิร์ฟเวอร์ภูมิภาคที่เกี่ยวข้อง
สำหรับการอ้างอิงในอนาคตไคลเอ็นต์จะใช้แคชเพื่อดึงข้อมูลตำแหน่งของตาราง 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 บางส่วนจากภูมิภาคและรวมเข้าด้วยกัน การบดอัดมีสองประเภทดังที่คุณเห็นในภาพด้านบน
- การบดอัดเล็กน้อย : HBase เลือก HFiles ที่เล็กกว่าโดยอัตโนมัติและแนะนำให้เป็น HFiles ที่ใหญ่กว่าดังที่แสดงในภาพด้านบน สิ่งนี้เรียกว่าการบดอัดเล็กน้อย ดำเนินการเรียงลำดับการรวมสำหรับการส่ง HFiles ขนาดเล็กไปยัง HFiles ที่ใหญ่กว่า สิ่งนี้ช่วยในการเพิ่มประสิทธิภาพพื้นที่จัดเก็บ
- การบดอัดหลัก: ดังที่แสดงในภาพด้านบนในการบดอัดหลัก 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 โดยใช้กรณีการใช้งานแบบเรียลไทม์ในโดเมนการค้าปลีกโซเชียลมีเดียการบินการท่องเที่ยวการเงิน
มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นแล้วเราจะติดต่อกลับไป