Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
- Subskrypcja platformy Azure. Zobacz Uzyskiwanie bezpłatnej wersji próbnej platformy Azure.
- Konto usługi Data Lake Storage Gen1. Aby uzyskać instrukcje dotyczące sposobu ich tworzenia, zobacz Rozpoczynanie pracy z usługą Azure Data Lake Storage Gen1
- Klaster usługi Azure HDInsight z dostępem do konta usługi Data Lake Storage Gen1. Zobacz Tworzenie klastra usługi HDInsight przy użyciu usługi Data Lake Storage Gen1. Upewnij się, że włączono pulpit zdalny dla klastra.
- Uruchamianie programu Hive w usłudze HDInsight. Aby dowiedzieć się więcej o uruchamianiu zadań Hive w usłudze HDInsight, zobacz Use Hive on HDInsight (Korzystanie z programu Hive w usłudze HDInsight)
- Wytyczne dotyczące dostrajania wydajności w usłudze Data Lake Storage Gen1. Ogólne pojęcia dotyczące wydajności można znaleźć w temacie Data Lake Storage Gen1 Performance Tuning Guidance (Wskazówki dotyczące dostrajania wydajności usługi Data Lake Storage Gen1)
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ć:
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.
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:
- Optymalizowanie zapytań Hive dla usługi Hadoop w usłudze HDInsight
- Kodowanie pliku zapytania hive w usłudze Azure HDInsight
- Prezentacja Ignite na temat optymalizacji Hive na HDInsight