สถาปัตยกรรมและคำสั่ง Apache Hive: โหมด ลักษณะเฉพาะ และแอปพลิเคชัน
เผยแพร่แล้ว: 2021-06-30สารบัญ
ไฮฟ์คืออะไร?
กลุ่ม Apache เป็นเครื่องมือเก็บข้อมูลโอเพนซอร์สที่พัฒนาโดย Facebook สำหรับการประมวลผลแบบกระจายและการวิเคราะห์ข้อมูล ได้รับการพัฒนาบน Hadoop Distributed File System (HDFS) กลไกสำหรับการฉายโครงสร้างบนข้อมูลใน Hadoop นั้นจัดทำโดย Hive ภาษาคล้าย SQL ที่เรียกว่า HiveQL (HQL) ใช้เพื่อสืบค้นข้อมูลนั้น มีความคล้ายคลึงกันระหว่างตารางใน Hive และตารางในฐานข้อมูลเชิงสัมพันธ์ ใครก็ตามที่คุ้นเคยกับ SQL สามารถเขียนคำสั่ง Hive ได้อย่างง่ายดาย
คุณสมบัติบางประการของ Hive คือ:
- การจัดเก็บข้อมูลสคีมาลงในฐานข้อมูลและข้อมูลที่ประมวลผลลงใน HDFS
- ออกแบบมาสำหรับ OLAP
- ภาษาที่ใช้ค้นหาคือ HiveQL หรือ HQL ซึ่งคล้ายกับ SQL
- รวดเร็ว คุ้นเคย ปรับขนาดได้ และขยายได้
การใช้ไฮฟ์
- เป็นที่เก็บข้อมูลแบบกระจาย Apache Hive
- มีเครื่องมือที่ช่วยให้ผู้ใช้สามารถดึง แปลง และโหลดข้อมูลได้อย่างง่ายดาย
- มีรูปแบบข้อมูลที่หลากหลายสำหรับการจัดโครงสร้าง
- ไฟล์ที่จัดเก็บไว้ใน Hadoop Distributed File System (HDFS) สามารถเข้าถึงได้โดย Hive
คำสั่งของไฮฟ์
คำ สั่งรัง คือ:
- Data Definition Language (DDL): ตารางและอ็อบเจ็กต์อื่นๆ ในฐานข้อมูลถูกสร้างและแก้ไขโดยใช้คำสั่งเหล่านี้
- CREATE: ใช้เพื่อสร้างตารางหรือฐานข้อมูล
- SHOW: ใช้เพื่อแสดงฐานข้อมูล ตาราง คุณสมบัติ ฯลฯ
- ALTER: ใช้เพื่อเปลี่ยนแปลงตารางที่มีอยู่
- DESCRIBE: มันอธิบายคอลัมน์ของตาราง
- TRUNCATE: ใช้เพื่อตัดและลบแถวของตารางอย่างถาวร
- DELETE: ลบข้อมูลตาราง แต่สามารถกู้คืนได้
- ภาษาการจัดการข้อมูล (DML): ใช้เพื่อดึง จัดเก็บ แก้ไข ลบ แทรก และอัปเดตข้อมูลในฐานข้อมูล
- ไวยากรณ์สำหรับ LOAD, INSERT Statements
โหลดข้อมูล <LOCAL> inpath <file path> ลงในตาราง [ชื่อตาราง]
- หลังจากโหลดข้อมูลแล้ว คำสั่งการจัดการข้อมูลจะถูกใช้เพื่อดึงข้อมูล
- ฟังก์ชันการรวมการนับใช้เพื่อนับจำนวนระเบียนทั้งหมดในตาราง
- คีย์เวิร์ด "สร้างภายนอก" ใช้เพื่อสร้างตารางและระบุตำแหน่งที่จะสร้างตาราง ตาราง EXTERNAL ชี้ไปที่ตำแหน่ง HDFS ใด ๆ สำหรับการจัดเก็บ
- คำสั่งแทรกใช้เพื่อโหลดตารางไฮฟ์ข้อมูล "insert overwrite" ใช้เพื่อเขียนทับข้อมูลที่มีอยู่ และ "insert into" ใช้เพื่อผนวกข้อมูลลงในข้อมูลที่มีอยู่
- ตารางแบ่งออกเป็นพาร์ติชั่นโดยใช้คำสั่ง "แบ่งพาร์ติชั่นโดย" และแบ่งเป็นบัคเก็ตตามคำสั่ง "จัดกลุ่มโดย"
- การแทรกข้อมูลทำให้เกิดข้อผิดพลาดเนื่องจากไม่ได้เปิดใช้งานพาร์ติชันแบบไดนามิก ดังนั้น พารามิเตอร์ต่อไปนี้จะต้องถูกตั้งค่าใน Hive shell
ตั้งค่า hive.exec.dynamic.partition=true;
ในการเปิดใช้งานไดนามิกพาร์ติชั่น จะเป็น false . โดยค่าเริ่มต้น
ตั้งค่า hive.exec.dynamic.partition.mode=nonstrict;
- คำสั่ง 'วางตาราง' ลบข้อมูลและข้อมูลเมตาของตาราง
- การรวม: ไวยากรณ์:
เลือกจำนวน (หมวด DISTINCT) จากชื่อตาราง
คำสั่งจะนับหมวดหมู่ต่างๆ ของตาราง 'cate'
- การจัดกลุ่ม: ไวยากรณ์:
เลือกหมวดหมู่ ผลรวม (จำนวน) จากกลุ่มระเบียน txt ตามหมวดหมู่
ชุดผลลัพธ์จะถูกจัดกลุ่มเป็นหนึ่งคอลัมน์ขึ้นไป
- เข้าร่วมการดำเนินการ: ดำเนินการเพื่อรวมเขตข้อมูลจากสองตารางโดยใช้ค่าร่วมกันในแต่ละคอลัมน์
- การรวมภายนอกด้านซ้าย: สำหรับตาราง A และ B การรวมภายนอกด้านซ้ายจะมีระเบียนทั้งหมดของตาราง "ซ้าย" (A) แม้ว่าเงื่อนไขการรวมจะไม่พบระเบียนที่ตรงกันในตาราง "ขวา" (B)
- การรวมภายนอกด้านขวา: ทุกแถวจากตาราง "ขวา" (B) จะปรากฏในตารางที่เข้าร่วมอย่างน้อยหนึ่งครั้ง
- เข้าร่วมแบบเต็ม: ตารางที่เข้าร่วมจะมีระเบียนทั้งหมดจากทั้งสองตาราง ตารางที่เข้าร่วมจะมีระเบียนทั้งหมดจากทั้งสองตาราง
สถาปัตยกรรมไฮฟ์
สถาปัตยกรรม กลุ่ม Apache แสดงใน รูปที่ 1
รายการส่วนประกอบหลัก
องค์ประกอบหลักของ สถาปัตยกรรมรัง คือ:
1. ลูกค้าไฮฟ์
แอปพลิเคชันต่างๆ ที่เขียนด้วยภาษาต่างๆ เช่น Java, Python, C++ เป็นต้น จะได้รับการสื่อสารผ่านการใช้ไดรเวอร์ต่างๆ ที่ Hive จัดเตรียมให้ สามารถเขียนในภาษาใดก็ได้ตามต้องการ ลูกค้าและเซิร์ฟเวอร์จะสื่อสารกับเซิร์ฟเวอร์ Hive ในบริการ Hive
ส่วนใหญ่แบ่งออกเป็นสามประเภท:
- Thrift Client: อิงตาม Apache Thrift ในการให้บริการคำขอจากไคลเอ็นต์ Thrift ไคลเอ็นต์ Thrift จะใช้สำหรับการสื่อสารสำหรับแอปพลิเคชันที่ใช้ Thrift
- ไคลเอ็นต์ JDBC: JDBC มีให้สำหรับแอปพลิเคชันที่เกี่ยวข้องกับ Java แอปพลิเคชัน Java เชื่อมต่อกับ Hive โดยใช้ไดรเวอร์ JDBC นอกจากนี้ยังใช้ Thrift เพื่อสื่อสารกับเซิร์ฟเวอร์ Hive
- ไคลเอ็นต์ ODBC: แอปพลิเคชันที่ใช้โปรโตคอล ODBC ได้รับอนุญาตให้เชื่อมต่อกับไฮฟ์ผ่านไดรเวอร์ ODBC เช่นเดียวกับ JDBC ใช้ Thrift เพื่อสื่อสารกับเซิร์ฟเวอร์ Hive
2. บริการไฮฟ์
บริการของ Hive จัดให้มีวิธีการโต้ตอบของ Hive กับลูกค้า การดำเนินการใด ๆ ที่เกี่ยวข้องกับการสอบถามที่ลูกค้าต้องดำเนินการจะต้องได้รับการสื่อสารผ่านบริการเช่า สำหรับการดำเนินการ Data Definition Language (DDL) CLI จะทำหน้าที่เป็นบริการ Hive
ไดรเวอร์ทั้งหมดต้องสื่อสารกับเซิร์ฟเวอร์ Hive จากนั้นไปยังไดรเวอร์หลักในบริการ Hive ไดรเวอร์ในบริการ Hive เป็นตัวแทนของไดรเวอร์หลักที่สื่อสารกับแอปพลิเคชันเฉพาะไคลเอ็นต์และ JDBC, ODBC ทุกประเภท ฯลฯ คำขอจากแอปพลิเคชันต่างๆ จะถูกประมวลผลโดยไดรเวอร์ไปยัง metastore และระบบภาคสนามซึ่งจะได้รับการประมวลผลเพิ่มเติม
บริการที่นำเสนอโดย Hive คือ:
- Beeline: Beeline เป็นเชลล์คำสั่งที่ผู้ใช้สามารถส่งคำถามไปยังระบบได้ รองรับโดย HiveServer2 เป็นไคลเอนต์ JDBC ที่ใช้ SQLLINE CLI
- Hive Server 2: ลูกค้าได้รับอนุญาตให้ดำเนินการค้นหากับกลุ่ม ผู้สืบทอดของ HiveServer1 ช่วยให้สามารถดำเนินการค้นหาหลายรายการจากไคลเอนต์หลายตัว มันให้การสนับสนุนที่ดีที่สุดสำหรับไคลเอนต์ API แบบเปิดเช่น JDBC และ ODBC
- ไดรเวอร์ Hive: ผู้ใช้ส่งคำสั่ง HiveQL ไปยังไดรเวอร์ Hive ผ่านเชลล์คำสั่ง จะส่งแบบสอบถามไปยังคอมไพเลอร์และสร้างการจัดการเซสชันสำหรับแบบสอบถาม
- คอมไพเลอร์ไฮฟ์: คอมไพเลอ ร์ไฮฟ์ใช้สำหรับส่งแบบสอบถาม การใช้ข้อมูลเมตาที่เก็บไว้ใน metastore คอมไพเลอร์ Hive จะทำการวิเคราะห์เชิงความหมายและการตรวจสอบประเภทบนบล็อกและนิพจน์การสืบค้นต่างๆ แผนการดำเนินการจะถูกสร้างขึ้นโดยคอมไพเลอร์ซึ่งเป็น DAG (Directed Acyclic Graph) แต่ละขั้นตอนของ DAG คือการดำเนินการข้อมูลเมตา การดำเนินการบน HDFS หรือเป็นงานแผนที่/ลดขนาด
- เครื่องมือเพิ่มประสิทธิภาพ: บทบาทหลักของเครื่องมือเพิ่มประสิทธิภาพคือดำเนินการเปลี่ยนแปลงตามแผนการดำเนินการ เพิ่มประสิทธิภาพและความสามารถในการปรับขนาดด้วยการแบ่งงาน
- Execution Engine : หลังจากเสร็จสิ้นขั้นตอนการคอมไพล์และการปรับให้เหมาะสม จะเป็นบทบาทของเอ็นจินการดำเนินการที่ดำเนินการตามแผนการดำเนินการที่สร้างโดยคอมไพเลอร์ แผนดำเนินการโดยใช้ Hadoop ตามลำดับการพึ่งพา
- Metastore : โดยทั่วไป Metastore เป็นฐานข้อมูลเชิงสัมพันธ์ที่เก็บข้อมูลเมตาดาต้าที่เกี่ยวข้องกับโครงสร้างของตารางและพาร์ติชั่น เป็นพื้นที่เก็บข้อมูลส่วนกลางที่รวมการจัดเก็บข้อมูลประเภทคอลัมน์และคอลัมน์ด้วย ข้อมูลที่เกี่ยวข้องกับซีเรียลไลเซอร์และดีซีเรียลไลเซอร์ยังถูกเก็บไว้ใน Metastore ซึ่งจำเป็นสำหรับการดำเนินการอ่าน/เขียนพร้อมกับไฟล์ HDFS ที่จัดเก็บข้อมูล อินเทอร์เฟซ Thrift ให้บริการโดย Metastore สำหรับการสืบค้นและจัดการข้อมูลเมตาของ Hive
Metastore สามารถกำหนดค่าได้สองโหมด:
- ระยะไกล: โหมดนี้มีประโยชน์สำหรับแอปพลิเคชันที่ไม่ใช่ Java และในโหมดระยะไกล metastore เป็นบริการ Thrift
- แบบฝัง: ในโหมดนี้ ไคลเอ็นต์สามารถโต้ตอบกับ metastore ได้โดยตรงผ่าน JDBC
- HCatalog: เลเยอร์การจัดการตารางและที่เก็บข้อมูลสำหรับ Hadoop คือ HCatalog เครื่องมือประมวลผลข้อมูลต่างๆ สำหรับการอ่านและเขียนข้อมูลบนกริดมีให้ใช้งาน เช่น Pig, MapReduce เป็นต้น ข้อมูลแบบตารางของ Hive metastore สร้างขึ้นที่ด้านบนของ Hive metastore ข้อมูลแบบตารางของ Hive metastore จะเปิดเผยต่อเครื่องมือประมวลผลข้อมูลอื่นๆ
- WebHCat: WebHCat เป็นอินเทอร์เฟซ HTTP และ REST API สำหรับ HCatalog มันดำเนินการกับข้อมูลเมตาของ Hive และให้บริการเรียกใช้งาน Hadoop MapReduce (หรือ YARN), Pig, Hive
3. การประมวลผลและการจัดการทรัพยากร
การดำเนินการค้นหาจะดำเนินการโดยกรอบงาน MapReduce ภายใน
เฟรมเวิร์ก MapReduce เป็นเฟรมเวิร์กซอฟต์แวร์สำหรับประมวลผลข้อมูลจำนวนมากบนคลัสเตอร์ฮาร์ดแวร์สินค้าโภคภัณฑ์ขนาดใหญ่ ข้อมูลจะถูกแบ่งออกเป็นส่วน ๆ และประมวลผลโดยงานลดแผนที่
4. การจัดเก็บแบบกระจาย
บริการ Hive จะสื่อสารกับที่เก็บข้อมูล Hive เพื่อดำเนินการดังต่อไปนี้:
- "ฐานข้อมูลการจัดเก็บเมตา" ของไฮฟ์เก็บข้อมูลเมตาดาต้าของตารางที่สร้างในไฮฟ์
- คลัสเตอร์ Hadoop บน HDFS จะเก็บผลลัพธ์การสืบค้นและข้อมูลที่โหลดลงในตาราง
โหมดต่างๆ ของ Hive
ขึ้นอยู่กับขนาดของข้อมูล Hive สามารถทำงานในสองโหมด
- โหมดท้องถิ่น
โหมดท้องถิ่นของไฮฟ์จะใช้เมื่อ
- Hadoop ที่ติดตั้งมีโหนดข้อมูลหนึ่งโหนดและติดตั้งภายใต้โหมดหลอก
- ขนาดข้อมูลของเครื่องท้องถิ่นเครื่องเดียวมีขนาดเล็กลง
- การประมวลผลที่รวดเร็วบนเครื่องท้องถิ่นเนื่องจากมีชุดข้อมูลที่มีขนาดเล็กลง
- โหมดย่อแผนที่
โหมดลดแผนที่ของ Hive จะใช้เมื่อ
- Hadoop มีโหนดข้อมูลหลายโหนดพร้อมข้อมูลกระจายไปตามโหนดต่างๆ
- ขนาดข้อมูลมีขนาดใหญ่ขึ้นและจำเป็นต้องมีการดำเนินการค้นหาแบบคู่ขนาน
- สามารถประมวลผลชุดข้อมูลขนาดใหญ่ได้อย่างมีประสิทธิภาพมากขึ้น
ลักษณะของไฮฟ์
- ข้อมูลจะถูกโหลดลงในตารางหลังจากสร้างตารางและฐานข้อมูลแล้ว
- Hive จัดการและสอบถามข้อมูลที่มีโครงสร้างที่จัดเก็บไว้ในตารางได้เท่านั้น
- กรอบงาน Hive มีคุณลักษณะของการเพิ่มประสิทธิภาพและความสามารถในการใช้งาน ในขณะที่จัดการกับข้อมูลที่มีโครงสร้างซึ่งไม่มีอยู่ใน Map Reduce
- เพื่อความสะดวกในการใช้งาน ภาษาที่ได้รับแรงบันดาลใจจาก Hive SQL เป็นแนวทางที่ง่ายกว่าเมื่อเทียบกับภาษาโปรแกรมที่ซับซ้อนของ Map Reduce แนวคิดที่คุ้นเคยของตาราง แถว คอลัมน์ ฯลฯ ถูกนำมาใช้ใน Hive
- สำหรับการเพิ่มประสิทธิภาพของการสืบค้น Hive สามารถแบ่งพาร์ติชั่นข้อมูลโดยใช้โครงสร้างไดเร็กทอรี
- Hive มีส่วนประกอบสำคัญที่เรียกว่า “Metastore” ซึ่งอยู่ในฐานข้อมูลเชิงสัมพันธ์และเก็บข้อมูลสคีมา สามารถใช้สองวิธีในการโต้ตอบกับ Hive: อินเทอร์เฟซ Web GUI และ Java Database Connectivity (JDBC)
- อินเทอร์เฟซบรรทัดคำสั่ง (CLI) ใช้สำหรับโต้ตอบส่วนใหญ่ CLI ใช้สำหรับเขียนแบบสอบถาม Hive โดยใช้ Hive Query Language (HQL)
- ไวยากรณ์ HQL คล้ายกับไวยากรณ์ของ SQL
- Hive รองรับไฟล์สี่รูปแบบ; TEXTFILE, SEQUENCEFILE, ORC และ RCFILE (บันทึกไฟล์คอลัมน์)
บทสรุป
Apache Hive เป็นเครื่องมือจัดเก็บข้อมูลโอเพนซอร์สที่ประกอบด้วยส่วนประกอบหลัก เช่น ไคลเอ็นต์ Hive, บริการ Hive, เฟรมเวิร์กการประมวลผลและการจัดการทรัพยากร และ Distributed Storage
มันถูกสร้างขึ้นบนระบบนิเวศ Hadoop สำหรับการประมวลผลโครงสร้างและข้อมูลกึ่งโครงสร้าง อินเทอร์เฟซผู้ใช้ที่ Hive จัดเตรียมให้ทำให้ผู้ใช้สามารถส่งคำถามในภาษา Hive Query (HQL) สิ่งนี้ถูกส่งไปยังคอมไพเลอร์เพื่อสร้างแผนการดำเนินการ แผนจะดำเนินการในที่สุดโดยกลไกการดำเนินการ
หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติมเกี่ยวกับ Big Data โปรดดูที่ PG Diploma in Software Development Specialization in Big Data program ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและมีกรณีศึกษาและโครงการมากกว่า 7 กรณี ครอบคลุมภาษาและเครื่องมือในการเขียนโปรแกรม 14 รายการ เวิร์กช็อป ความช่วยเหลือด้านการเรียนรู้และจัดหางานอย่างเข้มงวดมากกว่า 400 ชั่วโมงกับบริษัทชั้นนำ
ตรวจสอบหลักสูตรวิศวกรรมซอฟต์แวร์อื่นๆ ของเราที่ upGrad