ไฮฟ์คืออะไร? Archiเทคเจอร์และโหมด

ไฮฟ์คืออะไร?

Hive เป็นเครื่องมือ ETL และคลังข้อมูลที่พัฒนาบน Hadoop Distributed File System (HDFS) Hive ทำให้การทำงานต่างๆ เช่น

  • การห่อหุ้มข้อมูล
  • แบบสอบถามเฉพาะกิจ
  • การวิเคราะห์ชุดข้อมูลขนาดใหญ่

ลักษณะสำคัญของไฮฟ์

  • ใน Hive ตารางและฐานข้อมูลจะถูกสร้างขึ้นก่อน จากนั้นจึงโหลดข้อมูลลงในตารางเหล่านี้
  • ไฮฟ์เป็นคลังข้อมูลที่ออกแบบมาเพื่อการจัดการและการสืบค้นเฉพาะข้อมูลที่มีโครงสร้างซึ่งจัดเก็บไว้ในตาราง
  • ในขณะที่จัดการกับข้อมูลที่มีโครงสร้าง Map ลดไม่มีคุณสมบัติการปรับให้เหมาะสมและการใช้งานเช่น UDF แต่เฟรมเวิร์ก Hive มี การเพิ่มประสิทธิภาพแบบสอบถามหมายถึงวิธีที่มีประสิทธิภาพในการดำเนินการค้นหาในแง่ของประสิทธิภาพ
  • ภาษา SQL ของ Hive ที่ได้รับแรงบันดาลใจจาก SQL ช่วยให้ผู้ใช้ไม่ต้องสับสนกับความซับซ้อนของการเขียนโปรแกรม Map Reduce โดยนำแนวคิดที่คุ้นเคยจากโลกของฐานข้อมูลเชิงสัมพันธ์ เช่น ตาราง แถว คอลัมน์ และโครงร่าง เป็นต้น มาใช้ใหม่เพื่อให้เรียนรู้ได้ง่าย
  • การเขียนโปรแกรมของ Hadoop ทำงานบนไฟล์แบบเรียบ ดังนั้น Hive สามารถใช้โครงสร้างไดเร็กทอรีเพื่อ "แบ่งพาร์ติชัน" ข้อมูลเพื่อปรับปรุงประสิทธิภาพในการสืบค้นบางอย่าง
  • องค์ประกอบใหม่และที่สำคัญของ Hive เช่น Metastore ที่ใช้สำหรับจัดเก็บข้อมูลสคีมา โดยทั่วไป Metastore นี้จะอยู่ในฐานข้อมูลเชิงสัมพันธ์ เราสามารถโต้ตอบกับ Hive ได้โดยใช้วิธีการเช่น
    • เว็บ GUI
    • Java อินเทอร์เฟซการเชื่อมต่อฐานข้อมูล (JDBC)
  • การโต้ตอบส่วนใหญ่มักเกิดขึ้นผ่านอินเทอร์เฟซบรรทัดคำสั่ง (CLI) Hive จัดเตรียม CLI เพื่อเขียนคำสั่ง Hive โดยใช้ Hive Query Language (HQL)
  • โดยทั่วไปไวยากรณ์ HQL จะคล้ายกับ SQL ไวยากรณ์ที่นักวิเคราะห์ข้อมูลส่วนใหญ่คุ้นเคย แบบสอบถามตัวอย่างด้านล่างแสดงระเบียนทั้งหมดที่มีอยู่ในชื่อตารางดังกล่าว
    • ตัวอย่างแบบสอบถาม : เลือก * จาก
  • Hive รองรับรูปแบบไฟล์สี่รูปแบบ ได้แก่ ข้อความ ลำดับไฟล์ ORC และ RCFILE (บันทึกไฟล์เรียงเป็นแนว)
  • สำหรับการจัดเก็บข้อมูลเมตาข้อมูลของผู้ใช้รายเดียว Hive จะใช้ฐานข้อมูล Derby และสำหรับการจัดเก็บเมตาข้อมูลของผู้ใช้หลายรายหรือการจัดเก็บข้อมูลเมตาข้อมูลร่วมกัน Hive จะใช้ MYSQL

สำหรับการตั้งค่า MySQL เป็นฐานข้อมูลและจัดเก็บข้อมูล Meta-data บทช่วยสอนการตรวจสอบ “การติดตั้งและกำหนดค่า HIVE และ MYSQL”

