Architektura i polecenia Apache Hive: tryby, charakterystyka i aplikacje
Opublikowany: 2021-06-30Spis treści
Co to jest ul?
Ula Apache to narzędzie do magazynowania danych typu open source opracowane przez Facebooka do przetwarzania rozproszonego i analizy danych. Został opracowany na bazie rozproszonego systemu plików Hadoop (HDFS). Hive zapewnia mechanizm rzutowania struktury na dane w usłudze Hadoop. Do zapytania o te dane używany jest język podobny do języka SQL o nazwie HiveQL (HQL). Istnieje podobieństwo między tabelami w programie Hive i tabelami w relacyjnej bazie danych. Zapytania Hive mogą być łatwo napisane przez każdego, kto zna język SQL.
Kilka funkcji Hive to:
- Przechowywanie informacji o schemacie w bazie danych i przetworzonych danych w HDFS.
- Zaprojektowany dla OLAP.
- Językiem zapytań jest HiveQL lub HQL, który jest podobny do języka SQL.
- Jest szybki, znajomy, skalowalny i rozszerzalny.
Zastosowania ula
- Jest to rozproszona pamięć masowa Apache Hive.
- Dostępne są narzędzia, które umożliwiają użytkownikom łatwe wyodrębnianie, przekształcanie i ładowanie danych.
- W celu zapewnienia struktury oferowane są różne formaty danych.
- Hive może uzyskać dostęp do plików przechowywanych w rozproszonym systemie plików Hadoop (HDFS).
Komendy ula
Polecenia ula to:
- Język definicji danych (DDL): Tabele i inne obiekty w bazie danych są budowane i modyfikowane za pomocą tych poleceń.
- CREATE: Służy do tworzenia tabeli lub bazy danych.
- POKAŻ: Służy do pokazywania bazy danych, tabeli, właściwości itp.
- ALTER: Służy do wprowadzania zmian w istniejącej tabeli.
- OPISZ: Opisuje kolumny tabeli.
- TRUNCATE: Służy do trwałego obcinania i usuwania wierszy tabel.
- DELETE: Usuwa dane tabeli, ale można je przywrócić.
- Język manipulacji danymi (DML): używany do pobierania, przechowywania, modyfikowania, usuwania, wstawiania i aktualizowania danych w bazie danych.
- Składnia instrukcji LOAD, INSERT
LOAD data <LOCAL> inpath <ścieżka pliku> do tabeli [nazwa tabeli]
- Po załadowaniu danych komendy manipulacji danymi służą do pobierania danych.
- Funkcja agregująca Count służy do zliczania całkowitej liczby rekordów w tabeli.
- Słowo kluczowe „utwórz zewnętrzną” służy do tworzenia tabeli i określa lokalizację, w której zostanie utworzona tabela. Tabela EXTERNAL wskazuje na dowolną lokalizację HDFS do jej przechowywania.
- Polecenia wstawiania służą do ładowania tabeli Hive danych. „Wstaw nadpisz” służy do nadpisania istniejących danych, a „wstaw do” służy do dołączenia danych do istniejących danych.
- Tabela jest dzielona na partycje za pomocą polecenia „partycjonowana według” i podzielona na segmenty za pomocą polecenia „w klastrach”.
- Wstawianie danych generuje błędy, ponieważ partycja dynamiczna nie jest włączona. Dlatego w powłoce Hive należy ustawić następujące parametry.
ustaw hive.exec.dynamic.partition=prawda;
Aby włączyć partycje dynamiczne, domyślnie jest to fałsz
ustaw hive.exec.dynamic.partition.mode=nieścisłe;
- Polecenie „Upuść tabelę” usuwa dane i metadane tabeli
- Agregacja: Składnia:
Wybierz liczbę (kategoria DISTINCT) z nazwy tabeli;
Polecenie zliczy różne kategorie tabel 'cate'.
- Grupowanie: Składnia:
Wybierz kategorię, sumę (kwotę) z rekordów txt pogrupuj według kategorii
Zestaw wyników zostanie pogrupowany w jedną lub więcej kolumn.
- Operacja łączenia: wykonaj, aby połączyć pola z dwóch tabel przy użyciu wartości wspólnych dla każdej kolumny.
- Lewe sprzężenie zewnętrzne: W przypadku tabel A i B lewe sprzężenie zewnętrzne ma zawierać wszystkie rekordy „lewej” tabeli (A), nawet jeśli warunek złączenia nie znajdzie żadnego pasującego rekordu w „prawej” tabeli (B).
- Prawe połączenie zewnętrzne: Każdy wiersz z „prawej” tabeli (B) pojawi się w połączonym stole przynajmniej raz.
- Pełne sprzężenie: Połączona tabela będzie zawierać wszystkie rekordy z obu tabel. Połączona tabela będzie zawierać wszystkie rekordy z obu tabel.
Architektura ula
Architektura ula Apache jest pokazana na rysunku 1 .
Lista głównych komponentów
Główne elementy architektury ula to:
1. Klient ula
Różne aplikacje napisane w językach takich jak Java, Python, C++ itp. są komunikowane za pomocą różnych sterowników dostarczanych przez Hive. Może być napisany w dowolnym języku zgodnie z wyborem. Klienci i serwery z kolei komunikują się z serwerem Hive w usługach Hive.
Najczęściej dzieli się je na trzy typy:
- Klient Thrift: Opiera się na Apache Thrift, aby obsługiwać żądania od klienta Thrift. Klient Thrift będzie używany do komunikacji z aplikacjami opartymi na Thrift.
- Klient JDBC: JDBC jest dostępny dla aplikacji związanych z językiem Java. Aplikacje Java są połączone z Hive za pomocą sterownika JDBC. Ponadto wykorzystuje Thrift do komunikacji z serwerem Hive.
- Klient ODBC: Aplikacje oparte na protokole ODBC mogą łączyć się z Hive za pośrednictwem sterowników ODBC. Podobnie jak JDBC, używa Thrift do komunikacji z serwerem Hive.
2. Usługi ula
Usługi Hive zapewniają środki do interakcji Hive z Klientami. Wszelkie operacje związane z zapytaniami, które musi wykonać Klient, będą musiały być komunikowane za pośrednictwem usług Hire. W przypadku operacji języka definicji danych (DDL) interfejs wiersza polecenia działa jako usługa Hive.
Wszystkie sterowniki muszą komunikować się z serwerem Hive, a następnie z głównym sterownikiem w usługach Hive. Sterowniki w usługach Hive stanowią główny sterownik, który komunikuje się z konkretnymi aplikacjami Klienta oraz wszystkimi typami JDBC, ODBC itp. Żądania z różnych aplikacji są przetwarzane przez sterownik do metastore i systemów terenowych, które będą dalej przetwarzane.
Usługi oferowane przez Hive to:
- Beeline: Beeline to powłoka poleceń, w której użytkownik może przesyłać zapytania do systemu. Jest obsługiwany przez HiveServer2. Jest to klient JDBC oparty na SQLLINE CLI.
- Hive Server 2: Klienci mogą wykonywać zapytania względem gałęzi. Następca HiveServer1, umożliwia wykonywanie wielu zapytań od wielu klientów. Zapewnia najlepszą obsługę klientów z otwartym interfejsem API, takich jak JDBC i ODBC.
- Sterownik Hive: użytkownik przesyła instrukcje HiveQL do sterownika Hive za pomocą powłoki poleceń. Wysyła zapytanie do kompilatora i tworzy uchwyty sesji dla zapytania.
- Kompilator Hive: kompilator Hive służy do przekazywania zapytania. Korzystając z metadanych przechowywanych w magazynie metadanych, kompilator Hive przeprowadza analizę semantyczną i sprawdza typ w różnych blokach zapytań i wyrażeniach. Plan wykonania jest następnie generowany przez kompilator, którym jest DAG (Directed Acyclic Graph). Każdy etap DAG jest operacją na metadanych, operacją na HDFS lub zadaniem mapowania/redukowania.
- Optymalizator: Główną rolą optymalizatora jest wykonywanie operacji transformacji na planie wykonania. Zwiększa wydajność i skalowalność, dzieląc zadania.
- Silnik wykonawczy : po zakończeniu kroków kompilacji i optymalizacji rolą silnika wykonawczego jest wykonanie planu wykonania utworzonego przez kompilator. Plan jest wykonywany przy użyciu Hadoop w kolejności ich zależności.
- Metastore : Metastore to ogólnie relacyjna baza danych, która przechowuje informacje o metadanych związane ze strukturą tabel i partycji. Jest to centralne repozytorium, które obejmuje również przechowywanie informacji o kolumnach i typach kolumn. Informacje związane z serializatorem i deserializatorem są również przechowywane w Metastore, który jest wymagany do operacji odczytu/zapisu wraz z plikami HDFS, które przechowują dane. Interfejs Thrift jest udostępniany przez Metastore do wykonywania zapytań i manipulowania metadanymi Hive.
Metastore można skonfigurować w dwóch trybach:
- Zdalny: ten tryb jest przydatny w przypadku aplikacji innych niż Java, aw trybie zdalnym magazyn meta jest usługą Thrift.
- Wbudowany: w tym trybie klient może bezpośrednio wchodzić w interakcję z magazynem metadanych za pośrednictwem JDBC.
- HCatalog: Warstwa zarządzania tabelami i pamięcią masową dla usługi Hadoop to HCatalog. Dostępne są różne narzędzia do przetwarzania danych do odczytywania i zapisywania danych w siatce, takie jak Pig, MapReduce itp. Zbudowane na szczycie metastore Hive, dane tabelaryczne metastore Hive są udostępniane innym narzędziom do przetwarzania danych.
- WebHCat: WebHCat to interfejs HTTP i REST API dla HCatalog. Wykonuje operacje na metadanych Hive i oferuje usługę uruchamiania zadań Hadoop MapReduce (lub YARN), Pig, Hive.
3. Przetwarzanie i zarządzanie zasobami
Wykonywanie zapytań jest realizowane przez wewnętrzny framework MapReduce.
Struktura MapReduce to platforma programowa do przetwarzania dużych ilości danych w dużych klastrach sprzętu powszechnego użytku. Dane są dzielone na porcje, a następnie przetwarzane przez zadania redukujące mapę.
4. Przechowywanie rozproszone
Usługi Hive komunikują się z magazynem Hive w celu wykonywania następujących czynności:
- Hive "Baza danych magazynu Meta" zawiera informacje o metadanych tabel utworzonych w programie Hive.
- Klaster Hadoop w systemie HDFS będzie przechowywać wyniki zapytania i dane załadowane do tabel.
Różne tryby ula
W zależności od wielkości danych Hive może działać w dwóch trybach.
- Tryb lokalny
Lokalny tryb Hive jest używany, gdy
- Zainstalowany Hadoop ma jeden węzeł danych i jest instalowany w trybie pseudo.
- Rozmiar danych pojedynczego komputera lokalnego jest mniejszy.
- Szybkie przetwarzanie na lokalnych komputerach dzięki mniejszym zestawom danych.
- Tryb zmniejszania mapy
Tryb zmniejszania mapy w ulu jest używany, gdy
- Hadoop ma wiele węzłów danych z rozproszonymi danymi w różnych węzłach.
- Rozmiar danych jest większy i wymagane jest równoległe wykonanie zapytania.
- Duże zestawy danych mogą być przetwarzane z lepszą wydajnością.
Charakterystyka ula
- Dane są ładowane do tabel po utworzeniu tabel i baz danych.
- Hive może zarządzać tylko uporządkowanymi danymi przechowywanymi w tabelach i wykonywać ich zapytania.
- Struktura Hive ma funkcje optymalizacji i użyteczności podczas radzenia sobie z ustrukturyzowanymi danymi, których nie ma w Map Reduce.
- W celu ułatwienia użytkowania język inspirowany Hive SQL jest prostszym podejściem w porównaniu ze złożonym językiem programowania Map Reduce. W Hive używane są znane koncepcje tabel, wierszy, kolumn itp.
- Aby zwiększyć wydajność zapytań, Hive może partycjonować dane przy użyciu struktury katalogów.
- Hive zawiera ważny komponent o nazwie „Metastore”, który znajduje się w relacyjnej bazie danych i przechowuje informacje o schemacie. Do interakcji z Hive można użyć dwóch metod: Web GUI i Java Database Connectivity (JDBC).
- W większości interakcji używany jest interfejs wiersza poleceń (CLI). Interfejs wiersza polecenia służy do pisania zapytań Hive przy użyciu języka zapytań Hive (HQL).
- Składnia HQL jest podobna do składni SQL.
- Hive obsługuje cztery formaty plików; TEXTFILE, SEQUENCEFILE, ORC i RCFILE (Rekordowy plik kolumnowy).
Wniosek
Apache Hive to narzędzie do magazynowania danych typu open source, składające się z głównych komponentów, takich jak klienci Hive, usługi Hive, struktura przetwarzania i zarządzanie zasobami oraz rozproszony magazyn.
Jest zbudowany na bazie ekosystemu Hadoop do przetwarzania struktur i częściowo ustrukturyzowanych danych. Interfejs użytkownika udostępniany przez Hive umożliwia użytkownikowi przesyłanie zapytań w języku zapytań Hive (HQL). Jest to przekazywane do kompilatora w celu wygenerowania planu wykonania. Plan jest ostatecznie realizowany przez silnik wykonawczy.
Jeśli chcesz dowiedzieć się więcej o Big Data, sprawdź nasz program PG Diploma in Software Development Specialization in Big Data, który jest przeznaczony dla pracujących profesjonalistów i zawiera ponad 7 studiów przypadków i projektów, obejmuje 14 języków programowania i narzędzi, praktyczne praktyczne warsztaty, ponad 400 godzin rygorystycznej pomocy w nauce i pośrednictwie pracy w najlepszych firmach.
Sprawdź nasze inne kursy inżynierii oprogramowania w upGrad.