Znaczące zmiany wersji w usłudze HDInsight 4.0 i korzyści

Usługa HDInsight 4.0 ma kilka zalet w usłudze HDInsight 3.6. Oto omówienie nowości w usłudze Azure HDInsight 4.0.

# Składnik systemu operacyjnego Wersja usługi HDInsight 4.0 Wersja usługi HDInsight 3.6
1 Apache Hadoop 3.1.1 2.7.3
2 Apache HBase 2.1.6 1.1.2
3 Apache Hive 3.1.0 1.2.1, 2.1 (LLAP)
4 Apache Kafka 2.1.1, 2.4(GA) 1,1
5 Apache Phoenix 5 4.7.0
6 Apache Spark 2.4.4, 3.0.0 (wersja zapoznawcza) 2,2
7 Apache TEZ 0.9.1 0.7.0
8 Apache ZooKeeper 3.4.6 3.4.6
9 Apache Kafka 2.1.1, 2.4.1 (wersja zapoznawcza) 1,1
10 Apache Ranger 1.1.0 0.7.0

Obciążenia i funkcje

Hive

  • Funkcje zaawansowane
    • Zarządzanie obciążeniami LLAP
    • Obsługa łączników JDBC, Druid i Kafka
    • Lepsze funkcje SQL — ograniczenia i wartości domyślne
    • Klucze zastępcze
    • Schemat informacji.
  • Zaleta wydajności
    • Buforowanie wyników — Buforowanie wyniki zapytania umożliwiają ponowne użycie wcześniej obliczonego wyniku zapytania
    • Dynamiczne zmaterializowane widoki — wstępne obliczanie podsumowań
    • Ulepszenia wydajności ACID V2 zarówno w formacie magazynu, jak i w aparacie wykonywania
  • Zabezpieczeń
    • Zgodność z RODO włączona w transakcjach apache Hive
    • Autoryzacja wykonywania funkcji UDF programu Hive w module ranger

HBase

  • Funkcje zaawansowane
    • Procedura 2. Procedura V2 lub procv2 to zaktualizowana struktura do wykonywania wieloetapowych operacji administracyjnych bazy danych HBase.
    • W pełni wyłączona ścieżka odczytu/zapisu sterty.
    • Kompaktowanie w pamięci
    • Klaster HBase obsługuje usługę ADLS Gen2 w warstwie Premium
  • Zaleta wydajności
    • Funkcja przyspieszonych zapisów korzysta z dysków zarządzanych SSD w warstwie Azure Premium w celu zwiększenia wydajności usługi Apache HBase Write Ahead Log (WAL).
  • Zabezpieczeń
    • Wzmocnienie zabezpieczeń obu indeksów pomocniczych, które obejmują lokalne i globalne

Kafka

  • Funkcje zaawansowane
    • Dystrybucja partycji platformy Kafka w domenach błędów platformy Azure
    • Obsługa kompresji Zstd
    • Ponowne równoważenie przyrostowe konsumentów platformy Kafka
    • Obsługa mirrormaker 2.0
  • Zaleta wydajności
    • Ulepszona wydajność agregacji okien na platformie Kafka Strumienie
    • Ulepszona odporność brokera dzięki zmniejszeniu zużycia pamięci podczas konwersji komunikatów
    • Ulepszenia protokołu replikacji na potrzeby szybkiego przejścia w tryb failover lidera
  • Zabezpieczeń
    • Kontrola dostępu do tworzenia tematu dla określonych tematów/prefiksu tematu
    • Weryfikacja nazwy hosta w celu zapobiegania atakom typu man-in-the-middle konfiguracji protokołu SSL
    • Ulepszona obsługa szyfrowania dzięki szybszej implementacji protokołu Transport Layer Security (TLS) i CRC32C

Spark

  • Funkcje zaawansowane
    • Obsługa przesyłania strumieniowego ze strukturą dla orc
    • Możliwość integracji z nową funkcją wykazu magazynu metadanych
    • Obsługa przesyłania strumieniowego ze strukturą dla biblioteki przesyłania strumieniowego Hive
    • Przezroczyste zapisywanie w magazynie Hive
    • Spark Cruise — automatyczny system ponownego użycia obliczeń dla platformy Spark.
  • Zaleta wydajności
    • Buforowanie wyników — Buforowanie wyniki zapytania umożliwiają ponowne użycie wcześniej obliczonego wyniku zapytania
    • Dynamiczne zmaterializowane widoki — wstępne obliczanie podsumowań
  • Zabezpieczeń
    • Zgodność z RODO włączona dla transakcji platformy Spark

