ค้นหาเว็บไซต์

วิธีการติดตั้งและกำหนดค่า Hive ที่มีความพร้อมใช้งานสูง – ตอนที่ 7


Hive คือโมเดล คลังข้อมูล ในระบบนิเวศ Hadoop สามารถทำหน้าที่เป็นเครื่องมือ ETL เพิ่มเติมจาก Hadoop การเปิดใช้งาน High Availability (HA) บน Hive นั้นไม่เหมือนกับที่เราทำใน Master Services เช่น Namenode และ Resource Manager

การเฟลโอเวอร์อัตโนมัติจะไม่เกิดขึ้นใน Hive (Hiveserver2) หาก Hiveserver2 (HS2) ใด ๆ ล้มเหลว การรันงานบน HS2 ที่ล้มเหลวจะล้มเหลว เราจำเป็นต้องส่งงานอีกครั้งเพื่อให้งานสามารถทำงานบน HiveServer2 อื่นได้ ดังนั้นการเปิดใช้งาน HA บน HS2 จึงเป็นเพียงการเพิ่มจำนวนองค์ประกอบ HS2 ใน คลัสเตอร์

ในบทความนี้ เราจะดูขั้นตอนในการติดตั้งและเปิดใช้งาน ความพร้อมใช้งานสูง ของ Hive

ความต้องการ

  • แนวทางปฏิบัติที่ดีที่สุดสำหรับการปรับใช้เซิร์ฟเวอร์ Hadoop บน CentOS/RHEL 7 – ส่วนที่ 1
  • การตั้งค่าข้อกำหนดเบื้องต้นของ Hadoop และการเพิ่มความปลอดภัย – ส่วนที่ 2
  • วิธีติดตั้งและกำหนดค่า Cloudera Manager บน CentOS/RHEL 7 – ตอนที่ 3
  • วิธีติดตั้ง CDH และกำหนดค่าตำแหน่งบริการบน CentOS/RHEL 7 – ตอนที่ 4
  • วิธีการตั้งค่าความพร้อมใช้งานสูงสำหรับ Namenode – ตอนที่ 5
  • วิธีการตั้งค่าความพร้อมใช้งานสูงสำหรับตัวจัดการทรัพยากร – ตอนที่ 6

มาเริ่มกันเลย…

การติดตั้งและการกำหนดค่าไฮฟ์

1. เข้าสู่ระบบ Cloudera Manager ที่ URL ด้านล่าง และไปที่ Cloudera Manager –> เพิ่มบริการ .

http://13.233.129.39:7180/cmf/home

2. เลือกบริการ 'ไฮฟ์'

3. กำหนดบริการบนโหนด

  • เกตเวย์ – เป็นบริการลูกค้าที่ผู้ใช้สามารถเข้าถึงไฮฟ์ได้ โดยปกติ บริการนี้จะอยู่ในโหนด Edge สำหรับผู้ใช้โดยเฉพาะ
  • Hive Metastore – เป็นที่เก็บข้อมูลกลางสำหรับจัดเก็บข้อมูลเมตาของ Hive
  • เซิร์ฟเวอร์ WebHCat – เป็น Web API สำหรับ HCatalog และบริการ Hadoop อื่นๆ
  • Hiveserver2 – เป็นอินเทอร์เฟซของไคลเอนต์สำหรับการดำเนินการค้นหาบน Hive

เมื่อเลือกเซิร์ฟเวอร์แล้ว คลิก 'ดำเนินการต่อ' เพื่อดำเนินการต่อ

4. Hive Metastore จำเป็นต้องมีฐานข้อมูลพื้นฐานสำหรับการจัดเก็บข้อมูลเมตา ที่นี่เราใช้ฐานข้อมูลเริ่มต้น PostgreSQL ซึ่งสร้างขึ้นด้วย CDH

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

5. กำหนดค่าไดเรกทอรี Hive Warehouse /user/hive/warehouse เป็นเส้นทางไดเรกทอรีเริ่มต้นสำหรับการจัดเก็บตาราง Hive คลิก 'ดำเนินการต่อ'

6. การติดตั้ง Hive เริ่มต้นขึ้น

7. เมื่อการติดตั้งเสร็จสมบูรณ์ คุณจะได้รับสถานะ "เสร็จสิ้น" คลิก 'ดำเนินการต่อ' เพื่อดำเนินการต่อ

8. การติดตั้งและการกำหนดค่า Hive เสร็จสมบูรณ์ คลิก 'เสร็จสิ้น' เพื่อเสร็จสิ้นขั้นตอนการติดตั้ง

9. คุณสามารถดูบริการ Hive ที่เพิ่มใน คลัสเตอร์ ผ่านทาง แดชบอร์ด Cloudera Manager

