Udostępnij przez


Ręczne skalowanie klastrów usługi Azure HDInsight

Usługa HDInsight zapewnia elastyczność dzięki opcjom skalowania w górę i skalowania w dół liczby węzłów roboczych w klastrach. Ta elastyczność pozwala zmniejszyć klaster po godzinach lub w weekendy. I rozszerzać go w okresach szczytowego zapotrzebowania biznesowego.

Rozszerz swój klaster przed okresowym przetwarzaniem wsadowym, aby miał odpowiednie zasoby. Po zakończeniu przetwarzania i spadku użycia przeskaluj klaster usługi HDInsight w dół do mniejszej liczby węzłów roboczych.

Klaster można skalować ręcznie przy użyciu jednej z następujących metod. Możesz również użyć opcji automatycznego skalowania , aby automatycznie skalować w górę i w dół w odpowiedzi na określone metryki.

Uwaga

Obsługiwane są tylko klastry z usługą HDInsight w wersji 3.1.3 lub nowszej. Jeśli nie masz pewności co do wersji klastra, możesz sprawdzić stronę Właściwości.

Narzędzia do skalowania klastrów

Firma Microsoft udostępnia następujące narzędzia do skalowania klastrów:

Użyteczność Opis
PowerShell Az Set-AzHDInsightClusterSize -ClusterName CLUSTERNAME -TargetInstanceCount NEWSIZE
Azure CLI az hdinsight resize --resource-group RESOURCEGROUP --name CLUSTERNAME --workernode-count NEWSIZE
Klasyczny interfejs wiersza polecenia platformy Azure azure hdinsight cluster resize CLUSTERNAME NEWSIZE
Portal Azure Otwórz okienko klastra usługi HDInsight, wybierz pozycję Rozmiar klastra w menu po lewej stronie, a następnie w okienku Rozmiar klastra wpisz liczbę węzłów roboczych i wybierz pozycję Zapisz.

Opcja skalowania klastra w witrynie Azure Portal.

Korzystając z dowolnej z tych metod, możesz skalować klaster usługi HDInsight w górę lub w dół w ciągu kilku minut.

Ważne

  • Klasyczny interfejs wiersza polecenia platformy Azure jest przestarzały i powinien być używany tylko z klasycznym modelem wdrażania. W przypadku wszystkich innych wdrożeń użyj interfejsu wiersza polecenia platformy Azure.
  • Moduł AzureRM programu PowerShell jest przestarzały. Jeśli to możliwe, użyj modułu Az .

Wpływ operacji skalowania

W przypadku dodawania węzłów do uruchomionego klastra usługi HDInsight (skalowanie w górę) zadania pozostają nienaruszone. Nowe zadania można bezpiecznie przesłać, gdy proces skalowania jest uruchomiony. Jeśli operacja skalowania zakończy się niepowodzeniem, awaria pozostawi klaster w stanie funkcjonalnym.

Jeśli usuniesz węzły (skalowanie w dół), oczekujące lub uruchomione zadania zakończą się niepowodzeniem po zakończeniu operacji skalowania. Ten błąd jest spowodowany ponownym uruchomieniem niektórych usług podczas procesu skalowania. Klaster może zostać zablokowany w trybie awaryjnym podczas ręcznej operacji skalowania.

