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

Ustawienia domyślne zostały ustawione w celu zapewnienia dobrej wydajności 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

Poniżej przedstawiono najważniejsze ustawienia, które należy dostosować w celu zwiększenia wydajności 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 mapera

  • tez.grouping.max rozmiar — maksymalny rozmiar każdego mapera

  • 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 mapera. Jeśli liczba maperów wybieranych przez tez jest mniejsza niż wartość tego parametru, wówczas tez użyje wartości ustawionej tutaj.

tez.grouping.max-size — parametr umożliwia ustawienie maksymalnego rozmiaru każdego mapera. Jeśli liczba maperów wybieranych przez tez jest większa niż wartość tego parametru, wówczas 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 wartość 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 określana przez yarn.nodemanager.resource.memory-mb i powinna być domyślnie poprawnie ustawiona w klastrze usługi HDI. Aby uzyskać dodatkowe informacje na temat ustawiania odpowiedniej pamięci w usłudze YARN, zobacz ten wpis.

Obciążenia intensywnie korzystające z operacji we/wy mogą korzystać z większej równoległości dzięki zmniejszeniu rozmiaru kontenera Tez. Daje 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.

Współbieżna liczba uruchomionych lub równoległych zadań zostanie ograniczona przez łączną pamięć usługi YARN. Liczba kontenerów usługi YARN będzie określać, ile współbieżnych zadań można uruchomić. Aby znaleźć pamięć usługi YARN na węzeł, możesz przejść do narzędzia Ambari. Przejdź do usługi YARN i wyświetl kartę Konfiguracje. W tym oknie zostanie wyświetlona pamięć usługi YARN.

Łączna pamięć usługi YARN = węzły * pamięć YARN na węzeł Liczba kontenerów usługi YARN = łączna ilość pamięci usługi YARN / rozmiar kontenera Tez

Kluczem do poprawy wydajności przy użyciu Data Lake Storage Gen1 jest zwiększenie współbieżności jak najwięcej. Aplikacja Tez automatycznie oblicza liczbę zadań, które należy utworzyć, aby nie trzeba było jej ustawiać.

Przykładowe obliczenie

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

Całkowita 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

ograniczanie przepustowości Data Lake Storage Gen1

Jeśli osiągniesz limity przepustowości zapewniane przez 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 zadania, skontaktuj się z nami.

Aby sprawdzić, czy ograniczanie jest ograniczane, należy włączyć rejestrowanie 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ć w widoku systemu Ambari: log4j.logger.com.microsoft.azure.datalake.store=DEBUG Uruchom ponownie wszystkie węzły/usługę, aby konfiguracja weszła w życie.

  2. Jeśli masz ograniczenie przepustowości, w pliku dziennika hive zostanie wyświetlony kod błędu HTTP 429. Plik dziennika hive znajduje się w folderze /tmp/<user>/hive.log

Więcej informacji na temat dostrajania hive

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