ประเด็นสำคัญบางประการเกี่ยวกับ Hive:

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

ฐานข้อมูล Hive Vs เชิงสัมพันธ์

ด้วยการใช้ Hive เราสามารถใช้งานฟังก์ชันพิเศษบางอย่างที่ไม่สามารถทำได้ในฐานข้อมูลเชิงสัมพันธ์ สำหรับข้อมูลจำนวนมหาศาลที่มีหน่วยเป็นเพตะไบต์ การสืบค้นและรับผลลัพธ์ภายในไม่กี่วินาทีถือเป็นสิ่งสำคัญ และ Hive ทำสิ่งนี้ได้อย่างมีประสิทธิภาพ โดยประมวลผลการสืบค้นอย่างรวดเร็วและให้ผลลัพธ์ในเวลาไม่กี่วินาที

มาดูกันว่าอะไรทำให้ Hive เร็วขนาดนี้

ความแตกต่างที่สำคัญบางประการระหว่าง Hive และฐานข้อมูลเชิงสัมพันธ์มีดังต่อไปนี้

ฐานข้อมูลเชิงสัมพันธ์เป็นของ “สคีมาในการอ่านและสคีมาในการเขียน- ขั้นแรกให้สร้างตาราง จากนั้นจึงแทรกข้อมูลลงในตารางที่ต้องการ บนตารางฐานข้อมูลเชิงสัมพันธ์ ฟังก์ชันต่างๆ เช่น การแทรก การอัพเดต และการแก้ไขสามารถทำได้

ไฮฟ์คือ “สคีมาในการอ่านเท่านั้น“ ดังนั้น ฟังก์ชันต่างๆ เช่น การอัปเดต การปรับเปลี่ยน ฯลฯ จะไม่ทำงานกับสิ่งนี้ เนื่องจากแบบสอบถาม Hive ในคลัสเตอร์ทั่วไปทำงานบนโหนดข้อมูลหลายโหนด ดังนั้นจึงไม่สามารถอัปเดตและปรับเปลี่ยนข้อมูลข้ามโหนดหลายโหนดได้ (เวอร์ชัน Hive ต่ำกว่า 0.13)

นอกจากนี้ Hive ยังรองรับ “อ่านเขียนหลายครั้ง" ลวดลาย. ซึ่งหมายความว่าหลังจากแทรกตารางแล้ว เราก็สามารถอัปเดตตารางใน Hive เวอร์ชันล่าสุดได้

หมายเหตุ: อย่างไรก็ตาม Hive เวอร์ชันใหม่มาพร้อมกับฟีเจอร์ที่อัปเดต เวอร์ชัน Hive ( Hive 0.14) มาพร้อมกับตัวเลือกอัปเดตและลบเป็นคุณสมบัติใหม่

รัง Archiเทคเจอร์

รัง Archiเทคเจอร์

ภาพหน้าจอด้านบนอธิบาย อาปาเช่ สถาปัตยกรรมรังผึ้งในรายละเอียด

Hive ประกอบด้วยส่วนหลัก 3 ส่วนหลัก

  1. ลูกค้าไฮฟ์
  2. บริการไฮฟ์
  3. ไฮฟ์สตอเรจและคอมพิวเตอร์

ลูกค้าไฮฟ์:

Hive มีไดรเวอร์ที่แตกต่างกันสำหรับการสื่อสารกับแอพพลิเคชั่นประเภทต่างๆ สำหรับแอปพลิเคชันที่ใช้ Thrift จะให้ไคลเอ็นต์ Thrift สำหรับการสื่อสาร

สำหรับ Java แอปพลิเคชันที่เกี่ยวข้องจะมีไดรเวอร์ JDBC นอกเหนือจากแอปพลิเคชันประเภทใดๆ ที่ให้ไดรเวอร์ ODBC ลูกค้าและไดรเวอร์เหล่านี้จะสื่อสารกับเซิร์ฟเวอร์ Hive ในบริการ Hive อีกครั้ง

บริการไฮฟ์:

การโต้ตอบระหว่างลูกค้ากับ Hive สามารถทำได้ผ่าน Hive Services หากลูกค้าต้องการดำเนินการใดๆ ที่เกี่ยวข้องกับการสอบถามใน Hive จะต้องสื่อสารผ่าน Hive Services