Wpływ zmiany liczby węzłów danych zależy od każdego typu klastra obsługiwanego przez usługę HDInsight:

  • Apache Hadoop

    Możesz bezproblemowo zwiększyć liczbę węzłów roboczych w uruchomionym klastrze hadoop bez wpływu na żadne zadania. Nowe zadania można również przesyłać, gdy operacja jest w toku. Błędy w operacji skalowania są sprawnie obsługiwane. Klaster jest zawsze pozostawiony w stanie funkcjonalnym.

    Gdy klaster Hadoop jest skalowany w dół z mniejszą liczbą węzłów danych, niektóre usługi są ponownie uruchamiane. To zachowanie powoduje, że wszystkie uruchomione i oczekujące zadania zakończą się niepowodzeniem po zakończeniu operacji skalowania. Można jednak ponownie przesłać zadania po zakończeniu operacji.

  • Apache HBase

    Możesz bezproblemowo dodawać lub usuwać węzły do klastra HBase podczas jego działania. Serwery regionalne są automatycznie zrównoważone w ciągu kilku minut od ukończenia operacji skalowania. Można jednak ręcznie zrównoważyć serwery regionalne. Zaloguj się do węzła głównego klastra i uruchom następujące polecenia:

    pushd %HBASE_HOME%\bin
    hbase shell
    balancer
    

    Aby uzyskać więcej informacji na temat korzystania z powłoki HBase, zobacz Wprowadzenie do pracy z Apache HBase w HDInsight.

    Uwaga

    Nie dotyczy klastrów Kafka.

  • Apache Hive LLAP

    Po skalowaniu do N węzłów roboczych, usługa HDInsight automatycznie ustawi następujące konfiguracje i ponownie uruchomi Hive.

    • Maksymalna łączna liczba współbieżnych zapytań: hive.server2.tez.sessions.per.default.queue = min(N, 32)
    • Liczba węzłów używanych przez LLAP programu Hive: num_llap_nodes = N
    • Liczba węzłów do uruchamiania demona LLAP programu Hive: num_llap_nodes_for_llap_daemons = N

Jak bezpiecznie skalować klaster w dół

Zmniejszanie klastra z uruchomionymi zadaniami

Aby uniknąć niepowodzenia uruchomionych zadań podczas operacji skalowania w dół, możesz wypróbować trzy elementy:

  1. Poczekaj na zakończenie zadań przed skalowaniem klastra w dół.
  2. Ręcznie zakończ zadania.
  3. Prześlij ponownie zadania po zakończeniu operacji skalowania.

Aby wyświetlić listę oczekujących i uruchomionych zadań, możesz użyć interfejsu użytkownika usługi Resource Manager usługi YARN, wykonując następujące kroki:

  1. W witrynie Azure Portal wybierz klaster. Klaster zostanie otwarty na nowej stronie portalu.

  2. W widoku głównym przejdź do pulpitów nawigacyjnych klastra>Ambari home. Wprowadź dane uwierzytelniające klastra.

  3. W interfejsie użytkownika systemu Ambari wybierz pozycję YARN na liście usług w menu po lewej stronie.

  4. Na stronie YARN wybierz pozycję Szybkie linki i umieść kursor na aktywnym węźle głównym, a następnie wybierz pozycję Interfejs użytkownika usługi Resource Manager.

    Szybkie odnośniki interfejsu użytkownika Resource Manager w Apache Ambari.

Możesz bezpośrednio uzyskać dostęp do interfejsu użytkownika usługi Resource Manager za pomocą polecenia https://<HDInsightClusterName>.azurehdinsight.net/yarnui/hn/cluster.

Zostanie wyświetlona lista zadań wraz z ich bieżącym stanem. Na zrzucie ekranu jest aktualnie uruchomione jedno zadanie:

Aplikacje interfejsu użytkownika usługi Resource Manager.

Aby ręcznie zabić uruchomioną aplikację, wykonaj następujące polecenie w powłoce SSH:

yarn application -kill <application_id>

Na przykład:

yarn application -kill "application_1499348398273_0003"

Utknięcie w trybie awaryjnym

Podczas skalowania klastra w dół usługa HDInsight używa interfejsów zarządzania Apache Ambari, aby najpierw odłączyć dodatkowe węzły robocze. Węzły replikują swoje bloki HDFS do innych aktywnych węzłów roboczych. Następnie usługa HDInsight bezpiecznie skaluje klaster w dół. System plików HDFS przechodzi w tryb awaryjny podczas operacji skalowania. System plików HDFS ma wyjść po zakończeniu skalowania. W niektórych przypadkach jednak system plików HDFS zostaje zablokowany w trybie bezpiecznym podczas operacji skalowania z powodu niedostatecznego zreplikowania bloków plików.