Odnajdywanie i naprawianie partycji Hive

Hive automatycznie odnajduje i synchronizuje metadane partycji w magazynie metadanych Hive. Właściwość discover.partitions tabeli włącza i wyłącza synchronizację systemu plików z partycjami. W tabelach podzielonych na partycje zewnętrzne ta właściwość jest domyślnie włączona (true). Gdy usługa magazynu metadanych Hive (HMS) jest uruchamiana w trybie zdalnej usługi, wątek (PartitionManagementTask) w tle jest okresowo uruchamiany co 300 s (konfigurowalny za pośrednictwem metastore.partition.management.task.frequency config), który wyszukuje tabele z właściwością discover.partitions tabeli ustawioną na wartość true i wykonuje naprawę msck w trybie synchronizacji.

Jeśli tabela jest tabelą transakcyjną, funkcja Exclusive Lock jest uzyskiwana dla tej tabeli przed wykonaniem operacji msck repair. Ta właściwość MSCK REPAIR TABLE table_name SYNC PARTITIONS tabeli nie jest już wymagana do ręcznego uruchamiania. Zakładając, że masz tabelę zewnętrzną utworzoną przy użyciu wersji programu Hive, która nie obsługuje odnajdywania partycji, włącz odnajdywanie partycji dla tabeli.

ALTER TABLE exttbl SET TBLPROPERTIES ('discover.partitions' = 'true');

Ustaw synchronizację partycji, które mają być wykonywane co 10 minut wyrażonych w sekundach: w konfiguracjach Programu Hive > ambari > na set metastore.partition.management.task.frequency 3600 lub więcej.

 Screenshot showing Ambari Hive config file with frequency value.

Ostrzeżenie

Po uruchomieniu management.task co 10 minut będzie występować presja na jednostki DTU serwera SQL.

Dane wyjściowe można sprawdzić w witrynie Microsoft Azure Portal.

Screenshot showing compute utilization graph.

Hive odrzuca metadane i odpowiadające im dane w dowolnej partycji utworzonej po okresie przechowywania. Czas przechowywania jest wyrażany przy użyciu cyfry i następującego znaku lub znaków. Hive odrzuca metadane i odpowiadające im dane w dowolnej partycji utworzonej po okresie przechowywania. Czas przechowywania jest wyrażany przy użyciu liczb i następujących znaków.

ms (milliseconds)
s (seconds)
m (minutes)
d (days)

Aby skonfigurować okres przechowywania partycji przez jeden tydzień.

ALTER TABLE employees SET TBLPROPERTIES ('partition.retention.period'='7d');

Metadane partycji i rzeczywiste dane dla pracowników w usłudze Hive są automatycznie usuwane po tygodniu.

Hive 3

Optymalizacje wydajności dostępne w programie Hive 3

OLAP Vectorization Dynamic Semijoin reduction Parquet support for vectorization with LLAP Automatic query cache (Dynamiczna wektoryzacja Wektoryzacji OLAP Dynamiczne semijoin reduction Parquet obsługa wektoryzacji przy użyciu automatycznej pamięci podręcznej zapytań LLAP).

Nowe funkcje SQL

Zmaterializowane widoki zastępcze klucze ograniczeń magazynu metadanych CachedStore.

Wektoryzacja OLAP

Wektoryzacja umożliwia programowi Hive przetwarzanie partii wierszy razem zamiast przetwarzania jednego wiersza naraz. Każda partia jest zwykle tablicą typów pierwotnych. Operacje są wykonywane w całym wektorze kolumn, co poprawia potoki instrukcji i użycie pamięci podręcznej. Wektorowe wykonywanie zestawów PTF, zestawień i grupowania.

Redukcja dynamiczna Semijoin

Znacznie poprawia wydajność sprzężeń selektywnych. Tworzy filtr blooma z jednej strony sprzężenia i filtruje wiersze z drugiej strony. Pomija skanowanie i dalszą ocenę wierszy, które nie kwalifikują sprzężenia.

Obsługa parquet na potrzeby wektoryzacji za pomocą protokołu LLAP

Wektoryzowane wykonywanie zapytań to funkcja, która znacznie zmniejsza użycie procesora CPU dla typowych operacji zapytań, takich jak

  • Skanuje
  • filtry
  • aggregate
  • Łączy

Wektoryzacja jest również implementowana dla formatu ORC. Platforma Spark używa również KtoTo le Stage Codegen i tej wektoryzacji (dla Parquet) od platformy Spark 2.0. Dodano kolumnę sygnatury czasowej dla wektoryzacji Parquet i formatu w obszarze LLAP.

Ostrzeżenie

