Co to jest ul? Architectura i tryby
โก Inteligentne podsumowanie
Hive to warstwa SQL ekosystemu Hadoop, ktรณra przeksztaลca polecenia HiveQL w rozproszone zadania odczytujฤ ce ustrukturyzowane dane znajdujฤ ce siฤ juลผ w systemie HDFS. Dziฤki temu analitycy mogฤ wykonywaฤ zapytania do tabel petabajtowych bez koniecznoลci samodzielnego pisania kodu MapReduce.

Co to jest ul?
Hive to narzฤdzie do ETL i magazynowania danych opracowane w oparciu o rozproszony system plikรณw Hadoop (HDFS). Hive uลatwia wykonywanie operacji takich jak:
- Enkapsulacja danych
- Zapytania doraลบne
- Analiza ogromnych zbiorรณw danych
Waลผne cechy Hive
Poniลผsze punkty wyjaลniajฤ , co odrรณลผnia Hive od zwykลego programu MapReduce.
- W Hive najpierw tworzone sฤ tabele i bazy danych, a nastฤpnie dane sฤ ลadowane do tych tabel.
- Hive to magazyn danych przeznaczony do zarzฤ dzania i wykonywania zapytaล wyลฤ cznie w zakresie danych strukturalnych przechowywanych w tabelach.
- W przypadku danych strukturalnych MapReduce nie oferuje funkcji optymalizacji i uลผytecznoลci, takich jak UDF, ale framework Hive je posiada. Optymalizacja zapytaล odnosi siฤ do efektywnego sposobu wykonywania zapytaล pod wzglฤdem wydajnoลci.
- Zainspirowany SQL-em jฤzyk Hive oddziela uลผytkownika od zลoลผonoลci programowania MapReduce. Wykorzystuje on znane koncepcje ze ลwiata relacyjnych baz danych, takie jak tabele, wiersze, kolumny i schematy, uลatwiajฤ c naukฤ.
- Programowanie Hadoopa dziaลa na pลaskich plikach. Dziฤki temu Hive moลผe uลผywaฤ struktur katalogowych do "przegroda" dane w celu poprawy wydajnoลci niektรณrych zapytaล.
- Waลผnym elementem Hive jest metamagazyn, sลuลผฤ
cy do przechowywania informacji o schemacie. Ten metamagazyn zazwyczaj znajduje siฤ w relacyjnej bazie danych. Moลผemy wchodziฤ w interakcjฤ z Hive za pomocฤ
metod takich jak:
- GUI sieci
- Java Interfejs ลฤ cznoลci z bazฤ danych (JDBC).
- Wiฤkszoลฤ interakcji odbywa siฤ za poลrednictwem interfejsu wiersza poleceล (CLI). Hive udostฤpnia interfejs CLI do pisania zapytaล Hive za pomocฤ jฤzyka HQL (Hive Query Language).
- Ogรณlnie skลadnia HQL jest podobna do SQL Skลadnia, z ktรณrฤ
zna siฤ wiฤkszoลฤ analitykรณw danych. Poniลผsze przykลadowe zapytanie wyลwietla wszystkie rekordy obecne w podanej nazwie tabeli.
- Przykลadowe zapytanie : Wybierz spoลrรณd
- Hive obsลuguje cztery formaty plikรณw, sฤ to: PLIK TEKSTOWY, PLIK SEKWENCYJNY, ORC i PLIK RC (Nagraj plik kolumnowy).
- Do przechowywania metadanych pojedynczego uลผytkownika Hive korzysta z bazy danych Derby, a do przechowywania metadanych wielu uลผytkownikรณw lub wspรณลdzielonych Hive korzysta z bazy danych Derby. MySQL.
Do ustawienia MySQL jako bazฤ danych i do przechowywania informacji metadanych, sprawdลบ samouczek na konfigurowanie metamagazynu Hive za pomocฤ MySQL, ktรณry jest kontynuacjฤ Przewodnik po instalacji Hive.
Niektรณre kluczowe punkty dotyczฤ ce Hive:
- Gลรณwnฤ rรณลผnicฤ pomiฤdzy HQL i SQL jest to, ลผe zapytanie Hive jest wykonywane w infrastrukturze Hadoop, a nie w tradycyjnej bazie danych.
- Wykonywanie zapytaล Hive to seria automatycznie generowanych MapaReduce Oferty pracy.
- Hive obsลuguje koncepcje partycjonowania i kontenerรณw, aby uลatwiฤ pobieranie danych podczas wykonywania zapytania przez klienta.
- Hive obsลuguje niestandardowe UDF (funkcje zdefiniowane przez uลผytkownika) Do oczyszczania, filtrowania i podobnych zadaล danych. Zgodnie z wymaganiami programistรณw, moลผna zdefiniowaฤ funkcje UDF Hive.
Hive kontra relacyjne bazy danych
Hive wykonuje funkcje, ktรณrych nie potrafiฤ relacyjne bazy danych. Gdy dane liczฤ siฤ w petabajtach, zwracanie wynikรณw w ciฤ gu sekund ma znaczenie, a Hive robi to sprawnie. Oto najwaลผniejsze rรณลผnice.
Bazy danych relacyjne sฤ โschemat przy odczycie i schemat przy zapisieโ: Najpierw tworzona jest tabela, a nastฤpnie wstawiane sฤ do niej dane. W tabelach relacyjnych baz danych moลผna wykonywaฤ takie funkcje, jak wstawianie, aktualizowanie i modyfikowanie.
Ul jest โschemat tylko do odczytuโFunkcje takie jak aktualizacja i modyfikacja nie dziaลaลy we wczesnych wersjach, poniewaลผ zapytanie Hive w typowym klastrze jest uruchamiane na wielu wฤzลach DataNode, co uniemoลผliwiaลo aktualizowanie i modyfikowanie danych na wielu wฤzลach (wersje Hive starsze niลผ 0.13).
Hive obsลuguje rรณwnieลผ โczytaj wiele, pisz razโ wzรณr, dziฤki czemu w nowszych wersjach tabelฤ moลผna uaktualniฤ po wstawieniu.
UWAGA: Nowsze wersje Hive zawierajฤ ulepszone funkcje. W Hive 0.14 wprowadzono nowe funkcje UPDATE i DELETE, a pรณลบniejsze wersje dodaลy peลnฤ obsลugฤ transakcji ACID.
Poniลผsza tabela podsumowuje porรณwnanie.
| WYGLฤD | Relacyjna baza danych | Ula Apache |
|---|---|---|
| Walidacja schematu | Na piลmie | W trakcie czytania |
| Typowa objฤtoลฤ danych | Gigabajty na terabajty | Terabajty na petabajty |
| Obciฤ ลผenie pracฤ | Odczyty i zapisy OLTP na poziomie wiersza | Peลna analiza wsadowa |
| Jฤzyk zapytaล | SQL | HQL, dialekt inspirowany SQL |
| Egzekucja | Silnik bazy danych | Rozproszone zadania klastra |
Ul Architektura
Poniลผszy diagram wyjaลnia Apache Architektura Hive w szczegรณลach.
Hive skลada siฤ z 3 gลรณwnych czฤลci:
- Klienci Hive
- Usลugi Hive
- Przechowywanie i przetwarzanie w Hive
Klienci Hive
Hive oferuje rรณลผne sterowniki do komunikacji z rรณลผnymi typami aplikacji. W przypadku aplikacji opartych na Thrift, Hive udostฤpnia klienta Thrift do komunikacji.
Dla litu szacuje siฤ Java Powiฤ zane aplikacje udostฤpniajฤ sterowniki JDBC. Do kaลผdego innego typu aplikacji udostฤpnia sterowniki ODBC. Ci klienci i sterowniki z kolei komunikujฤ siฤ z serwerem Hive w usลugach Hive.
Usลugi ula
Interakcje klienta z Hive odbywajฤ siฤ za poลrednictwem usลug Hive. Jeลli klient chce wykonaฤ jakฤ kolwiek operacjฤ zwiฤ zanฤ z zapytaniem w Hive, musi siฤ komunikowaฤ za poลrednictwem usลug Hive.
Interfejs wiersza poleceล dziaลa jak usลuga Hive dla operacji DDL. Wszystkie sterowniki komunikujฤ siฤ z serwerem Hive i sterownikiem gลรณwnym w usลugach Hive, jak pokazano na powyลผszym diagramie architektury.
Sterownik w usลugach Hive jest sterownikiem gลรณwnym: komunikuje siฤ z JDBC, ODBC i innymi aplikacjami specyficznymi dla klienta, a nastฤpnie przekazuje ich ลผฤ dania do metamagazynu i systemu plikรณw w celu dalszego przetwarzania.
Pamiฤฤ masowa i komputery Hive
Usลugi Hive, takie jak metamagazyn, system plikรณw i klient zadaล, komunikujฤ siฤ z magazynem Hive i wykonujฤ nastฤpujฤ ce czynnoลci:
- Informacje metadane dotyczฤ ce tabel utworzonych w Hive sฤ przechowywane w Hive baza danych metastore.
- Wyniki zapytania i dane zaลadowane do tabel sฤ przechowywane w klastrze Hadoop na HDFS.
Przepลyw wykonywania zadaล
Poniลผszy diagram tracto jedno zapytanie z interfejsu uลผytkownika do DataNodes i z powrotem.
Z powyลผszego diagramu moลผemy zrozumieฤ przepลyw wykonywania zadaล w Hive z Hadoop. Przepลyw danych w Hive przebiega wedลug nastฤpujฤ cego schematu.
- Wykonywanie zapytania z poziomu interfejsu uลผytkownika (UI)
- Sterownik wspรณลpracuje z kompilatorem w celu uzyskania planu. (Tutaj plan odnosi siฤ do procesu wykonywania zapytania i zwiฤ zanego z nim gromadzenia metadanych.)
- Kompilator tworzy plan wykonania zadania. Kompilator komunikuje siฤ z metamagazynem, aby pobraฤ ลผฤ danie metadanych.
- Metamagazyn wysyลa informacje o metadanych z powrotem do kompilatora
- Kompilator komunikuje siฤ ze sterownikiem, podajฤ c proponowany plan wykonania zapytania
- Sterownik wysyลa plany wykonania do silnika wykonawczego
- Silnik wykonawczy (EE) dziaลa jako pomost miฤdzy Hive i Hadoop, przetwarzajฤ
c zapytanie, w tym operacje DFS:
- EE najpierw kontaktuje siฤ z NameNode, a nastฤpnie z DataNode, aby pobraฤ wartoลci zapisane w tabelach.
- EE pobiera ลผฤ dane rekordy z wฤzลรณw danych. Rzeczywiste dane tabelaryczne znajdujฤ siฤ tylko w wฤzลach danych; z wฤzลa nazw pobiera tylko metadane dla zapytania.
- Gromadzi rzeczywiste dane z wฤzลรณw danych powiฤ zanych ze wspomnianym zapytaniem
- EE komunikuje siฤ dwukierunkowo z metamagazynem w celu wykonywania operacji DDL (jฤzyka definicji danych), takich jak: UTWรRZ, USUล I ZMIEล w tabelach i bazach danych. Metamagazyn przechowuje tylko nazwy baz danych, tabel i kolumn.
- EE z kolei komunikuje siฤ z demonami Hadoop, takimi jak NameNode, DataNodes i job tracker do wykonania zapytania na systemie plikรณw Hadoop
- Pobieranie wynikรณw ze sterownika
- Wysyลanie wynikรณw do silnika wykonawczego. Po pobraniu wynikรณw z wฤzลรณw danych do EE, silnik wysyลa je z powrotem do sterownika i do interfejsu uลผytkownika (front-end).
Hive utrzymuje kontakt z systemem plikรณw Hadoop i jego demonami za poลrednictwem silnika wykonawczego. Przerywana strzaลka na diagramie pokazuje tฤ komunikacjฤ.
Rรณลผne tryby Hive
Hive moลผe dziaลaฤ w dwรณch trybach, w zaleลผnoลci od rozmiaru wฤzลรณw danych w Hadoop. Tryby te to:
- Tryb lokalny
- Tryb MapReduce
Kiedy uลผywaฤ trybu lokalnego
- Jeลli Hadoop jest zainstalowany w trybie pseudorozproszonym z jednym wฤzลem danych, w tym trybie uลผywamy Hive
- Jeลli rozmiar danych jest na tyle maลy, ลผe moลผna go ograniczyฤ do jednej lokalnej maszyny, moลผemy uลผyฤ tego trybu
- Przetwarzanie bฤdzie bardzo szybkie w przypadku mniejszych zestawรณw danych znajdujฤ cych siฤ na komputerze lokalnym
Kiedy uลผywaฤ trybu MapReduce
- Jeลli Hadoop ma wiele wฤzลรณw danych i dane sฤ rozproszone pomiฤdzy rรณลผnymi wฤzลami, w tym trybie uลผywamy Hive
- Dziaลa na duลผych iloลciach danych, a zapytanie jest wykonywane rรณwnolegle
- W tym trybie moลผna uzyskaฤ lepszฤ wydajnoลฤ przetwarzania duลผych zbiorรณw danych
W Hive moลผemy ustawiฤ wลaลciwoลฤ okreลlajฤ cฤ tryb dziaลania Hive. Domyลlnie dziaลa w trybie MapReduce, a w trybie lokalnym moลผna uลผyฤ nastฤpujฤ cego ustawienia:
SET mapred.job.tracker=local;
Od wersji Hive 0.7 obsลuguje tryb, ktรณry automatycznie uruchamia zadania MapReduce w trybie lokalnym. W Hive 4.x domyลlnym silnikiem jest Apache Tez, wiฤc ta wลaลciwoลฤ ma zastosowanie do starszej ลcieลผki MapReduce.
Co to jest Hive Server2 (HS2)?
HiveServer2 (HS2) to interfejs serwerowy, ktรณry wykonuje nastฤpujฤ ce funkcje:
- Umoลผliwia zdalnym klientom wykonywanie zapytaล wzglฤdem Hive
- Pobiera wyniki tych zapytaล
Obecne wersje dodajฤ zaawansowane funkcje oparte na Thrift RPC, takie jak:
- Wspรณลbieลผnoลฤ wielu klientรณw
- Uwierzytelnianie
HS2 stoi za Beeline i kaลผdฤ sesjฤ JDBC lub ODBC, dlatego zastฤ piล interfejs wiersza poleceล Hive dla pojedynczego uลผytkownika. Operatorzy HiveQL i wbudowane funkcje odniesienie jest naturalnym nastฤpnym krokiem.