CLI คืออินเทอร์เฟซบรรทัดคำสั่งที่ทำหน้าที่เป็นบริการ Hive สำหรับการดำเนินการ DDL (ภาษานิยามข้อมูล) ไดรเวอร์ทั้งหมดสื่อสารกับเซิร์ฟเวอร์ Hive และไดรเวอร์หลักในบริการ Hive ตามที่แสดงในไดอะแกรมสถาปัตยกรรมด้านบน

ไดรเวอร์ที่มีอยู่ในบริการ Hive แสดงถึงไดรเวอร์หลัก และสื่อสาร JDBC, ODBC และแอปพลิเคชันเฉพาะไคลเอนต์อื่น ๆ ทุกประเภท ไดร์เวอร์จะประมวลผลคำขอเหล่านั้นจากแอพพลิเคชั่นต่างๆ ไปยังเมตาสโตร์และระบบภาคสนามเพื่อการประมวลผลต่อไป

อุปกรณ์จัดเก็บข้อมูลและคอมพิวเตอร์ Hive:

บริการ Hive เช่น Meta store, File system และ Job Client จะสื่อสารกับที่เก็บข้อมูล Hive และดำเนินการดังต่อไปนี้

  • ข้อมูลเมตาดาต้าของตารางที่สร้างใน Hive จะถูกจัดเก็บไว้ใน Hive “ฐานข้อมูล Meta storage”
  • ผลลัพธ์ของการค้นหาและข้อมูลที่โหลดในตารางจะถูกเก็บไว้ในคลัสเตอร์ Hadoop บน HDFS

ขั้นตอนการดำเนินงาน:

ขั้นตอนการดำเนินการงาน

จากภาพหน้าจอด้านบน เราสามารถเข้าใจขั้นตอนการปฏิบัติงานใน Hive ด้วย Hadoop ได้

การไหลของข้อมูลใน Hive มีลักษณะตามรูปแบบต่อไปนี้

  1. การดำเนินการค้นหาจาก UI (ส่วนต่อประสานผู้ใช้)
  2. ไดรเวอร์กำลังโต้ตอบกับคอมไพเลอร์เพื่อรับแผน (แผนในที่นี้หมายถึงการดำเนินการค้นหา) กระบวนการและการรวบรวมข้อมูลเมตาดาต้าที่เกี่ยวข้อง
  3. คอมไพเลอร์สร้างแผนสำหรับงานที่จะดำเนินการ คอมไพเลอร์สื่อสารกับ Meta store เพื่อรับคำขอข้อมูลเมตา
  4. Meta store ส่งข้อมูลเมตาดาต้ากลับไปยังคอมไพเลอร์
  5. คอมไพเลอร์สื่อสารกับไดร์เวอร์พร้อมแผนที่เสนอเพื่อดำเนินการค้นหา
  6. ไดร์เวอร์กำลังส่งแผนปฏิบัติการไปยังเอ็นจิ้นการดำเนินการ
  7. Execution Engine (EE) ทำหน้าที่เป็นสะพานเชื่อมระหว่าง Hive และ Hadoop เพื่อประมวลผลแบบสอบถาม สำหรับการดำเนินการ DFS
  • EE ควรติดต่อ Name Node ก่อน จากนั้นจึงไปที่ Data nodes เพื่อรับค่าที่จัดเก็บไว้ในตาราง
  • EE กำลังจะดึงบันทึกที่ต้องการจาก Data Nodes ข้อมูลจริงของตารางอยู่ในโหนดข้อมูลเท่านั้น ในขณะที่มาจาก Name Node จะดึงข้อมูลเมตาดาต้าสำหรับการสืบค้นเท่านั้น
  • รวบรวมข้อมูลจริงจากโหนดข้อมูลที่เกี่ยวข้องกับแบบสอบถามที่กล่าวถึง
  • Execution Engine (EE) สื่อสารแบบสองทิศทางกับร้านค้า Meta ที่มีอยู่ใน Hive เพื่อดำเนินการ DDL (Data Definition Language) ที่นี่ การดำเนินการ DDL เช่น CREATE, DROP และ ALTERING ตารางและฐานข้อมูลก็เสร็จสิ้น ร้านค้า Meta จะจัดเก็บข้อมูลเกี่ยวกับชื่อฐานข้อมูล ชื่อตาราง และชื่อคอลัมน์เท่านั้น และจะดึงข้อมูลที่เกี่ยวข้องกับแบบสอบถามที่กล่าวถึง
  • Execution Engine (EE) ในทางกลับกันจะสื่อสารกับ Hadoop daemons เช่น โหนดชื่อ โหนดข้อมูล และตัวติดตามงาน เพื่อดำเนินการสืบค้นที่ด้านบนของระบบไฟล์ Hadoop
  1. กำลังดึงผลลัพธ์จากไดรเวอร์
  2. กำลังส่งผลลัพธ์ไปยัง Execution engine เมื่อดึงผลลัพธ์จากโหนดข้อมูลไปยัง EE แล้ว มันจะส่งผลกลับไปยังไดรเวอร์และ UI (ส่วนหน้า)