Zapisy parquet są powolne, gdy konwersja na czas strefowy z sygnatury czasowej. Więcej informacji można znaleźć tutaj.

Automatyczna pamięć podręczna zapytań

  1. W przypadku hive.query.results.cache.enabled=trueprogramu każde zapytanie uruchamiane w programie Hive 3 przechowuje jego wynik w pamięci podręcznej.
  2. Jeśli tabela wejściowa ulegnie zmianie, program Hive eksmituje nieprawidłowe dane z pamięci podręcznej. Na przykład w przypadku przeprowadzania agregacji i zmiany tabeli podstawowej zapytania są uruchamiane najczęściej w pamięci podręcznej, ale nieaktualne zapytania są eksmitowane.
  3. Pamięć podręczna wyników zapytania działa tylko z zarządzanymi tabelami, ponieważ program Hive nie może śledzić zmian w tabeli zewnętrznej.
  4. Jeśli dołączasz tabele zewnętrzne i zarządzane, program Hive powraca do wykonywania pełnego zapytania. Pamięć podręczna wyników zapytania współpracuje z tabelami ACID. Jeśli zaktualizujesz tabelę ACID, program Hive automatycznie uruchomi zapytanie.
  5. Możesz włączyć i wyłączyć pamięć podręczną wyników zapytania z wiersza polecenia. Możesz to zrobić, aby debugować zapytanie.
  6. Wyłącz pamięć podręczną wyników zapytania, ustawiając następujący parametr na false: hive.query.results.cache.enabled=false
  7. Hive przechowuje pamięć podręczną wyników zapytania w pliku /tmp/hive/__resultcache__/. Domyślnie program Hive przydziela 2 GB dla pamięci podręcznej wyników zapytania. To ustawienie można zmienić, konfigurując następujący parametr w bajtach: hive.query.results.cache.max.size
  8. Zmiany przetwarzania zapytań: podczas kompilacji zapytań sprawdź pamięć podręczną wyników, aby sprawdzić, czy ma już wyniki zapytania. Jeśli występuje trafienie pamięci podręcznej, plan zapytania jest ustawiony na FetchTask wartość odczytaną z lokalizacji buforowanej.

Podczas wykonywania zapytania:

Parquet DataWriteableWriter polega na NanoTimeUtils przekonwertowaniu obiektu znacznika czasu na wartość binarną. To zapytanie wywołuje toString() obiekt znacznika czasu, a następnie analizuje ciąg.

  1. Jeśli pamięć podręczna wyników może być używana dla tego zapytania
    1. Zapytanie odczytuje FetchTask się z buforowanego katalogu wyników.
    2. Nie są wymagane żadne zadania klastra.
  2. Jeśli nie można użyć pamięci podręcznej wyników, uruchom zadania klastra w zwykły sposób
    1. Sprawdź, czy obliczone wyniki zapytania kwalifikują się do dodania do pamięci podręcznej wyników.
    2. Jeśli wyniki można buforować, tymczasowe wyniki wygenerowane dla zapytania są zapisywane w pamięci podręcznej wyników. W tym miejscu może być konieczne wykonanie kroków, aby upewnić się, że czyszczenie zapytania nie powoduje usunięcia katalogu wyników zapytania.

Funkcje języka SQL

Zmaterializowane widoki

Początkowa implementacja wprowadzona w programie Apache Hive 3.0.0 koncentruje się na wprowadzeniu zmaterializowanych widoków i automatycznego ponownego zapisywania zapytań na podstawie tych materializacji w projekcie. Zmaterializowane widoki mogą być przechowywane natywnie w programie Hive lub w innych niestandardowych programach obsługi magazynu (ORC) i mogą bezproblemowo wykorzystywać ekscytujące nowe funkcje hive, takie jak przyspieszanie LLAP.

Więcej informacji można znaleźć w temacie Hive — Materialized Views — Microsoft Tech Community

Klucze zastępcze

Użyj wbudowanej SURROGATE_KEY funkcji zdefiniowanej przez użytkownika (UDF), aby automatycznie generować identyfikatory liczbowe dla wierszy podczas wprowadzania danych do tabeli. Wygenerowane klucze zastępcze mogą zastąpić szerokie, wiele kluczy złożonych.

Program Hive obsługuje tylko klucze zastępcze w tabelach ACID. Tabela, którą chcesz połączyć przy użyciu kluczy zastępczych, nie może mieć typów kolumn, które wymagają rzutowania. Te typy danych muszą być typami pierwotnymi, takimi jak INT lub STRING.