10. คุณสามารถดู Hiveserver2 ใน อินสแตนซ์ ของ Hive เราได้เพิ่ม Hiveserver2 ใน master1

ตัวจัดการ Cloudera –> ไฮฟ์ –> อินสแตนซ์ –> Hiveserver2

การเปิดใช้งานความพร้อมใช้งานสูงบน Hive

11. ถัดไปเพิ่มบทบาท Hive โดยไปที่ Cloudera Manager –> Hive –> การดำเนินการ –> เพิ่มบทบาทอินสแตนซ์

12. เลือกเซิร์ฟเวอร์ที่คุณต้องการวาง Hiveserver2 เพิ่มเติม คุณสามารถเพิ่มมากกว่าสองรายการได้ไม่จำกัด ที่นี่เรากำลังเพิ่ม Hiveserver2 อีกหนึ่งรายการใน master2

13. เมื่อเลือกเซิร์ฟเวอร์แล้ว คลิก 'ดำเนินการต่อ'

14. Hiverserver2 จะถูกเพิ่มเข้าไปใน Hive Instances คุณต้องเริ่มต้นโดยไปที่ Cloudera Manager –> ไฮฟ์ –> อินสแตนซ์ –> (เลือก Hiveserver2 ที่เพิ่มใหม่) –> การดำเนินการสำหรับที่เลือก –> < แข็งแกร่ง>เริ่ม

15. เมื่อ Hiveserver2 เริ่มต้นบน master2 คุณจะได้รับสถานะ 'เสร็จสิ้น' คลิก ปิด

16. คุณสามารถดูได้ว่า Hiveserver2s ทั้งสองกำลังทำงานอยู่

การตรวจสอบความพร้อมใช้งานของไฮฟ์

เราสามารถเชื่อมต่อ Hiveserver2 ผ่านเส้นตรงซึ่งเป็นไคลเอ็นต์แบบบางและบรรทัดคำสั่ง ใช้ไดรเวอร์ JDBC เพื่อสร้างการเชื่อมต่อ

17. เข้าสู่ระบบเซิร์ฟเวอร์ที่ Hive Gateway กำลังทำงานอยู่

[tecmint@master1 ~]$ beeline

18. ป้อนสตริงการเชื่อมต่อ JDBC เพื่อเชื่อมต่อ Hiveserver2 ในการเชื่อมต่อนี้ สตริง เรากำลังพูดถึง Hiverserver2 (master2) ด้วยหมายเลขพอร์ตเริ่มต้น 10000 สตริงการเชื่อมต่อนี้จะเชื่อมต่อกับ Hiveserver2 ซึ่งทำงานบน master2 เท่านั้น

beeline> !connect "jdbc:hive2://master1.linux-console.net:10000"

19. เรียกใช้แบบสอบถามตัวอย่าง

0: jdbc:hive2://master1.linux-console.net:10000> show databases;

นี่คือฐานข้อมูลเริ่มต้นที่มาพร้อมกับระบบ

20. ใช้คำสั่งด้านล่างเพื่อยุติเซสชัน Hive

0: jdbc:hive2://master1.linux-console.net:10000> !quit

21. คุณสามารถใช้วิธีเดียวกันในการเชื่อมต่อ Hiveserver2 ที่ทำงานบน master2

beeline> !connect "jdbc:hive2://master2.linux-console.net:10000"

23. เราสามารถเชื่อมต่อ Hiveserver2 ในโหมด Zookeeper Discovery ได้ ในวิธีนี้ เราไม่จำเป็นต้องพูดถึง Hiveserver2 ในสตริงการเชื่อมต่อ แต่เราใช้ Zookeeper เพื่อค้นหา Hiveserver2 ที่มีอยู่

ที่นี่เราสามารถใช้ตัวจัดสรรภาระงานของบริษัทอื่นเพื่อสร้างสมดุลระหว่างโหลดระหว่าง Hiverserver2 ที่มีอยู่ จำเป็นต้องกำหนดค่าด้านล่างเพื่อเปิดใช้งาน โหมด Zookeeper Discovery โดยไปที่ Cloudera Manager –> Hive –> การกำหนดค่า

24. ถัดไป ค้นหาคุณสมบัติ “HiveServer2 Advanced Configuration Snippet ” และคลิกสัญลักษณ์ + เพื่อเพิ่มคุณสมบัติด้านล่าง

Name : hive.server2.support.dynamic.service.discovery
Value : true
Description : <any description>

25. เมื่อเข้าสู่คุณสมบัติแล้ว คลิก 'บันทึกการเปลี่ยนแปลง'

26. ขณะที่เราทำการเปลี่ยนแปลงการกำหนดค่า จำเป็นต้องรีสตาร์ทบริการที่ได้รับผลกระทบโดยคลิกที่สัญลักษณ์สีส้มเพื่อเริ่มบริการใหม่

