Udostępnij za pośrednictwem


Wskazówki dotyczące dostrajania wydajności oprogramowania Hive w usługach HDInsight i Azure Data Lake Storage Gen1

Ustawienia domyślne zostały ustawione tak, aby zapewnić dobrą wydajność w wielu różnych przypadkach użycia. W przypadku zapytań intensywnie korzystających z operacji we/wy można dostosować usługę Hive, aby uzyskać lepszą wydajność dzięki usłudze Azure Data Lake Storage Gen1.

Wymagania wstępne

Parametry

Oto najważniejsze ustawienia, które należy dostosować w celu zwiększenia wydajności usługi Data Lake Storage Gen1:

  • hive.tez.container.size — ilość pamięci używanej przez poszczególne zadania

  • tez.grouping.min-size — minimalny rozmiar każdego mapowania

  • tez.grouping.max-size — maksymalny rozmiar każdego mappera

  • hive.exec.reducer.bytes.per.reducer — rozmiar każdego reduktora

hive.tez.container.size — rozmiar kontenera określa ilość pamięci dostępnej dla każdego zadania. Jest to główne dane wejściowe do kontrolowania współbieżności w programie Hive.

tez.grouping.min-size — ten parametr umożliwia ustawienie minimalnego rozmiaru każdego mapowania. Jeśli liczba maperów wybieranych przez Tez jest mniejsza niż wartość tego parametru, to tez użyje wartości ustawionej tutaj.

tez.grouping.max-size — parametr umożliwia ustawienie maksymalnego rozmiaru każdego mappera. Jeśli liczba maperów wybieranych przez Tez jest większa niż wartość tego parametru, to Tez użyje wartości ustawionej tutaj.

hive.exec.reducer.bytes.per.reducer — ten parametr ustawia rozmiar każdego reduktora. Domyślnie każdy reduktor ma 256 MB.

Wskazówki

Ustaw hive.exec.reducer.bytes.per.reducer — wartość domyślna działa dobrze, gdy dane są nieskompresowane. W przypadku skompresowanych danych należy zmniejszyć rozmiar reduktora.

Ustaw hive.tez.container.size — w każdym węźle pamięć jest definiowana przez yarn.nodemanager.resource.memory-mb i będzie poprawnie ustawiona domyślnie w klastrze HDI. Aby uzyskać dodatkowe informacje na temat ustawiania odpowiedniej pamięci w YARN, zobacz wpis .

Obciążenia intensywnie korzystające z operacji wejścia/wyjścia mogą odnosić korzyści z większego zrównoleglenia dzięki zmniejszeniu rozmiaru kontenera Tez. Zapewnia to użytkownikowi więcej kontenerów, co zwiększa współbieżność. Jednak niektóre zapytania Hive wymagają znacznej ilości pamięci (np. MapJoin). Jeśli zadanie nie ma wystarczającej ilości pamięci, podczas wykonywania otrzymasz wyjątek braku pamięci. Jeśli wystąpią wyjątki braku pamięci, należy zwiększyć ilość pamięci.

Liczba jednocześnie uruchamianych zadań lub równoczesność będzie ograniczona przez całkowitą pamięć YARN. Liczba kontenerów usługi YARN określa liczbę współbieżnych zadań, które mogą być uruchamiane. Aby znaleźć pamięć YARN na węzeł, możesz przejść do systemu Ambari. Przejdź do usługi YARN i wyświetl kartę Configs (Konfiguracje). W tym oknie zostanie wyświetlona pamięć usługi YARN.

Łączna pamięć YARN = liczba węzłów * pamięć YARN na węzeł. Liczba kontenerów YARN = łączna pamięć YARN / rozmiar kontenera Tez.

Kluczem do poprawy wydajności przy użyciu usługi Data Lake Storage Gen1 jest zwiększenie współbieżności jak najwięcej. Tez automatycznie oblicza liczbę zadań, które powinny zostać utworzone, dzięki czemu nie musisz tego ustawiać.

Przykładowe obliczenie

Załóżmy, że masz klaster D14 z 8 węzłami.

Łączna pamięć YARN = węzły * pamięć YARN na węzeł Całkowita pamięć YARN = 8 węzłów * 96 GB = 768 GB liczba kontenerów YARN = 768 GB / 3072 MB = 256

Ograniczenia

Regulowanie przepustowości usługi Data Lake Storage Gen1

Jeśli osiągniesz limity przepustowości zapewnianej przez usługę Data Lake Storage Gen1, zaczniesz widzieć błędy zadań. Można to zidentyfikować, obserwując błędy ograniczania przepustowości w dziennikach zadań. Równoległość można zmniejszyć, zwiększając rozmiar kontenera Tez. Jeśli potrzebujesz większej współbieżności dla swojego zadania, skontaktuj się z nami.

Aby sprawdzić, czy nie następuje ograniczanie prędkości, należy włączyć logowanie trybu debugowania po stronie klienta. Oto jak to zrobić:

  1. Umieść następującą właściwość we właściwościach log4j w konfiguracji programu Hive. Można to zrobić z poziomu widoku Ambari: log4j.logger.com.microsoft.azure.datalake.store=DEBUG Uruchom ponownie wszystkie węzły/usługi, aby konfiguracja weszła w życie.

  2. Jeśli masz ograniczenie przepustowości, w pliku dziennika Hive zobaczysz kod błędu HTTP 429. Plik dziennika hive znajduje się w folderze /tmp/<użytkownika>/hive.log

Więcej informacji na temat dostrajania Hive

Oto kilka blogów, które ułatwią dostrojenie zapytań hive: