Vyhledávání na webu

Jak nainstalovat a nakonfigurovat Hive s vysokou dostupností – část 7


Hive je model Datového skladu v ekosystému Hadoop. Může fungovat jako nástroj ETL nad Hadoop. Povolení vysoké dostupnosti (HA) na Hive není podobné jako u hlavních služeb, jako je Namenode a Resource Manager.

V Hive (Hiveserver2) nedojde k automatickému převzetí služeb při selhání. Pokud některý Hiveserver2 (HS2) selže, spuštěné úlohy na tomto neúspěšném HS2 selžou. Musíme úlohu znovu odeslat, aby mohla být spuštěna na jiném HiveServer2. Povolení HA na HS2 tedy není nic jiného než zvýšení počtu komponent HS2 v Clusteru.

V tomto článku se podíváme na kroky k instalaci a povolení High Availability aplikace Hive.

Požadavky

  • Nejlepší postupy pro nasazení serveru Hadoop na CentOS/RHEL 7 – část 1
  • Předpoklady nastavení Hadoopu a zabezpečení – část 2
  • Jak nainstalovat a nakonfigurovat Cloudera Manager na CentOS/RHEL 7 – část 3
  • Jak nainstalovat CDH a nakonfigurovat umístění služeb na CentOS/RHEL 7 – část 4
  • Jak nastavit vysokou dostupnost pro Namenode – část 5
  • Jak nastavit vysokou dostupnost pro správce zdrojů – část 6

Začněme…

Instalace a konfigurace podregistru

1. Přihlaste se do Cloudera Manager na níže uvedené adrese URL a přejděte na Cloudera Manager –> Přidat službu .

http://13.233.129.39:7180/cmf/home

2. Vyberte službu „Hive“.

3. Přiřaďte služby na uzly.

  • Brána – Jedná se o klientskou službu, kde má uživatel přístup k Hive. Obvykle bude tato služba umístěna v uzlech Edge vyhrazených uživatelům.
  • Hive Metastore – Jedná se o centrální úložiště pro ukládání metadat Hive.
  • WebHCat Server – Jedná se o webové rozhraní API pro HCatalog a další služby Hadoop.
  • Hiveserver2 – Jedná se o rozhraní klientů pro provádění dotazů na Hive.

Po výběru serverů pokračujte kliknutím na tlačítko Pokračovat.

4. Hive Metastore potřebuje podkladovou databázi pro ukládání metadat. Zde používáme výchozí databázi PostgreSQL, která je vestavěna pomocí CDH.

Níže uvedené údaje o databázi budou zadány automaticky, „Test připojení“ bude přeskočeno, protože uvedená databáze bude vytvořena za běhu. V reálném čase musíme vytvořit databázi v externí databázi a otestovat připojení, abychom mohli pokračovat dále. Po dokončení klikněte na tlačítko Pokračovat.

5. Nakonfigurujte adresář Hive Warehouse, /user/hive/warehouse je výchozí cesta k adresáři pro ukládání tabulek Hive. Klikněte na tlačítko Pokračovat.

6. Spustí se instalace Hive.

7. Po dokončení instalace můžete získat stav „Dokončeno“. Chcete-li pokračovat, klikněte na tlačítko Pokračovat.

8. Instalace a konfigurace podregistru byly úspěšně dokončeny. Kliknutím na „Dokončit“ dokončete instalaci.

9. Službu Hive můžete vidět přidanou do Clusteru prostřednictvím Cloudera Manager Dashboard.

10. Hiveserver2 můžete zobrazit v Instance aplikace Hive. Do master1 jsme přidali Hiveserver2.

Cloudera Manager –> Hive –> Instance –> Hiveserver2.

Povolení vysoké dostupnosti na Hive

11. Poté přidejte roli Hive tak, že přejdete na Cloudera Manager –> Hive –> Akce –> Přidat Roleinstance.

12. Vyberte servery, kam chcete umístit další Hiveserver2. Můžete přidat více než dva, není limit. Zde přidáváme jeden extra jeden Hiveserver2 v master2.

13. Jakmile vyberete server, klikněte na tlačítko Pokračovat.

14. Do Instancí úlu bude přidán Hiverserver2, musíte jej spustit přechodem do Cloudera Manager –> Hive –> Instance –> (Vybrat Hiveserver2 přidáno nově) –> Akce pro vybrané –> Spustit.

15. Po spuštění Hiveserver2 na master2 získáte stav „Dokončeno“. Klikněte na Zavřít.

16. Můžete si prohlédnout, že oba Hiveserver2 jsou spuštěny.

Ověření dostupnosti úlu