27. คลิกบริการ 'รีสตาร์ทเก่า'

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

29. เมื่อการรีสตาร์ทเสร็จสมบูรณ์ คุณจะได้รับสถานะ 'เสร็จสิ้น' คลิก 'เสร็จสิ้น' เพื่อเสร็จสิ้นกระบวนการ

30. ตอนนี้เราจะเชื่อมต่อ Hiveserver2 โดยใช้โหมด Zookeeper Discovery ในการเชื่อมต่อ JDBC สตริงที่เราจำเป็นต้องใช้เซิร์ฟเวอร์ Zookeeper ที่มีหมายเลขพอร์ต 2081 รวบรวมเซิร์ฟเวอร์ Zookeeper โดยไปที่ Cloudera Manager –> Zookeeper –> อินสแตนซ์ –> (จดบันทึกชื่อเซิร์ฟเวอร์)

นี่คือเซิร์ฟเวอร์สามเครื่องที่มี Zookeeper โดย 2181 คือหมายเลขพอร์ต

master1.linux-console.net:2181
master2.linux-console.net:2181
worker1.linux-console.net:2181

31. ตอนนี้เข้าสู่ เส้นตรง

[tecmint@master1 ~]$ beeline

32. ป้อนสตริงการเชื่อมต่อ JDBC ตามที่ระบุด้านล่าง เราต้องพูดถึง โหมดการค้นหาบริการ และ เนมสเปซ Zookeeper 'hiveserver2' คือเนมสเปซเริ่มต้นของ Hiveserver2

beeline>!connect "jdbc:hive2://master1.linux-console.net:2181,master2.linux-console.net:2181,worker1.linux-console.net:2181/;serviceDiscoveryMode=zookeeper;zookeeperNamespace=hiveserver2"

33. ขณะนี้เซสชันเชื่อมต่อกับ Hiveserver2 ที่ทำงานบน master1 เรียกใช้แบบสอบถามตัวอย่างเพื่อตรวจสอบ ใช้คำสั่งด้านล่างเพื่อสร้างฐานข้อมูล

0: jdbc:hive2://master1.linux-console.net:2181,mast> create database tecmint;

34. ใช้คำสั่งด้านล่างเพื่อแสดงรายการฐานข้อมูล

0: jdbc:hive2://master1.linux-console.net:2181,mast> show databases;

35. ตอนนี้เราจะตรวจสอบความพร้อมใช้งานสูงใน โหมด Zookeeper Discovery ไปที่ Cloudera Manager และหยุด Hiveserver2 บน master1 ที่เราทดสอบข้างต้น

ตัวจัดการ Cloudera –> ไฮฟ์ –> อินสแตนซ์ –> (เลือก Hiveserver2 บน master1 ) –> การดำเนินการสำหรับที่เลือก –> หยุด

36. คลิก 'หยุด' เมื่อหยุดแล้ว คุณจะได้รับสถานะ 'เสร็จสิ้น' ตรวจสอบ Hiveserver2 บน master1 โดยไปที่ Hive –> Instances

37. เข้าสู่ เส้นตรง และเชื่อมต่อ Hiveserver2 โดยใช้สตริงการเชื่อมต่อ JDBC เดียวกันกับ Zookeeper Discovery โหมด เหมือนที่เราทำในขั้นตอนข้างต้น

[tecmint@master1 ~]$ beeline

beeline>!connect "jdbc:hive2://master1.linux-console.net:2181,master2.linux-console.net:2181,worker1.linux-console.net:2181/;serviceDiscoveryMode=zookeeper;zookeeperNamespace=hiveserver2"

ตอนนี้คุณจะเชื่อมต่อกับ Hiveserver2 ที่ทำงานบน master2

38. ตรวจสอบด้วยแบบสอบถามตัวอย่าง

0: jdbc:hive2://master1.linux-console.net:2181,mast> show databases;

บทสรุป

ในบทความนี้ เราได้ทำตามขั้นตอนโดยละเอียดเพื่อให้มีโมเดล Hive Data Warehouse ใน คลัสเตอร์ ของเราที่มี ความพร้อมใช้งานสูง ในสภาพแวดล้อมการผลิตแบบเรียลไทม์ จะมีการวาง Hiveserver2 มากกว่า 3 รายการโดยเปิดใช้งาน โหมด Zookeeper Discovery

ที่นี่ Hiveserver2 ทั้งหมดกำลังลงทะเบียนกับ Zookeeper ภายใต้ Namespace ทั่วไป ผู้ดูแลสัตว์แบบไดนามิก ค้นหา Hiveserver2 ที่มีอยู่ และสร้างเซสชัน Hive