W tym samouczku nauczysz się:
- Co to jest Hive?
- Architektura ula
- Różne tryby ula
- Co to jest Hive Server2 (HS2)?
Co to jest Hive?
Hive to narzędzie ETL i hurtowni danych opracowane na podstawie rozproszonego systemu plików Hadoop (HDFS). Hive ułatwia pracę przy wykonywaniu takich operacji, jak
- Hermetyzacja danych
- Zapytania ad hoc
- Analiza ogromnych zbiorów danych
Ważne cechy Hive
- W Hive najpierw tworzone są tabele i bazy danych, a następnie dane są ładowane do tych tabel.
- Hive jako hurtownia danych zaprojektowana do zarządzania tylko danymi strukturalnymi przechowywanymi w tabelach i wykonywania zapytań.
- Podczas radzenia sobie z danymi strukturalnymi Map Reduce nie ma funkcji optymalizacji i użyteczności, takich jak UDF, ale platforma Hive ma. Optymalizacja zapytań odnosi się do efektywnego sposobu wykonywania zapytań pod względem wydajności.
- Język Hive inspirowany SQL oddziela użytkownika od złożoności programowania Map Reduce. Ponownie wykorzystuje znane koncepcje ze świata relacyjnych baz danych, takie jak tabele, wiersze, kolumny i schematy itp. W celu ułatwienia nauki.
- Programowanie Hadoop działa na płaskich plikach. W związku z tym Hive może używać struktur katalogów do „partycjonowania” danych w celu zwiększenia wydajności niektórych zapytań.
- Nowy i ważny składnik Hive, tj. Metastore używany do przechowywania informacji o schemacie. Ten Metastore zazwyczaj znajduje się w relacyjnej bazie danych. Możemy wchodzić w interakcje z Hive za pomocą metod takich jak
- Web GUI
- Interfejs Java Database Connectivity (JDBC)
- Większość interakcji odbywa się za pośrednictwem interfejsu wiersza poleceń (CLI). Hive zapewnia interfejs wiersza polecenia do pisania zapytań programu Hive przy użyciu języka zapytań Hive (HQL)
- Ogólnie składnia języka HQL jest podobna do składni języka SQL, którą zna większość analityków danych. Poniższe przykładowe zapytanie wyświetla wszystkie rekordy obecne we wspomnianej nazwie tabeli.
- Przykładowe zapytanie : Wybierz * z
- Przykładowe zapytanie : Wybierz * z
- Hive obsługuje cztery formaty plików: TEXTFILE, SEQUENCEFILE, ORC i RCFILE (Record Columnar File).
- W przypadku magazynu metadanych pojedynczego użytkownika Hive używa bazy danych Derby, a dla przypadku wielu metadanych użytkownika lub udostępnionych metadanych Hive używa MYSQL.
Aby skonfigurować MySQL jako bazę danych i przechowywać informacje o metadanych, zapoznaj się z samouczkiem „Instalacja i konfiguracja HIVE i MYSQL”
Niektóre z kluczowych punktów dotyczących Hive:
- Główna różnica między HQL i SQL polega na tym, że zapytanie Hive jest wykonywane w infrastrukturze Hadoop, a nie w tradycyjnej bazie danych.
- Wykonywanie zapytania Hive będzie podobne do serii automatycznie generowanych map, redukujących zadania.
- Hive obsługuje koncepcje partycji i zasobników w celu łatwego pobierania danych, gdy klient wykonuje zapytanie.
- Hive obsługuje niestandardowe UDF (User Defined Functions) do czyszczenia danych, filtrowania itp. Zgodnie z wymaganiami programistów można zdefiniować UDF Hive.
Relacyjne bazy danych Hive Vs: -
Korzystając z Hive, możemy wykonywać pewne specyficzne funkcje, których nie można osiągnąć w relacyjnych bazach danych. W przypadku ogromnej ilości danych w peta-bajtach ważne jest wysyłanie zapytań i uzyskiwanie wyników w ciągu kilku sekund. Hive robi to dość wydajnie, szybko przetwarza zapytania i generuje wyniki w sekundach.
Zobaczmy teraz, co sprawia, że Hive jest tak szybki.
Poniżej przedstawiono niektóre kluczowe różnice między Hive a relacyjnymi bazami danych;
Relacyjne bazy danych to „ Schemat przy odczycie i Schemat przy zapisie ”. Najpierw utwórz tabelę, a następnie wstaw dane do konkretnej tabeli. W tabelach relacyjnej bazy danych można wykonywać funkcje, takie jak wstawienia, aktualizacje i modyfikacje.
Hive to „ Schemat tylko do odczytu ”. Tak więc funkcje takie jak aktualizacja, modyfikacje itp. Nie działają z tym. Ponieważ zapytanie Hive w typowym klastrze działa na wielu węzłach danych. Dlatego nie jest możliwe aktualizowanie i modyfikowanie danych w wielu węzłach. (Wersje Hive poniżej 0.13)
Ponadto Hive obsługuje wzorzec „ CZYTAJ WIELE PISZ raz ”. Oznacza to, że po wstawieniu tabeli możemy zaktualizować tabelę w najnowszych wersjach Hive.
UWAGA : Jednak nowa wersja Hive zawiera zaktualizowane funkcje. Wersje Hive (Hive 0.14) zawierają opcje aktualizacji i usuwania jako nowe funkcje
Architektura ula
Powyższy zrzut ekranu szczegółowo wyjaśnia architekturę Apache Hive
Ula składa się głównie z 3 podstawowych części
- Klienci Hive
- Usługi ula
- Hive Storage and Computing
Klienci Hive:
Hive zapewnia różne sterowniki do komunikacji z różnymi typami aplikacji. W przypadku aplikacji opartych na oszczędności zapewni klientowi Thrift do komunikacji.
W przypadku aplikacji związanych z językiem Java udostępnia sterowniki JDBC. Poza jakimikolwiek typami aplikacji dostępne są sterowniki ODBC. Ci klienci i sterowniki z kolei ponownie komunikują się z serwerem Hive w usługach Hive.
Usługi ula:
Interakcje klienta z usługą Hive można wykonywać za pośrednictwem usług Hive. Jeśli klient chce wykonać jakiekolwiek operacje związane z zapytaniami w programie Hive, musi komunikować się za pośrednictwem usług Hive.
CLI to interfejs wiersza polecenia działający jako usługa Hive dla operacji DDL (język definicji danych). Wszystkie sterowniki komunikują się z serwerem Hive i głównym sterownikiem w usługach Hive, jak pokazano na powyższym diagramie architektury.
Sterownik obecny w usługach Hive reprezentuje główny sterownik i komunikuje wszystkie typy JDBC, ODBC i inne aplikacje klienckie. Sterownik będzie przetwarzał te żądania z różnych aplikacji do meta-sklepu i systemów terenowych w celu dalszego przetwarzania.
Hive Storage and Computing:
Usługi Hive, takie jak Meta store, File System i Job Client, z kolei komunikują się z magazynem Hive i wykonują następujące czynności
- Informacje o metadanych tabel utworzonych w programie Hive są przechowywane w „Meta-baza danych magazynu” programu Hive.
- Wyniki zapytania i dane załadowane w tabelach będą przechowywane w klastrze Hadoop na HDFS.
Przebieg egzekucji ofert pracy:
Na powyższym zrzucie ekranu możemy zrozumieć przepływ wykonywania zadań w Hive z Hadoop
Przepływ danych w gałęzi zachowuje się według następującego wzorca;
- Wykonywanie zapytania z interfejsu użytkownika (interfejsu użytkownika)
- Sterownik współdziała z kompilatorem w celu uzyskania planu. (Tutaj plan odnosi się do wykonania zapytania) i związane z nim zbieranie informacji o metadanych
- Kompilator tworzy plan zadania do wykonania. Kompilator komunikujący się ze sklepem Meta w celu pobrania żądania metadanych
- Magazyn metadanych wysyła informacje o metadanych z powrotem do kompilatora
- Kompilator komunikujący się ze Kierowcą z proponowanym planem wykonania zapytania
- Kierowca wysyłający plany wykonania do silnika wykonawczego
- Execution Engine (EE) działa jako pomost między Hive i Hadoop w celu przetworzenia zapytania. Do operacji DFS.
- EE powinien najpierw skontaktować się z Name Node, a następnie z węzłami Data, aby uzyskać wartości przechowywane w tabelach.
- EE pobierze żądane rekordy z węzłów danych. Rzeczywiste dane tabel znajdują się tylko w węźle danych. Podczas gdy z Name Node pobiera tylko informacje o metadanych dla zapytania.
- Zbiera rzeczywiste dane z węzłów danych związanych z wymienionym zapytaniem
- Silnik wykonawczy (EE) komunikuje się dwukierunkowo z magazynem Meta obecnym w Hive w celu wykonania operacji DDL (Data Definition Language). Tutaj wykonywane są operacje DDL, takie jak CREATE, DROP i ALTERING tabele i bazy danych. Magazyn meta będzie przechowywać tylko informacje o nazwie bazy danych, nazwach tabel i nazwach kolumn. Pobierze dane związane z wymienionym zapytaniem.
- Silnik wykonawczy (EE) z kolei komunikuje się z demonami Hadoop, takimi jak węzeł nazwy, węzły danych i moduł śledzenia zadań, aby wykonać zapytanie w 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, wyniki zostaną przesłane z powrotem do sterownika i do interfejsu użytkownika (interfejs użytkownika)
Hive Stały kontakt z systemem plików Hadoop i jego demonami za pośrednictwem silnika wykonywania. Kropkowana strzałka na diagramie przepływu zadań przedstawia komunikację silnika wykonania z demonami Hadoop.
Różne tryby ula
Hive może działać w dwóch trybach w zależności od rozmiaru węzłów danych na platformie Hadoop.
Te tryby to:
- Tryb lokalny
- Tryb redukcji mapy
Kiedy używać trybu lokalnego:
- Jeśli Hadoop jest zainstalowany w trybie pseudo z jednym węzłem danych, w tym trybie używamy Hive
- Jeśli rozmiar danych jest mniejszy lub ograniczony do jednej maszyny lokalnej, możemy skorzystać z tego trybu
- Przetwarzanie będzie bardzo szybkie na mniejszych zestawach danych obecnych na komputerze lokalnym
Kiedy używać trybu zmniejszania mapy:
- Jeśli Hadoop ma wiele węzłów danych, a dane są rozproszone w różnych węzłach, w tym trybie używamy Hive
- Będzie działać na dużej ilości zestawów danych i zapytań, które będą wykonywane równolegle
- W tym trybie można uzyskać przetwarzanie dużych zbiorów danych z lepszą wydajnością
W Hive możemy ustawić tę właściwość, aby wspomnieć, który tryb Hive może działać? Domyślnie działa w trybie zmniejszania mapy, aw trybie lokalnym możesz mieć następujące ustawienia.
Hive do pracy w trybie lokalnym
SET mapred.job.tracker = local;
Od wersji Hive 0.7 obsługuje tryb automatycznego uruchamiania mapowania zadań w trybie lokalnym.
Co to jest Hive Server2 (HS2)?
HiveServer2 (HS2) to interfejs serwera, który wykonuje następujące funkcje:
- Umożliwia klientom zdalnym wykonywanie zapytań względem Hive
- Pobierz wyniki wspomnianych zapytań
Od najnowszej wersji ma kilka zaawansowanych funkcji opartych na Thrift RPC, takich jak;
- Współbieżność wielu klientów
- Poświadczenie
Podsumowanie:
Hive to narzędzie ETL i hurtowni danych znajdujące się na szczycie ekosystemu Hadoop i używane do przetwarzania ustrukturyzowanych i półstrukturalnych danych.
- Hive to baza danych obecna w ekosystemie Hadoop, która wykonuje operacje DDL i DML oraz zapewnia elastyczny język zapytań, taki jak HQL, w celu lepszego wykonywania zapytań i przetwarzania danych.
- Zapewnia tak wiele funkcji w porównaniu do RDMS, który ma pewne ograniczenia.
Logika specyficzna dla użytkownika w celu spełnienia wymagań klienta.
- Zapewnia możliwość pisania i wdrażania niestandardowych zdefiniowanych skryptów i funkcji zdefiniowanych przez użytkownika.
- Ponadto zapewnia partycje i zasobniki do logiki specyficznej dla pamięci masowej.