Hiveserver2 můžeme připojit přes beeline, což je tenký klient a příkazový řádek. K navázání spojení používá ovladač JDBC.

17. Přihlaste se k serveru, kde běží Hive Gateway.

[tecmint@master1 ~]$ beeline

18. Zadejte připojovací řetězec JDBC pro připojení Hiveserver2. V této souvislosti řetězec zmiňujeme Hiverserver2 (master2) s výchozím číslem portu 10000. Tento připojovací řetězec se připojí pouze k Hiveserver2, který běží na master2.

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

19. Spusťte ukázkový dotaz.

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

Toto je výchozí databáze, která je integrována.

20. Pomocí níže uvedeného příkazu ukončete relaci Hive.

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

21. Stejným způsobem můžete připojit Hiveserver2 běžící na master2.

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

23. Můžeme připojit Hiveserver2 v režimu Zookeeper Discovery. Při této metodě nemusíme v připojovacím řetězci zmiňovat Hiveserver2, místo toho k nalezení dostupného Hiveserver2 používáme Zookeeper.

Zde můžeme použít nástroj pro vyrovnávání zátěže třetí strany k vyrovnání zátěže mezi dostupnými Hiverserver2. Níže uvedená konfigurace je potřeba pro aktivaci Zookeeper Discovery Mode tím, že přejdete do Cloudera Manager –> Hive –> Configuration.

24. Dále vyhledejte vlastnost „HiveServer2 Advanced Configuration Snippet“ a kliknutím na symbol + přidejte níže uvedenou vlastnost.

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

25. Po zadání vlastnosti klikněte na „Uložit změny“.

26. Když jsme provedli změny v konfiguraci, je třeba restartovat dotčené služby kliknutím na symbol oranžové barvy.

27. Klikněte na možnost Restartovat zastaralé služby.

28. K dispozici jsou dvě možnosti. Pokud je cluster v živé produkci, musíme upřednostnit postupný restart, abychom minimalizovali výpadek. Při nové instalaci můžeme zvolit druhou možnost „Znovu nasadit konfiguraci klienta“ a kliknout na „Restartovat nyní“.

29. Po úspěšném dokončení restartu získáte stav „Dokončeno“. Dokončete proces kliknutím na tlačítko Dokončit.

30. Nyní připojíme Hiveserver2 pomocí režimu Zookeeper Discovery. V připojení JDBC řetězec, který potřebujeme k použití serverů Zookeeper s číslem portu 2081. Shromážděte servery Zookeeper tak, že přejdete do Cloudera Manager –> Zookeeper –> Instance –> (Poznamenejte si názvy serverů).

Toto jsou tři servery, které mají Zookeeper, 2181 je číslo portu.

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

31. Nyní přejděte beeline.

[tecmint@master1 ~]$ beeline

32. Zadejte připojovací řetězec JDBC, jak je uvedeno níže. Musíme zmínit Režim zjišťování služby a Zookeeper Namespace. „hiveserver2“ je výchozí jmenný prostor 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. Nyní je relace připojena k Hiveserver2 běžícímu na master1. Spusťte vzorový dotaz k ověření. Pomocí níže uvedeného příkazu vytvořte databázi.

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

34. Pro výpis databáze použijte níže uvedený příkaz.

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

35. Nyní ověříme vysokou dostupnost v Zookeeper Discovery Mode. Přejděte do Cloudera Manager a zastavte Hiveserver2 na master1, který jsme testovali výše.

Cloudera Manager –> Hive –> Instance –> (vyberte Hiveserver2 na master1 ) –> Akce pro vybrané –> Zastavit.

36. Klikněte na tlačítko Zastavit. Po zastavení získáte stav „Dokončeno“. Ověřte Hiveserver2 na master1 tak, že přejdete do Hive –> Instance.

37. Dostaňte se vzdušnou čarou a připojte Hiveserver2 pomocí stejného připojovacího řetězce JDBC s Zookeeper Discovery Režimjak jsme to udělali ve výše uvedených krocích.

[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"

Nyní budete připojeni k Hiveserver2 běžícím na master2.

38. Ověřte pomocí vzorového dotazu.

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

Závěr

V tomto článku jsme prošli podrobnými kroky, abychom měli model Hive Data Warehouse v našem Clusteru s vysokou dostupností. V produkčním prostředí v reálném čase budou více než tři Hiveserver2 umístěny s režimem zjišťování Zookeeper.

Zde se všechny Hiveserver2 registrují u Zookeeper pod společným jmenným prostorem. Zookeeper dynamicky objeví dostupný Hiveserver2 a zahájí relaci Hive.