Rozwiązywanie problemów z akcjami skryptów w usłudze Azure HDInsight

W tym artykule opisano kroki rozwiązywania problemów i możliwe rozwiązania problemów podczas interakcji z klastrami usługi Azure HDInsight.

Wyświetlanie dzienników

Możesz użyć internetowego interfejsu użytkownika systemu Apache Ambari do wyświetlania informacji rejestrowanych przez akcje skryptu. Jeśli skrypt zakończy się niepowodzeniem podczas tworzenia klastra, dzienniki znajdują się na domyślnym koncie magazynu klastra. Ta sekcja zawiera informacje na temat pobierania dzienników przy użyciu obu tych opcji.

Internetowy interfejs użytkownika systemu Apache Ambari

  1. W przeglądarce internetowej przejdź do https://CLUSTERNAME.azurehdinsight.netlokalizacji , gdzie CLUSTERNAME jest nazwą klastra.

  2. Na pasku w górnej części strony wybierz wpis ops . Na liście są wyświetlane bieżące i poprzednie operacje wykonywane w klastrze za pośrednictwem systemu Ambari.

    Ambari web UI bar with ops selected.

  3. Znajdź wpisy, które mają run_customscriptaction w kolumnie Operacje . Te wpisy są tworzone podczas uruchamiania akcji skryptu.

    Apache Ambari script action operations.

    Aby wyświetlić dane wyjściowe STDOUT i STDERR , wybierz wpis run\customscriptaction i przejdź do szczegółów linków. Te dane wyjściowe są generowane, gdy skrypt jest uruchamiany i może zawierać przydatne informacje.

Domyślne konto magazynu

Jeśli tworzenie klastra zakończy się niepowodzeniem z powodu błędu skryptu, dzienniki są przechowywane na koncie magazynu klastra.

  • Dzienniki magazynu są dostępne pod adresem \STORAGE_ACCOUNT_NAME\DEFAULT_CONTAINER_NAME\custom-scriptaction-logs\CLUSTER_NAME\DATE.

    Script action logs.

    W tym katalogu dzienniki są zorganizowane oddzielnie dla węzła głównego, węzła procesu roboczego i węzła zookeeper. Zobacz poniższe przykłady:

    • Węzeł główny: <ACTIVE-HEADNODE-NAME>.cloudapp.net

    • Węzeł roboczy: <ACTIVE-WORKERNODE-NAME>.cloudapp.net

    • Węzeł dozorców: <ACTIVE-ZOOKEEPERNODE-NAME>.cloudapp.net

  • Wszystkie stdout i stderr odpowiedniego hosta są przekazywane do konta magazynu. Dla każdej akcji skryptu istnieje jedna wartość output-*.txt i errors-*.txt . Plik output-*.txt zawiera informacje o identyfikatorze URI skryptu, który został uruchomiony na hoście. Poniższy tekst jest przykładem tych informacji:

    'Start downloading script locally: ', u'https://hdiconfigactions.blob.core.windows.net/linuxrconfigactionv01/r-installer-v01.sh'
    
  • Możliwe, że wielokrotnie tworzysz klaster akcji skryptu o tej samej nazwie. W takim przypadku można odróżnić odpowiednie dzienniki na podstawie nazwy folderu DATE . Na przykład struktura folderów dla klastra, mycluster, utworzona w różnych datach jest podobna do następujących wpisów dziennika:

    \STORAGE_ACCOUNT_NAME\DEFAULT_CONTAINER_NAME\custom-scriptaction-logs\mycluster\2015-10-04 \STORAGE_ACCOUNT_NAME\DEFAULT_CONTAINER_NAME\custom-scriptaction-logs\mycluster\2015-10-05

  • Jeśli tworzysz klaster akcji skryptu o tej samej nazwie w tym samym dniu, możesz użyć unikatowego prefiksu, aby zidentyfikować odpowiednie pliki dziennika.

  • Jeśli utworzysz klaster w pobliżu 12:00, północ, możliwe, że pliki dziennika obejmują dwa dni. W takim przypadku zobaczysz dwa różne foldery dat dla tego samego klastra.

  • Przekazywanie plików dziennika do domyślnego kontenera może potrwać do pięciu minut, zwłaszcza w przypadku dużych klastrów. Jeśli więc chcesz uzyskać dostęp do dzienników, nie należy natychmiast usuwać klastra, jeśli akcja skryptu zakończy się niepowodzeniem.