Hive ติดต่อกับระบบไฟล์ Hadoop และ daemons อย่างต่อเนื่องผ่านกลไกการดำเนินการ ลูกศรประในแผนภาพ Job Flow แสดงการสื่อสารของ Execution Engine กับ Hadoop daemons

โหมดต่างๆ ของไฮฟ์

Hive สามารถทำงานได้สองโหมด ขึ้นอยู่กับขนาดของโหนดข้อมูลใน Hadoop

โหมดเหล่านี้คือ

  • โหมดท้องถิ่น
  • โหมดลดแผนที่

เมื่อใดจึงจะใช้โหมดท้องถิ่น:

  • หาก Hadoop ติดตั้งภายใต้โหมดหลอกโดยมีโหนดข้อมูลหนึ่งโหนด เราจะใช้ Hive ในโหมดนี้
  • หากขนาดข้อมูลเล็กลงโดยจำกัดเฉพาะเครื่องเดียว เราสามารถใช้โหมดนี้ได้
  • การประมวลผลจะรวดเร็วมากในชุดข้อมูลขนาดเล็กที่มีอยู่ในเครื่องท้องถิ่น

เมื่อใดจึงจะใช้โหมดลดแผนที่:

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

ใน Hive เราสามารถตั้งค่าคุณสมบัตินี้เพื่อระบุว่า Hive สามารถทำงานในโหมดใดได้บ้าง โดยค่าเริ่มต้น คุณสมบัตินี้จะทำงานในโหมด Map Reduce และสำหรับโหมดโลคัล คุณสามารถตั้งค่าได้ดังต่อไปนี้

ไฮฟ์เพื่อทำงานในโหมดโลคัล

SET mapred.job.tracker=local;

จาก Hive เวอร์ชัน 0.7 จะรองรับโหมดเพื่อเรียกใช้งานลดแผนที่ในโหมดโลคัลโดยอัตโนมัติ

ไฮฟ์เซิร์ฟเวอร์2 (HS2) คืออะไร?

HiveServer2 (HS2) เป็นอินเทอร์เฟซเซิร์ฟเวอร์ที่ทำหน้าที่ดังต่อไปนี้:

  • ช่วยให้ไคลเอนต์ระยะไกลสามารถดำเนินการค้นหากับ Hive
  • รับผลลัพธ์ของการสืบค้นที่กล่าวถึง

จากเวอร์ชันล่าสุดจะมีคุณสมบัติขั้นสูงบางอย่างตาม Thrift RPC เช่น;

  • การทำงานพร้อมกันหลายไคลเอนต์
  • การยืนยันตัวตน

สรุป

Hive เป็นเครื่องมือ ETL และคลังข้อมูลที่อยู่เหนือระบบนิเวศ Hadoop และใช้ในการประมวลผลข้อมูลที่มีโครงสร้างและกึ่งมีโครงสร้าง

  • Hive คือฐานข้อมูลที่มีอยู่ในระบบนิเวศ Hadoop ที่ดำเนินการ DDL และ DML และยังมีภาษาสอบถามที่ยืดหยุ่นเช่น HQL เพื่อการสอบถามและประมวลผลข้อมูลที่ดียิ่งขึ้น
  • มันมีคุณสมบัติมากมายเมื่อเทียบกับ RDMS ซึ่งมีข้อจำกัดบางประการ

เพื่อให้ตรรกะเฉพาะของผู้ใช้เป็นไปตามความต้องการของลูกค้า

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