Domyślnie system plików HDFS jest skonfigurowany z ustawieniem dfs.replication 1, które steruje liczbą dostępnych kopii każdego bloku plików. Każda kopia bloku plików jest przechowywana w innym węźle klastra.

Gdy oczekiwana liczba kopii blokowych nie jest dostępna, system plików HDFS przechodzi w tryb awaryjny, a system Ambari generuje alerty. System plików HDFS może wprowadzać tryb awaryjny dla operacji skalowania. Klaster może zostać zablokowany w trybie awaryjnym, jeśli wymagana liczba węzłów nie zostanie wykryta na potrzeby replikacji.

Przykładowe błędy po włączeniu trybu bezpiecznego

org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /tmp/hive/hive/819c215c-6d87-4311-97c8-4f0b9d2adcf0. Name node is in safe mode.
org.apache.http.conn.HttpHostConnectException: Connect to active-headnode-name.servername.internal.cloudapp.net:10001 [active-headnode-name.servername. internal.cloudapp.net/1.1.1.1] failed: Connection refused

Możesz przejrzeć dzienniki węzłów nazw z /var/log/hadoop/hdfs/ folderu w pobliżu czasu skalowania klastra, aby sprawdzić, kiedy został on wprowadzony w tryb awaryjny. Pliki dziennika mają nazwę Hadoop-hdfs-namenode-<active-headnode-name>.*.

Główną przyczyną było to, że hive zależy od plików tymczasowych w systemie plików HDFS podczas uruchamiania zapytań. Gdy system plików HDFS przechodzi w tryb awaryjny, program Hive nie może uruchamiać zapytań, ponieważ nie może zapisywać w systemie plików HDFS. Pliki tymczasowe w systemie plików HDFS znajdują się na dysku lokalnym zainstalowanym na poszczególnych maszynach wirtualnych węzła roboczego. Pliki są replikowane między innymi węzłami roboczymi w trzech replikach, co najmniej.

Jak zapobiec zablokowaniu usługi HDInsight w trybie awaryjnym

Istnieje kilka sposobów zapobiegania pozostawieniu usługi HDInsight w trybie awaryjnym:

  • Zatrzymaj wszystkie zadania Hive przed zmniejszaniem usługi HDInsight. Aby uniknąć konfliktu z bieżącymi zadaniami programu Hive, możesz także zaplanować obniżenie zasobów.
  • Ręcznie wyczyść pliki katalogów tymczasowych tmp programu Hive w systemie plików HDFS przed skalowaniem w dół.
  • Skaluj w dół usługę HDInsight do minimum trzech węzłów roboczych. Unikaj ograniczania się do jednego węzła roboczego.
  • W razie potrzeby uruchom polecenie , aby opuścić tryb awaryjny.

W poniższych sekcjach opisano te opcje.

Zatrzymaj wszystkie zadania Hive

Zatrzymaj wszystkie zadania Hive przed redukcją liczby węzłów roboczych do jednego. Jeśli obciążenie jest zaplanowane, wykonaj skalowanie w dół po zakończeniu pracy programu Hive.

Zatrzymanie zadań Hive przed skalowaniem pomaga zminimalizować liczbę plików tymczasowych w folderze tmp (jeśli istnieje).

Ręcznie wyczyść pliki tymczasowe programu Hive