Ambari watchdog

Nie zmieniaj hasła dla systemu Ambari watchdog, hdinsightwatchdog w klastrze usługi HDInsight opartym na systemie Linux. Zmiana hasła przerywa możliwość uruchamiania nowych akcji skryptów w klastrze usługi HDInsight.

Nie można zaimportować nazwy BlobService

Objawy. Akcja skryptu kończy się niepowodzeniem. Tekst podobny do następującego błędu jest wyświetlany podczas wyświetlania operacji w narzędziu Ambari:

Traceback (most recent call list):
  File "/var/lib/ambari-agent/cache/custom_actions/scripts/run_customscriptaction.py", line 21, in <module>
    from azure.storage.blob import BlobService
ImportError: cannot import name BlobService

Przyczyna. Ten błąd występuje w przypadku uaktualnienia klienta usługi Azure Storage w języku Python dołączonego do klastra usługi HDInsight. Usługa HDInsight oczekuje klienta usługi Azure Storage 0.20.0.

Rozwiązanie. Aby rozwiązać ten błąd, ręcznie połącz się z każdym węzłem klastra przy użyciu polecenia ssh. Uruchom następujące polecenie, aby ponownie zainstalować poprawną wersję klienta magazynu:

sudo pip install azure-storage==0.20.0

Aby uzyskać informacje na temat nawiązywania połączenia z klastrem za pomocą protokołu SSH, zobacz Połączenie z usługą HDInsight (Apache Hadoop) przy użyciu protokołu SSH.

Historia nie pokazuje skryptów używanych podczas tworzenia klastra

Jeśli klaster został utworzony przed 15 marca 2016 r., wpis w historii akcji skryptu może nie być widoczny. Zmiana rozmiaru klastra powoduje, że skrypty będą wyświetlane w historii akcji skryptu.

Istnieją jednak dwa wyjątki:

  • Klaster został utworzony przed 1 września 2015 r. Ta data jest datą wprowadzenia akcji skryptu. Żaden klaster utworzony przed tą datą nie mógł używać akcji skryptu do tworzenia klastra.

  • Podczas tworzenia klastra użyto wielu akcji skryptu. Lub użyto tej samej nazwy dla wielu skryptów lub tej samej nazwy, tego samego identyfikatora URI, ale różnych parametrów dla wielu skryptów. W takich przypadkach występuje następujący błąd:

    No new script actions can be run on this cluster because of conflicting script names in existing scripts. Script names provided at cluster creation must be all unique. Existing scripts are run on resize.
    

Następne kroki

Jeśli problem nie został wyświetlony lub nie możesz go rozwiązać, odwiedź jeden z następujących kanałów, aby uzyskać więcej pomocy technicznej:

  • Uzyskaj odpowiedzi od ekspertów platformy Azure za pośrednictwem pomocy technicznej społeczności platformy Azure.

  • Połączenie za pomocą @AzureSupport — oficjalne konto platformy Microsoft Azure w celu poprawy jakości obsługi klienta. Połączenie społeczności platformy Azure do odpowiednich zasobów: odpowiedzi, pomocy technicznej i ekspertów.

  • Jeśli potrzebujesz dodatkowej pomocy, możesz przesłać wniosek o pomoc techniczną w witrynie Azure Portal. Wybierz pozycję Pomoc techniczna na pasku menu lub otwórz centrum Pomoc i obsługa techniczna . Aby uzyskać bardziej szczegółowe informacje, zobacz How to create an pomoc techniczna platformy Azure request (Jak utworzyć żądanie pomoc techniczna platformy Azure). Dostęp do pomocy technicznej dotyczącej zarządzania subskrypcjami i rozliczeniami jest oferowany w ramach subskrypcji platformy Microsoft Azure, a pomoc techniczna jest świadczona w ramach jednego z planów pomocy technicznej platformy Azure.