Co to jest ul? Architectura i tryby
Co to jest ul?
Hive to narzędzie ETL i Data warehousing opracowane na bazie Hadoop Distributed File System (HDFS). Hive ułatwia wykonywanie operacji takich jak
- Enkapsulacja danych
- Zapytania doraźne
- 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 przeznaczona do zarządzania i wysyłania zapytań wyłącznie do danych strukturalnych przechowywanych w tabelach.
- Jeśli chodzi o dane strukturalne, MapRedukcja nie ma funkcji optymalizacji i użyteczności, takich jak UDF, ale struktura Hive tak. 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 Map Reduce. Ponownie wykorzystuje znane koncepcje ze świata relacyjnych baz danych, takie jak tabele, wiersze, kolumny i schemat itp., aby ułatwić naukę.
- Programowanie Hadoopa działa na plikach płaskich. Dlatego Hive może używać struktur katalogów do „partycjonowania” danych w celu poprawy wydajności niektórych zapytań.
- Nowy i ważny komponent Hive, czyli Metastore służący do przechowywania informacji o schemacie. Ten Metastore 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 zwykle odbywa się za pośrednictwem interfejsu wiersza poleceń (CLI). Hive udostępnia interfejs CLI do pisania zapytań Hive przy użyciu języka zapytań Hive (HQL)
- Ogólnie składnia HQL jest podobna do SQL składnia znana większości analityków danych. Poniższe przykładowe zapytanie wyświetla wszystkie rekordy występujące we wspomnianej nazwie tabeli.
- Przykładowe zapytanie : Wybierz spośród
- Hive obsługuje cztery formaty plików PLIK TEKSTOWY, PLIK SEKWENCYJNY, ORC i PLIK RC (Nagraj plik kolumnowy).
- Do przechowywania metadanych pojedynczego użytkownika Hive używa bazy danych Derby, a do przechowywania metadanych wielu użytkowników lub współdzielonych metadanych Hive używa bazy MYSQL.
Do ustawienia MySQL jako bazę danych i do przechowywania metadanych. Sprawdź samouczek „Instalacja i konfiguracja HIVE i MYSQL”
Niektóre kluczowe punkty dotyczące 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.
- Wykonanie zapytania Hive będzie przypominać serię automatycznie generowanych zadań zmniejszania mapy.
- Hive obsługuje koncepcje partycjonowania i zasobników, aby ułatwić pobieranie danych podczas wykonywania zapytania przez klienta.
- Hive obsługuje niestandardowe UDF (funkcje zdefiniowane przez użytkownika) do czyszczenia, filtrowania danych itp. Zgodnie z wymaganiami programistów można zdefiniować UDF Hive.
Hive kontra relacyjne bazy danych
Używając Hive, możemy wykonać pewne specyficzne funkcje, których nie można osiągnąć w relacyjnych bazach danych. W przypadku ogromnej ilości danych zapisanych w petabajtach ważne jest wysyłanie do nich zapytań i uzyskiwanie wyników w ciągu kilku sekund. A Hive robi to całkiem sprawnie, szybko przetwarza zapytania i generuje wyniki w ciągu sekundy.
Zobaczmy teraz, co sprawia, że Hive jest tak szybki.
Poniżej przedstawiono niektóre kluczowe różnice między bazą danych Hive a bazami danych relacyjnymi:
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 relacyjnych baz danych można wykonywać funkcje takie jak wstawiania, aktualizacje i modyfikacje.
Ul jest „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. Nie jest więc możliwe aktualizowanie i modyfikowanie danych na wielu węzłach. (Wersje Hive poniżej 0.13)
Hive obsługuje także „CZYTAJ Wiele, NAPISZ raz" wzór. Oznacza to, że po wstawieniu tabeli możemy zaktualizować tabelę do najnowszych wersji Hive.
UWAGA: Jednak nowa wersja Hive zawiera zaktualizowane funkcje. Wersje Hive (Hive 0.14) zawierają opcje aktualizacji i usuwania jako nowe funkcje
Ul Architektura
Powyższy zrzut ekranu wyjaśnia Apache Architektura Hive w szczegółach
Ul składa się głównie z 3 głównych części
- Klienci Hive
- Usługi ula
- Pamięć masowa i komputery Hive
Klienci Hive:
Hive zapewnia różne sterowniki do komunikacji z różnymi typami aplikacji. W przypadku aplikacji opartych na Thrift zapewniony zostanie klient Thrift do komunikacji.
W razie zamówieenia projektu Java powiązanych aplikacji, udostępnia sterowniki JDBC. Oprócz wszelkiego rodzaju aplikacji dostarczane 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 Hive mogą być wykonywane za pośrednictwem Hive Services. Jeśli klient chce wykonać jakiekolwiek operacje związane z zapytaniami w Hive, musi komunikować się za pośrednictwem Hive Services.
CLI to interfejs wiersza poleceń działający jako usługa Hive dla operacji DDL (Data Definition Language). Wszystkie sterowniki komunikują się z serwerem Hive i z 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 się ze wszystkimi typami aplikacji JDBC, ODBC i innymi specyficznymi aplikacjami klienckimi. Sterownik będzie przetwarzał te żądania z różnych aplikacji do metamagazynów i systemów terenowych w celu dalszego przetwarzania.
Pamięć masowa i przetwarzanie Hive:
Usługi Hive, takie jak magazyn Meta, system plików i klient zadań, komunikują się z kolei z magazynem Hive i wykonują następujące czynności
- Informacje o metadanych tabel utworzonych w Hive są przechowywane w „bazie danych Meta Storage” Hive.
- Wyniki zapytania i dane załadowane do tabel zostaną zapisane w klastrze Hadoop na systemie plików HDFS.
Przebieg realizacji zadania:
Z powyższego zrzutu ekranu możemy zrozumieć przepływ wykonywania zadań w Hive za pomocą Hadoop
Przepływ danych w Hive zachowuje się według następującego wzorca;
- Wykonywanie zapytania z interfejsu użytkownika (interfejs użytkownika)
- Sterownik współpracuje z kompilatorem w celu uzyskania planu. (Tutaj plan odnosi się do wykonania zapytania) procesu i związanego z nim gromadzenia informacji o metadanych
- Kompilator tworzy plan zadania do wykonania. Kompilator komunikujący się ze sklepem Meta w celu uzyskania żądania metadanych
- Magazyn meta wysyła informacje o metadanych z powrotem do kompilatora
- Kompilator komunikuje się ze Driverem z proponowanym planem wykonania zapytania
- Sterownik Wysyłający plany wykonania do silnika wykonawczego
- Execution Engine (EE) działa jako pomost między Hive i Hadoop w celu przetworzenia zapytania. Dla operacji DFS.
- EE powinien najpierw skontaktować się z węzłem nazw, a następnie z węzłami danych, aby uzyskać wartości zapisane w tabelach.
- EE pobierze żądane rekordy z węzłów danych. Rzeczywiste dane tabel znajdują się tylko w węźle danych. Podczas gdy z węzła nazw pobiera tylko informacje o metadanych dla zapytania.
- Gromadzi rzeczywiste dane z węzłów danych związanych ze wspomnianym zapytaniem
- Execution Engine (EE) komunikuje się dwukierunkowo z magazynem Meta obecnym w Hive, aby wykonywać operacje DDL (Data Definition Language). Tutaj wykonywane są operacje DDL, takie jak CREATE, DROP i ALTERING tabel i baz danych. Magazyn Meta będzie przechowywać informacje tylko o nazwie bazy danych, nazwach tabel i nazwach kolumn. Będzie pobierać dane związane z wymienionym zapytaniem.
- Execution Engine (EE) z kolei komunikuje się z demonami Hadoop, takimi jak węzeł nazw, węzeł danych i moduł śledzenia zadań, aby wykonać zapytanie w systemie plików Hadoop
- Pobieram wyniki ze sterownika
- Wysyłanie wyników do silnika wykonawczego. Po pobraniu wyników z węzłów danych do EE, wyśle wyniki z powrotem do sterownika i interfejsu użytkownika (frontend)
Hive Stały kontakt z systemem plików Hadoop i jego demonami poprzez silnik wykonawczy. Kropkowana strzałka na diagramie wykonywania zadań pokazuje komunikację aparatu wykonawczego z demonami Hadoop.
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 m.in.
- Tryb lokalny
- Tryb zmniejszania mapy
Kiedy używać trybu lokalnego:
- Jeśli Hadoop jest zainstalowany w trybie pseudo i ma jeden węzeł danych, w tym trybie używamy Hive
- Jeśli rozmiar danych jest mniejszy ze względu na ograniczenie do pojedynczej maszyny lokalnej, możemy skorzystać z tego trybu
- Przetwarzanie będzie bardzo szybkie w przypadku mniejszych zestawów danych znajdujących się 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 liczbie zestawów danych, a zapytanie będzie wykonywane równolegle
- W tym trybie można uzyskać lepszą wydajność przetwarzania dużych zbiorów danych
W Hive możemy ustawić tę właściwość, aby wskazać, w jakim trybie Hive może działać? Domyślnie działa w trybie Map Reduce, a w trybie lokalnym można mieć następujące ustawienie.
Hive do pracy w trybie lokalnym
USTAW mapred.job.tracker=lokalny;
Od wersji Hive 0.7 obsługuje tryb automatycznego uruchamiania zadań zmniejszania mapy w trybie lokalnym.
Co to jest Hive Server2 (HS2)?
HiveServer2 (HS2) to interfejs serwera, który realizuje następujące funkcje:
- Umożliwia zdalnym klientom wykonywanie zapytań względem Hive
- Pobierz wyniki wspomnianych zapytań
Od najnowszej wersji posiada kilka zaawansowanych funkcji opartych na Thrift RPC, takich jak;
- Współbieżność wielu klientów
- Uwierzytelnianie
Podsumowanie
Hive to narzędzie ETL i hurtowni danych oparte na ekosystemie Hadoop, służące do przetwarzania ustrukturyzowanych i półustrukturyzowanych danych.
- Hive to baza danych obecna w ekosystemie Hadoop, która wykonuje operacje DDL i DML oraz udostępnia elastyczny język zapytań, taki jak HQL, umożliwiający lepsze wyszukiwanie i przetwarzanie danych.
- Zapewnia tak wiele funkcji w porównaniu do RDMS, który ma pewne ograniczenia.
Dla logiki specyficznej dla użytkownika, aby spełnić wymagania klienta.
- Zapewnia możliwość pisania i wdrażania niestandardowych zdefiniowanych skryptów i funkcji zdefiniowanych przez użytkownika.
- Ponadto zapewnia partycje i zasobniki dla logiki specyficznej dla magazynu.