Sprzężenia korzystające z wygenerowanych kluczy są szybsze niż sprzężenia przy użyciu ciągów. Użycie wygenerowanych kluczy nie wymusza wymuszenia danych w jednym węźle według numeru wiersza. Klucze można generować jako abstrakcje kluczy naturalnych. Klucze zastępcze mają przewagę nad identyfikatorami UUID, które są wolniejsze i probabilistyczne.

Element SURROGATE_KEY UDF generuje unikatowy identyfikator dla każdego wiersza wstawionego do tabeli. Generuje klucze na podstawie środowiska wykonawczego w systemie rozproszonym, który obejmuje wiele czynników, takich jak

  1. Wewnętrzne struktury danych
  2. Stan tabeli
  3. Ostatni identyfikator transakcji.

Generowanie kluczy zastępczych nie wymaga żadnej koordynacji między zadaniami obliczeniowymi. Funkcja UDF nie przyjmuje żadnych argumentów lub dwa argumenty są

  1. Bity identyfikatora zapisu
  2. Bity identyfikatora zadania

Ograniczenia

Ograniczenia SQL wymuszają integralność danych i zwiększają wydajność. Optymalizator używa informacji ograniczeń do podejmowania inteligentnych decyzji. Ograniczenia mogą sprawić, że dane będą przewidywalne i łatwe do zlokalizowania.

Ograniczenia opis
Zaznacz Ogranicza zakres wartości, które można umieścić w kolumnie.
KLUCZ PODSTAWOWY Identyfikuje każdy wiersz w tabeli przy użyciu unikatowego identyfikatora.
KLUCZ OBCY Identyfikuje wiersz w innej tabeli przy użyciu unikatowego identyfikatora.
UNIKATOWY KLUCZ Sprawdza, czy wartości przechowywane w kolumnie są różne.
NOT NULL Gwarantuje, że kolumna nie może być ustawiona na wartość NULL.
WŁĄCZYĆ Gwarantuje, że wszystkie dane przychodzące są zgodne z ograniczeniem.
WYŁĄCZYĆ Nie zapewnia zgodności wszystkich danych przychodzących z ograniczeniem.
VALIDATEC Hecks, że wszystkie istniejące dane w tabeli są zgodne z ograniczeniem.
NOVALIDATE Nie sprawdza, czy wszystkie istniejące dane w tabeli są zgodne z ograniczeniem
WYMUSZANE Mapy WŁĄCZYĆ NOVALIDATE.
NIE WYMUSZANE Mapy wyłączyć NOVALIDATE.
POLEGAĆ Określa przestrzeganie przez ograniczenie; używany przez optymalizator do stosowania dalszych optymalizacji.
NORELY Określa, że ograniczenie nie jest zgodne.

Aby uzyskać więcej informacji, zobacz https://cwiki.apache.org/confluence/display/Hive/Supported+Features%3A++Apache+Hive+3.1.

Magazyn metadanych CachedStore

Operacja magazynu metadanych Hive zajmuje dużo czasu, a tym samym spowalnia kompilację programu Hive. W niektórych skrajnych przypadkach czas wykonywania zapytania trwa dłużej niż rzeczywisty czas wykonywania zapytania. Szczególnie uważamy, że opóźnienie bazy danych w chmurze jest wysokie, a 90% całkowitego środowiska uruchomieniowego zapytań oczekuje na operacje bazy danych SQL magazynu metadanych. Na podstawie tej obserwacji wydajność operacji magazynu metadanych jest zwiększona, jeśli mamy strukturę pamięci, która buforuje wynik zapytania bazy danych.

hive.metastore.rawstore.impl=org.apache.hadoop.hive.metastore.cache.CachedStore

 Screenshot showing Hive metastore property file value against 'hive.metastore.rawstore.impl field.

Przewodnik po rozwiązywaniu problemów

Przewodnik rozwiązywania problemów z obciążeniami hive w usłudze HDInsight 3.6 do 4.0 zawiera odpowiedzi na typowe problemy występujące podczas migrowania obciążeń hive z usługi HDInsight 3.6 do usługi HDInsight 4.0.

Odwołania

Hive 3.1.0

https://docs.cloudera.com/HDPDocuments/HDP3/HDP-3.1.0/hive-overview/content/hive_whats_new_in_this_release_hive.html

HBase 2.1.6

https://apache.googlesource.com/hbase/+/ba26a3e1fd5bda8a84f99111d9471f62bb29ed1d/RELEASENOTES.md

Hadoop 3.1.1

https://hadoop.apache.org/docs/r3.1.1/hadoop-project-dist/hadoop-common/release/3.1.1/RELEASENOTES.3.1.1.html

Dalsze informacje