Jeśli program Hive pozostawił pliki tymczasowe, możesz ręcznie wyczyścić te pliki przed skalowaniem w dół, aby uniknąć trybu bezpiecznego.

  1. Sprawdź, która lokalizacja jest używana dla plików tymczasowych programu Hive, przeglądając hive.exec.scratchdir właściwość konfiguracji. Ten parametr jest ustawiany w pliku /etc/hive/conf/hive-site.xml:

    <property>
        <name>hive.exec.scratchdir</name>
        <value>hdfs://mycluster/tmp/hive</value>
    </property>
    
  2. Zatrzymaj usługi Hive i upewnij się, że wszystkie zapytania i zadania zostały ukończone.

  3. Wyświetl zawartość katalogu tymczasowego znalezionego powyżej hdfs://mycluster/tmp/hive/, aby sprawdzić, czy zawiera on jakiekolwiek pliki:

    hadoop fs -ls -R hdfs://mycluster/tmp/hive/hive
    

    Oto przykładowe dane wyjściowe, gdy istnieją pliki:

    sshuser@scalin:~$ hadoop fs -ls -R hdfs://mycluster/tmp/hive/hive
    drwx------   - hive hdfs          0 2017-07-06 13:40 hdfs://mycluster/tmp/hive/hive/4f3f4253-e6d0-42ac-88bc-90f0ea03602c
    drwx------   - hive hdfs          0 2017-07-06 13:40 hdfs://mycluster/tmp/hive/hive/4f3f4253-e6d0-42ac-88bc-90f0ea03602c/_tmp_space.db
    -rw-r--r--   3 hive hdfs         27 2017-07-06 13:40 hdfs://mycluster/tmp/hive/hive/4f3f4253-e6d0-42ac-88bc-90f0ea03602c/inuse.info
    -rw-r--r--   3 hive hdfs          0 2017-07-06 13:40 hdfs://mycluster/tmp/hive/hive/4f3f4253-e6d0-42ac-88bc-90f0ea03602c/inuse.lck
    drwx------   - hive hdfs          0 2017-07-06 20:30 hdfs://mycluster/tmp/hive/hive/c108f1c2-453e-400f-ac3e-e3a9b0d22699
    -rw-r--r--   3 hive hdfs         26 2017-07-06 20:30 hdfs://mycluster/tmp/hive/hive/c108f1c2-453e-400f-ac3e-e3a9b0d22699/inuse.info
    
  4. Jeśli wiesz, że program Hive jest wykonywany z tymi plikami, możesz je usunąć. Upewnij się, że w Hive żadne zapytania nie są uruchomione, sprawdzając stronę interfejsu użytkownika Resource Manager YARN.

    Przykładowy wiersz polecenia do usuwania plików z systemu plików HDFS:

    hadoop fs -rm -r -skipTrash hdfs://mycluster/tmp/hive/
    

Skaluj usługę HDInsight do trzech lub więcej węzłów roboczych

Jeśli klastry są często zablokowane w trybie awaryjnym podczas skalowania w dół do mniej niż trzech węzłów roboczych, zachowaj co najmniej trzy węzły robocze.

Posiadanie trzech węzłów roboczych jest bardziej kosztowne niż skalowanie w dół do tylko jednego węzła roboczego. Jednak ta akcja uniemożliwia zablokowanie klastra w trybie awaryjnym.

Skalowanie usługi HDInsight w dół do jednego węzła roboczego

Nawet jeśli klaster jest skalowany w dół do jednego węzła, węzeł roboczy 0 nadal przetrwa. Nie można zlikwidować węzła roboczego 0.

Uruchom polecenie , aby opuścić tryb awaryjny

Ostateczną opcją jest wykonanie polecenia opuszczenia trybu awaryjnego. Jeśli system plików HDFS przeszedł w tryb bezpieczny z powodu niedostatecznej repliki pliku Hive, wykonaj następujące polecenie, aby opuścić tryb bezpieczny:

hdfs dfsadmin -D 'fs.default.name=hdfs://mycluster/' -safemode leave

Skalowanie klastra Apache HBase w dół

Serwery regionów są automatycznie zrównoważone w ciągu kilku minut po zakończeniu operacji skalowania. Aby ręcznie zrównoważyć serwery regionów, wykonaj następujące kroki:

  1. Połącz się z klastrem usługi HDInsight przy użyciu protokołu SSH. Aby uzyskać więcej informacji, zobacz Używanie protokołu SSH w usłudze HDInsight.

  2. Uruchom powłokę HBase:

    hbase shell
    
  3. Użyj następującego polecenia, aby ręcznie zrównoważyć serwery regionów:

    balancer
    

Następne kroki

Aby uzyskać szczegółowe informacje na temat skalowania klastra usługi HDInsight, zobacz: