Anpassen von Azure HDInsight-Clustern mithilfe von SkriptaktionenCustomize Azure HDInsight clusters by using script actions

HDInsight verfügt über eine Konfigurationsmethode namens Skriptaktionen, bei der benutzerdefinierte Skripts zum Anpassen des Clusters aufgerufen werden.Azure HDInsight provides a configuration method called script actions that invokes custom scripts to customize the cluster. Diese Skripts werden auch zum Installieren weitere Komponenten und zum Ändern von Konfigurationseinstellungen verwendet.These scripts are used to install additional components and change configuration settings. Skriptaktionen können während oder nach der Clustererstellung verwendet werden.Script actions can be used during or after cluster creation.

Skriptaktionen können auch als HDInsight-Anwendung im Azure Marketplace veröffentlicht werden.Script actions can also be published to the Azure Marketplace as an HDInsight application. Weitere Informationen zu HDInsight-Anwendungen finden Sie unter Veröffentlichen von HDInsight-Anwendungen im Azure Marketplace.For more information on HDInsight applications, see Publish an HDInsight application in the Azure Marketplace.

BerechtigungenPermissions

Für einen in eine Domäne eingebundenen HDInsight-Cluster sind zwei Ambari-Berechtigungen erforderlich, um Skriptaktionen mit dem Cluster verwenden zu können:For a domain-joined HDInsight cluster, there are two Apache Ambari permissions that are required when you use script actions with the cluster:

  • AMBARI.RUN_CUSTOM_COMMAND:AMBARI.RUN_CUSTOM_COMMAND. Die Rolle „Ambari-Administrator“ verfügt standardmäßig über diese Berechtigung.The Ambari Administrator role has this permission by default.
  • CLUSTER.RUN_CUSTOM_COMMAND:CLUSTER.RUN_CUSTOM_COMMAND. Sowohl der HDInsight-Clusteradministrator als auch der Ambari-Administrator verfügt standardmäßig über diese Berechtigung.Both the HDInsight Cluster Administrator and Ambari Administrator have this permission by default.

Weitere Informationen zur Verwendung von Berechtigungen mit in eine Domäne eingebundenem HDInsight finden Sie unter Verwalten von HDInsight-Clustern mit dem Enterprise-Sicherheitspaket.For more information on working with permissions with domain-joined HDInsight, see Manage HDInsight clusters with Enterprise Security Package.

ZugriffssteuerungAccess control

Wenn Sie nicht der Administrator oder Besitzer des Azure-Abonnements sind, muss Ihr Konto mindestens Zugriff vom Typ „Mitwirkender“ auf die Ressourcengruppe haben, die den HDInsight-Cluster enthält.If you aren't the administrator or owner of your Azure subscription, your account must have at least Contributor access to the resource group that contains the HDInsight cluster.

Wenn Sie einen HDInsight-Cluster erstellen, muss der Anbieter für HDInsight bereits von einer Person registriert worden sein, die mindestens über Zugriff vom Typ „Mitwirkender“ auf das Azure-Abonnement verfügt.If you create an HDInsight cluster, someone with at least Contributor access to the Azure subscription must have previously registered the provider for HDInsight. Die Anbieterregistrierung findet statt, wenn ein Benutzer, der über Abonnementzugriff vom Typ „Mitwirkender“ verfügt, erstmals eine Ressource für das Abonnement erstellt.Provider registration happens when a user with Contributor access to the subscription creates a resource for the first time on the subscription. Dies kann auch ohne Erstellung einer Ressource erreicht werden, wenn Sie einen Anbieter mithilfe von REST registrieren.It can also be done without creating a resource if you register a provider by using REST.

Weitere Informationen zur Verwendung der Zugriffsverwaltung finden Sie hier:Get more information on working with access management:

Grundlegendes zu SkriptaktionenUnderstand script actions

Eine Skriptaktion ist ein Bash-Skript, das auf den Knoten in einem HDInsight-Cluster ausgeführt wird.A script action is Bash script that runs on the nodes in an HDInsight cluster. Skriptaktionen verfügen über folgende Merkmale und Features:Characteristics and features of script actions are as follows:

  • Sie müssen als URI gespeichert werden, der für den HDInsight-Cluster zugänglich ist.Must be stored on a URI that's accessible from the HDInsight cluster. Dies sind zwei mögliche Speicherorte:The following are possible storage locations:

    • Für normale Cluster:For regular clusters:

      • ADLS Gen1: Der Dienstprinzipal, der von HDInsight zum Zugreifen auf Data Lake Storage genutzt wird, muss über Lesezugriff auf das Skript verfügen.ADLS Gen1: The service principal HDInsight uses to access Data Lake Storage must have read access to the script. Für in Data Lake Storage Gen1 gespeicherte Skripts wird das folgende URI-Format verwendet: adl://DATALAKESTOREACCOUNTNAME.azuredatalakestore.net/path_to_file.The URI format for scripts stored in Data Lake Storage Gen1 is adl://DATALAKESTOREACCOUNTNAME.azuredatalakestore.net/path_to_file.

      • Ein Blob in einem Azure Storage-Konto, das entweder das primäre oder ein zusätzliches Speicherkonto für den HDInsight-Cluster darstellt.A blob in an Azure Storage account that's either the primary or additional storage account for the HDInsight cluster. HDInsight wird während der Clustererstellung Zugriff auf beide Typen von Speicherkonten gewährt.HDInsight is granted access to both of these types of storage accounts during cluster creation.

      • Ein öffentlicher Dateifreigabedienst, auf den über „http://“-Pfade zugegriffen werden kann.A public file-sharing service accessible through http:// paths. Beispiele sind Azure Blob, GitHub und OneDrive.Examples are Azure Blob, GitHub, OneDrive.

        Beispiel-URIs finden Sie unter Beispielskripts für Skriptaktionen.For example URIs, see Example script action scripts.

    • Für Cluster mit ESP:For clusters with ESP:

      • URIs vom Typ „wasb[s]://“ oder „http[s]://“ werden unterstützt.The wasb[s]:// or http[s]:// URIs are supported.
  • Die Ausführung kann auf bestimmte Knotentypen beschränkt werden.Can be restricted to run on only certain node types. Beispiele wären etwa Hauptknoten und Workerknoten.Examples are head nodes or worker nodes.

  • Sie können permanent oder ad-hoc sein.Can be persisted or ad hoc.

    Permanente Skripts werden verwendet, um mithilfe von Skalierungsvorgängen neue Workerknoten anzupassen, die dem Cluster hinzugefügt wurden.Persisted scripts are used to customize new worker nodes added to the cluster through scaling operations. Bei Skalierungsvorgängen kann ein permanentes Skript auch Änderungen auf einen anderen Knotentyp anwenden.A persisted script might also apply changes to another node type when scaling operations occur. Ein Beispiel wäre etwa ein Hauptknoten.An example is a head node.

    Wichtig

    Permanente Skriptaktionen müssen einen eindeutigen Namen haben.Persisted script actions must have a unique name.

    Ad-hoc-Skripts werden nicht beibehalten.Ad hoc scripts aren't persisted. Sie werden nicht auf Workerknoten angewendet, die dem Cluster hinzugefügt werden, nachdem das Skript ausgeführt wurde.They aren't applied to worker nodes added to the cluster after the script has run. Sie können ein Ad-hoc-Skript aber nachträglich in ein permanentes Skript oder ein permanentes Skript in ein Ad-hoc-Skript umwandeln.Then you can promote an ad hoc script to a persisted script or demote a persisted script to an ad hoc script.

    Wichtig

    Skriptaktionen, die während der Clustererstellung verwendet werden, werden automatisch zu permanenten Skripts.Script actions used during cluster creation are automatically persisted.

    Skripts, deren Ausführung nicht erfolgreich ist, werden nicht zu permanenten Skripts. Dies gilt auch, wenn Sie speziell angeben, dass dies der Fall sein soll.Scripts that fail aren't persisted, even if you specifically indicate that they should be.

  • Sie können Parameter akzeptieren, die von den Skripts während der Ausführung verwendet werden.Can accept parameters that are used by the script during execution.

  • Sie werden mit Stammebenenberechtigungen auf den Clusterknoten ausgeführt.Run with root-level privileges on the cluster nodes.

  • Sie können über das Azure-Portal, Azure PowerShell, die klassische Azure-Befehlszeilenschnittstelle oder das HDInsight .NET SDK verwendet werden.Can be used through the Azure portal, Azure PowerShell, the Azure classic CLI, or the HDInsight .NET SDK.

Der Cluster protokolliert den Verlauf aller Skripts, die ausgeführt wurden.The cluster keeps a history of all scripts that have been run. Der Verlauf ist hilfreich, wenn Sie die ID eines Skripts für die Herauf- oder Herabstufung von Vorgängen benötigen.The history helps when you need to find the ID of a script for promotion or demotion operations.

Wichtig

Die von einer Skriptaktion vorgenommenen Änderungen können nicht automatisch rückgängig gemacht werden.There's no automatic way to undo the changes made by a script action. Sie können die Änderungen entweder manuell zurückzusetzen oder ein Skript angeben, das sie zurücksetzt.Either manually reverse the changes or provide a script that reverses them.

Skriptaktionen im ClustererstellungsvorgangScript action in the cluster creation process

Während der Clustererstellung verwendete Skriptaktionen unterscheiden sich geringfügig von Skriptaktionen, die in einem vorhandenen Cluster ausgeführt wurden:Script actions used during cluster creation are slightly different from script actions run on an existing cluster:

  • Das Skript wird automatisch dauerhaft gespeichert.The script is automatically persisted.

  • Ein Fehler im Skript kann dazu führen, dass die Clustererstellung nicht erfolgreich ist.A failure in the script can cause the cluster creation process to fail.

Das folgende Diagramm veranschaulicht, wann Skriptaktionen während des Erstellungsvorgangs ausgeführt werden:The following diagram illustrates when script action runs during the creation process:

HDInsight-Clusteranpassung und Phasen während der ClustererstellungHDInsight cluster customization and stages during cluster creation

Das Skript wird ausgeführt, während HDInsight konfiguriert wird.The script runs while HDInsight is being configured. Das Skript wird parallel auf allen angegebenen Knoten im Cluster ausgeführt.The script runs in parallel on all the specified nodes in the cluster. Die Ausführung erfolgt dabei mit Stammberechtigungen für die Knoten.It runs with root privileges on the nodes.

Hinweis

Sie können Dienste beenden und starten, einschließlich Diensten in Zusammenhang mit Apache Hadoop.You can perform operations like stopping and starting services, including Apache Hadoop-related services. Achten Sie beim Beenden von Diensten darauf, dass der Ambari-Dienst und andere Hadoop-bezogene Dienste ausgeführt werden, bevor die Ausführung des Skripts abgeschlossen ist.If you stop services, make sure that the Ambari service and other Hadoop-related services are running before the script finishes. Diese Dienste werden benötigt, um die Integrität und den Zustand des Clusters erfolgreich zu ermitteln, während dieser erstellt wird.These services are required to successfully determine the health and state of the cluster while it's being created.

Während der Clustererstellung können mehrere Skriptaktionen gleichzeitig verwendet werden.During cluster creation, you can use many script actions at once. Diese Skripts werden in der Reihenfolge aufgerufen, in der sie angegeben wurden.These scripts are invoked in the order in which they were specified.

Wichtig

Skriptaktionen müssen innerhalb von 60 Minuten abgeschlossen werden. Andernfalls tritt ein Timeout auf. Während der Clusterbereitstellung wird das Skript gleichzeitig mit anderen Einrichtungs- und Konfigurationsprozessen ausgeführt.Script actions must finish within 60 minutes, or they time out. During cluster provisioning, the script runs concurrently with other setup and configuration processes. Der Wettbewerb um Ressourcen wie CPU-Zeit oder Netzwerkbandbreite kann dazu führen, dass es länger als in Ihrer Entwicklungsumgebung dauert, bis das Skript abgeschlossen ist.Competition for resources such as CPU time or network bandwidth might cause the script to take longer to finish than it does in your development environment.

Um die Ausführungsdauer des Skripts zu minimieren, vermeiden Sie Aufgaben wie das Herunterladen und Kompilieren von Anwendungen aus der Quelle.To minimize the time it takes to run the script, avoid tasks like downloading and compiling applications from the source. Kompilieren Sie Anwendungen vor, und speichern Sie die Binärdateien in Azure Storage.Precompile applications and store the binary in Azure Storage.

Skriptaktion in einem ausgeführten ClusterScript action on a running cluster

Ein Fehler in einem Skript, das in einem bereits ausgeführten Cluster ausgeführt wird, führt nicht automatisch dazu, dass der Cluster in einen Fehlerzustand versetzt wird.A failure in a script run on an already running cluster doesn't automatically cause the cluster to change to a failed state. Nach Abschluss eines Skripts sollte der Cluster wieder in den Ausführungszustand zurückkehren.After a script finishes, the cluster should return to a running state.

Wichtig

Auch wenn sich der Cluster im Zustand „Wird ausgeführt“ befindet, kann es sein, dass das fehlerhafte Skript etwas beschädigt hat.Even if the cluster has a running state, the failed script might have broken things. Ein Skript kann beispielsweise vom Cluster benötigte Dateien löschen.For example, a script might delete files needed by the cluster.

Skriptaktionen werden mit Stammberechtigungen ausgeführt.Scripts actions run with root privileges. Stellen Sie also sicher, dass Sie die Auswirkungen eines Skripts verstehen, bevor Sie es auf den Cluster anwenden.Make sure that you understand what a script does before you apply it to your cluster.

Wenn Sie ein Skript auf einem Cluster anwenden, ändert sich der Clusterzustand von Wird ausgeführt in Akzeptiert.When you apply a script to a cluster, the cluster state changes from Running to Accepted. Danach ändert sich der Zustand in HDInsight-Konfiguration, bevor er schließlich wieder Wird ausgeführt lautet (bei einem erfolgreichen Skript).Then it changes to HDInsight configuration and, finally, back to Running for successful scripts. Der Skriptstatus wird im Skriptaktionsverlauf protokolliert.The script status is logged in the script action history. Diese Angabe gibt Aufschluss darüber, ob das Skript erfolgreich ausgeführt wurde.This information tells you whether the script succeeded or failed. Das PowerShell-Cmdlet Get-AzHDInsightScriptActionHistory zeigt beispielsweise den Status eines Skripts an.For example, the Get-AzHDInsightScriptActionHistory PowerShell cmdlet shows the status of a script. Die zurückgegebenen Informationen sehen in etwa wie folgt aus:It returns information similar to the following text:

ScriptExecutionId : 635918532516474303
StartTime         : 8/14/2017 7:40:55 PM
EndTime           : 8/14/2017 7:41:05 PM
Status            : Succeeded

Wichtig

Wenn Sie nach dem Erstellen des Clusters das Kennwort für den Clusterbenutzer (Admin) ändern, sind Skriptaktionen, die für diesen Cluster ausgeführt werden, möglicherweise nicht mehr erfolgreich.If you change the cluster user, admin, password after the cluster is created, script actions run against this cluster might fail. Falls Sie über permanente Skriptaktionen für Workerknoten verfügen, sind diese unter Umständen nicht erfolgreich, wenn Sie den Cluster skalieren.If you have any persisted script actions that target worker nodes, these scripts might fail when you scale the cluster.

Beispielskripts für SkriptaktionenExample script action scripts

Skripts für Skriptaktionen können über die folgenden Hilfsprogramme verwendet werden:Script action scripts can be used through the following utilities:

  • Das Azure-PortalThe Azure portal
  • Azure PowerShellAzure PowerShell
  • Die klassische Azure-BefehlszeilenschnittstelleThe Azure classic CLI
  • Ein HDInsight .NET SDKAn HDInsight .NET SDK

HDInsight verfügt über Skripts zum Installieren der folgenden Komponenten auf HDInsight-Clustern:HDInsight provides scripts to install the following components on HDInsight clusters:

NAMEName SkriptScript
Hinzufügen eines Azure Storage-KontosAdd an Azure Storage account https://hdiconfigactions.blob.core.windows.net/linuxaddstorageaccountv01/add-storage-account-v01.sh.https://hdiconfigactions.blob.core.windows.net/linuxaddstorageaccountv01/add-storage-account-v01.sh. Weitere Informationen finden Sie unter Hinzufügen zusätzlicher Speicherkonten zu HDInsight.See Add additional storage accounts to HDInsight.
Installieren von HueInstall Hue https://hdiconfigactions.blob.core.windows.net/linuxhueconfigactionv02/install-hue-uber-v02.sh.https://hdiconfigactions.blob.core.windows.net/linuxhueconfigactionv02/install-hue-uber-v02.sh. Weitere Informationen finden Sie unter Installieren und Verwenden von Hue in HDInsight Hadoop-Clustern.See Install and use Hue on HDInsight Hadoop clusters.
Installieren von PrestoInstall Presto https://raw.githubusercontent.com/hdinsight/presto-hdinsight/master/installpresto.sh.https://raw.githubusercontent.com/hdinsight/presto-hdinsight/master/installpresto.sh. Weitere Informationen finden Sie unter Installieren und Verwenden von Presto in HDInsight Hadoop-Clustern.See Install and use Presto on Hadoop-based HDInsight clusters.
Installieren von GiraphInstall Giraph https://hdiconfigactions.blob.core.windows.net/linuxgiraphconfigactionv01/giraph-installer-v01.sh.https://hdiconfigactions.blob.core.windows.net/linuxgiraphconfigactionv01/giraph-installer-v01.sh. Weitere Informationen finden Sie unter Installieren von Apache Giraph in HDInsight Hadoop-Clustern und Verwenden von Giraph zur Verarbeitung großer Diagramme.See Install Apache Giraph on HDInsight Hadoop clusters.
Vorabladen von Hive-BibliothekenPreload Hive libraries https://hdiconfigactions.blob.core.windows.net/linuxsetupcustomhivelibsv01/setup-customhivelibs-v01.sh.https://hdiconfigactions.blob.core.windows.net/linuxsetupcustomhivelibsv01/setup-customhivelibs-v01.sh. Weitere Informationen finden Sie unter Hinzufügen benutzerdefinierter Apache Hive-Bibliotheken beim Erstellen des HDInsight-Clusters.See Add custom Apache Hive libraries when creating your HDInsight cluster.

Verwenden einer Skriptaktion während der ClustererstellungUse a script action during cluster creation

In diesem Abschnitt werden die verschiedenen Verwendungsmöglichkeiten von Skriptaktionen beim Erstellen eines HDInsight-Clusters erläutert.This section explains the different ways you can use script actions when you create an HDInsight cluster.

Verwenden einer Skriptaktion während der Clustererstellung im Azure-PortalUse a script action during cluster creation from the Azure portal

  1. Beginnen Sie mit der Erstellung eines Clusters, wie unter Einrichten von Clustern in HDInsight mit Apache Hadoop, Apache Spark, Apache Kafka usw. beschrieben.Start to create a cluster as described in Set up clusters in HDInsight with Apache Hadoop, Apache Spark, Apache Kafka, and more. Im Rahmen der Clustererstellung gelangen Sie zur Seite Clusterzusammenfassung.During cluster creation, you arrive at a Cluster summary page. Wählen Sie auf der Seite Clusterübersicht für Erweiterte Einstellungen den Link Bearbeiten aus.From the Cluster summary page, select the edit link for Advanced settings.

    Link „Erweiterte Einstellungen“

  2. Wählen Sie im Abschnitt Erweiterte Einstellungen die Option Skriptaktionen aus.From the Advanced settings section, select Script actions. Wählen Sie im Abschnitt Skriptaktionen die Option + Neue übermitteln aus.From the Script actions section, select + Submit new.

    Skriptaktion „Neue übermitteln“

  3. Wählen Sie über den Eintrag Skript auswählen ein vorgefertigtes Skript aus.Use the Select a script entry to select a premade script. Wählen Sie Benutzerdefiniert aus, wenn Sie ein Skript verwenden möchten.To use a custom script, select Custom. Geben Sie dann Name und Bash-Skript-URI für Ihr Skript an.Then provide the Name and Bash script URI for your script.

    Hinzufügen eines Skripts im Formular „Skript auswählen“

    Die folgende Tabelle beschreibt die Elemente des Formulars:The following table describes the elements on the form:

    EigenschaftProperty WertValue
    Auswählen eines SkriptsSelect a script Wählen Sie Benutzerdefiniert aus, wenn Sie ein eigenes Skript verwenden möchten.To use your own script, select Custom. Wählen Sie andernfalls eines der bereitgestellten Skripts aus.Otherwise, select one of the provided scripts.
    NAMEName Geben Sie einen Namen für die Skriptaktion an.Specify a name for the script action.
    Bash-Skript-URIBash script URI Geben Sie den URI des Skripts an.Specify the URI of the script.
    Haupt-/Worker-/Zookeeper-KnotenHead/Worker/Zookeeper Geben Sie die Knoten an, auf denen das Skript ausgeführt wird: Hauptknoten, Worker oder ZooKeeper.Specify the nodes on which the script is run: Head, Worker, or ZooKeeper.
    ParameterParameters Geben Sie die Parameter an, sofern dies für das Skript erforderlich ist.Specify the parameters, if required by the script.

    Verwenden Sie den Eintrag Speichern Sie diese Skriptaktion, um sicherzustellen, dass das Skript bei Skalierungsvorgängen angewendet wird.Use the Persist this script action entry to make sure that the script is applied during scaling operations.

  4. Wählen Sie Erstellen aus, um das Skript zu speichern.Select Create to save the script. Anschließend können Sie + Neue übermitteln verwenden, um ein weiteres Skript hinzufügen.Then you can use + Submit new to add another script.

    Mehrere Skriptaktionen

    Wenn Sie das Hinzufügen von Skripts abgeschlossen haben, gelangen Sie über die Schaltflächen Auswählen und Weiter wieder zum Abschnitt Clusterübersicht.When you're done adding scripts, select the Select button and then the Next button to return to the Cluster summary section.

  5. Wählen Sie im Abschnitt Clusterübersicht die Option Erstellen aus, um den Cluster zu erstellen.To create the cluster, select Create from the Cluster summary selection.

Verwenden einer Skriptaktion über Azure Resource Manager-VorlagenUse a script action from Azure Resource Manager templates

Skriptaktionen können mit Azure Resource Manager-Vorlagen verwendet werden.Script actions can be used with Azure Resource Manager templates. Ein Beispiel finden Sie unter Create HDInsight Linux Cluster and run a script action (Erstellen eines HDInsight-Linux-Clusters und Ausführen einer Skriptaktion).For an example, see Create HDInsight Linux Cluster and run a script action.

In diesem Beispiel wird die Skriptaktion mithilfe des folgenden Codes hinzugefügt:In this example, the script action is added by using the following code:

"scriptActions": [
    {
        "name": "setenvironmentvariable",
        "uri": "[parameters('scriptActionUri')]",
        "parameters": "headnode"
    }
]

Weitere Informationen zum Bereitstellen einer Vorlage finden Sie hier:Get more information on how to deploy a template:

Verwenden einer Skriptaktion während der Clustererstellung mit Azure PowerShellUse a script action during cluster creation from Azure PowerShell

In diesem Abschnitt verwenden Sie das Cmdlet Add-AzHDInsightScriptAction, um Skripts zum Anpassen eines Clusters aufzurufen.In this section, you use the Add-AzHDInsightScriptAction cmdlet to invoke scripts to customize a cluster. Installieren und konfigurieren Sie zunächst Azure PowerShell.Before you start, make sure you install and configure Azure PowerShell. Um diese PowerShell-Befehle verwenden zu können, benötigen Sie das AZ-Modul.To use these PowerShell commands, you need the AZ Module.

Hinweis

Dieser Artikel wurde aktualisiert und beinhaltet jetzt das neue Az-Modul von Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Sie können das AzureRM-Modul weiterhin verwenden, das bis mindestens Dezember 2020 weiterhin Fehlerbehebungen erhält.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Weitere Informationen zum neuen Az-Modul und zur Kompatibilität mit AzureRM finden Sie unter Introducing the new Azure PowerShell Az module (Einführung in das neue Az-Modul von Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Anweisungen zur Installation des Az-Moduls finden Sie unter Install Azure PowerShell (Installieren von Azure PowerShell).For Az module installation instructions, see Install Azure PowerShell.

Das folgende Skript zeigt, wie Sie eine Skriptaktion anwenden, wenn Sie einen Cluster mithilfe von PowerShell erstellen:The following script shows how to apply a script action when you create a cluster by using PowerShell:

# Login to your Azure subscription
$context = Get-AzContext
if ($context -eq $null) 
{
    Connect-AzAccount
}
$context

# If you have multiple subscriptions, set the one to use
# $subscriptionID = "<subscription ID to use>"
# Select-AzSubscription -SubscriptionId $subscriptionID

# Get user input/default values
$resourceGroupName = Read-Host -Prompt "Enter the resource group name"
$location = Read-Host -Prompt "Enter the Azure region to create resources in"

# Create the resource group
New-AzResourceGroup -Name $resourceGroupName -Location $location

$defaultStorageAccountName = Read-Host -Prompt "Enter the name of the storage account"

# Create an Azure storae account and container
New-AzStorageAccount `
    -ResourceGroupName $resourceGroupName `
    -Name $defaultStorageAccountName `
    -Type Standard_LRS `
    -Location $location
$defaultStorageAccountKey = (Get-AzStorageAccountKey `
                                -ResourceGroupName $resourceGroupName `
                                -Name $defaultStorageAccountName)[0].Value
$defaultStorageContext = New-AzStorageContext `
                                -StorageAccountName $defaultStorageAccountName `
                                -StorageAccountKey $defaultStorageAccountKey

# Get information for the HDInsight cluster
$clusterName = Read-Host -Prompt "Enter the name of the HDInsight cluster"
# Cluster login is used to secure HTTPS services hosted on the cluster
$httpCredential = Get-Credential -Message "Enter Cluster login credentials" -UserName "admin"
# SSH user is used to remotely connect to the cluster using SSH clients
$sshCredential = Get-Credential -Message "Enter SSH user credentials"

# Default cluster size (# of worker nodes), version, type, and OS
$clusterSizeInNodes = "4"
$clusterVersion = "3.5"
$clusterType = "Hadoop"
$clusterOS = "Linux"
# Set the storage container name to the cluster name
$defaultBlobContainerName = $clusterName

# Create a blob container. This holds the default data store for the cluster.
New-AzStorageContainer `
    -Name $clusterName -Context $defaultStorageContext

# Create an HDInsight configuration object
$config = New-AzHDInsightClusterConfig
# Add the script action
$scriptActionUri="https://hdiconfigactions.blob.core.windows.net/linuxgiraphconfigactionv01/giraph-installer-v01.sh"
# Add for the head nodes
$config = Add-AzHDInsightScriptAction `
    -Config $config `
    -Name "Install Giraph" `
    -NodeType HeadNode `
    -Uri $scriptActionUri
# Continue adding the script action for any other node types
# that it must run on.
$config = Add-AzHDInsightScriptAction `
    -Config $config `
    -Name "Install Giraph" `
    -NodeType WorkerNode `
    -Uri $scriptActionUri

# Create the cluster using the configuration object
New-AzHDInsightCluster `
    -Config $config `
    -ResourceGroupName $resourceGroupName `
    -ClusterName $clusterName `
    -Location $location `
    -ClusterSizeInNodes $clusterSizeInNodes `
    -ClusterType $clusterType `
    -OSType $clusterOS `
    -Version $clusterVersion `
    -HttpCredential $httpCredential `
    -DefaultStorageAccountName "$defaultStorageAccountName.blob.core.windows.net" `
    -DefaultStorageAccountKey $defaultStorageAccountKey `
    -DefaultStorageContainer $containerName `
    -SshCredential $sshCredential

Die Erstellung des Clusters kann einige Minuten in Anspruch nehmen.It can take several minutes before the cluster is created.

Verwenden einer Skriptaktion während der Clustererstellung im HDInsight .NET SDKUse a script action during cluster creation from the HDInsight .NET SDK

Das HDInsight .NET SDK enthält Clientbibliotheken zur Vereinfachung der Arbeit mit HDInsight in .NET-Anwendungen.The HDInsight .NET SDK provides client libraries that make it easier to work with HDInsight from a .NET application. Ein Codebeispiel finden Sie unter Erstellen von Linux-basierten Clustern in HDInsight mit dem .NET SDK.For a code sample, see Create Linux-based clusters in HDInsight by using the .NET SDK.

Anwenden einer Skriptaktion auf einen ausgeführten ClusterApply a script action to a running cluster

In diesem Abschnitt erfahren Sie, wie Sie Skriptaktionen auf einen ausgeführten Cluster anwenden.This section explains how to apply script actions to a running cluster.

Anwenden einer Skriptaktion auf einen ausgeführten Cluster über das Azure-PortalApply a script action to a running cluster from the Azure portal

Navigieren Sie zum Azure-Portal:Go to the Azure portal:

  1. Wählen Sie im Menü links Alle Dienste aus.From the left menu, select All services.

  2. Wählen Sie unter ANALYSEN die Option HDInsight clusters (HDInsight-Cluster) aus.Under ANALYTICS, select HDInsight clusters.

  3. Wählen Sie in der Liste Ihren Cluster aus. Daraufhin wird die Standardansicht geöffnet.Select your cluster from the list, which opens the default view.

  4. Klicken Sie in der Standardansicht unter Einstellungen auf Script actions (Skriptaktionen).From the default view, under Settings, select Script actions.

  5. Wählen Sie oben auf der Seite Script actions (Skriptaktionen) die Option + Submit new (+ Neue übermitteln) aus.From the top of the Script actions page, select + Submit new.

    Hinzufügen eines Skripts zu einem ausgeführten Cluster

  6. Wählen Sie über den Eintrag Skript auswählen ein vorgefertigtes Skript aus.Use the Select a script entry to select a premade script. Wählen Sie Benutzerdefiniert aus, wenn Sie ein Skript verwenden möchten.To use a custom script, select Custom. Geben Sie dann Name und Bash-Skript-URI für Ihr Skript an.Then provide the Name and Bash script URI for your script.

    Hinzufügen eines Skripts im Formular „Skript auswählen“

    Die folgende Tabelle beschreibt die Elemente des Formulars:The following table describes the elements on the form:

    EigenschaftProperty WertValue
    Auswählen eines SkriptsSelect a script Wählen Sie Benutzerdefiniert aus, wenn Sie ein eigenes Skript verwenden möchten.To use your own script, select custom. Wählen Sie andernfalls ein bereitgestelltes Skript aus.Otherwise, select a provided script.
    NAMEName Geben Sie einen Namen für die Skriptaktion an.Specify a name for the script action.
    Bash-Skript-URIBash script URI Geben Sie den URI des Skripts an.Specify the URI of the script.
    Haupt-/Worker-/Zookeeper-KnotenHead/Worker/Zookeeper Geben Sie die Knoten an, auf denen das Skript ausgeführt wird: Hauptknoten, Worker oder ZooKeeper.Specify the nodes on which the script is run: Head, Worker, or ZooKeeper.
    ParameterParameters Geben Sie die Parameter an, sofern dies für das Skript erforderlich ist.Specify the parameters, if required by the script.

    Verwenden Sie den Eintrag Speichern Sie diese Skriptaktion, um sicherzustellen, dass das Skript bei Skalierungsvorgängen angewendet wird.Use the Persist this script action entry to make sure the script is applied during scaling operations.

  7. Wählen Sie abschließend die Schaltfläche Erstellen aus, um das Skript auf den Cluster anzuwenden.Finally, select the Create button to apply the script to the cluster.

Anwenden einer Skriptaktion auf einen ausgeführten Cluster mit Azure PowerShellApply a script action to a running cluster from Azure PowerShell

Um diese PowerShell-Befehle verwenden zu können, benötigen Sie das AZ-Modul.To use these PowerShell commands, you need the AZ Module.

Das folgende Beispiel zeigt, wie Sie eine Skriptaktion auf einen ausgeführten Cluster anwenden:The following example shows how to apply a script action to a running cluster:

# Get information for the HDInsight cluster
$clusterName = Read-Host -Prompt "Enter the name of the HDInsight cluster"
$scriptActionName = Read-Host -Prompt "Enter the name of the script action"
$scriptActionUri = Read-Host -Prompt "Enter the URI of the script action"
# The node types that the script action is applied to
$nodeTypes = "headnode", "workernode"

# Apply the script and mark as persistent
Submit-AzHDInsightScriptAction -ClusterName $clusterName `
    -Name $scriptActionName `
    -Uri $scriptActionUri `
    -NodeTypes $nodeTypes `
    -PersistOnSuccess

Nach Abschluss des Vorgangs sollten Informationen angezeigt werden, die in etwa wie folgt aussehen:After the operation finishes, you receive information similar to the following text:

OperationState  : Succeeded
ErrorMessage    :
Name            : Giraph
Uri             : https://hdiconfigactions.blob.core.windows.net/linuxgiraphconfigactionv01/giraph-installer-v01.sh
Parameters      :
NodeTypes       : {HeadNode, WorkerNode}

Anwenden einer Skriptaktion auf einen ausgeführten Cluster über die Azure-Befehlszeilenschnittstelle (CLI)Apply a script action to a running cluster from the Azure CLI

Installieren und konfigurieren Sie zunächst die Azure-Befehlszeilenschnittstelle.Before you start, make sure you install and configure the Azure CLI. Weitere Informationen finden Sie unter Installieren der klassischen Azure CLI.For more information, see Install the Azure classic CLI.

Wichtig

Für die Inhalte dieses Artikels wird die klassische Azure-Befehlszeilenschnittstelle benötigt.This article contains content that requires the Azure classic CLI. Die klassische Befehlszeilenschnittstelle ist erforderlich, da das aktuelle Release der Azure-Befehlszeilenschnittstelle die in diesem Artikel beschriebenen Features nicht unterstützt.The current release of the Azure CLI doesn't have support for the features outlined in this article, so the classic CLI is required.

Die klassische Befehlszeilenschnittstelle kann parallel zur modernen Azure-Befehlszeilenschnittstelle installiert werden. Es empfiehlt sich jedoch, für alle neuen Skripts und Implementierungen die Azure-Befehlszeilenschnittstelle zu verwenden (sofern die Features unterstützt werden).The classic CLI can be installed side by side with the modern Azure CLI, but we recommend the Azure CLI for all new scripts and deployments where feature support is available. Informationen zur Installation der klassischen Befehlszeilenschnittstelle finden Sie unter Installieren der klassischen Azure CLI.To install the classic CLI, see Install the Azure classic CLI. Informationen zur Installation der aktuellen Befehlszeilenschnittstelle finden Sie unter Installieren der Azure CLI.To install the current CLI, see Install the Azure CLI.

  1. Wechseln Sie in den Azure Resource Manager-Modus:Switch to Azure Resource Manager mode:

    azure config mode arm
    
  2. Authentifizieren Sie sich bei Ihrem Azure-Abonnement:Authenticate to your Azure subscription:

    azure login
    
  3. Wenden Sie eine Skriptaktion auf einen ausgeführten Cluster an:Apply a script action to a running cluster:

    azure hdinsight script-action create <clustername> -g <resourcegroupname> -n <scriptname> -u <scriptURI> -t <nodetypes>
    

    Falls Sie die Parameter für diesen Befehl weglassen, werden Sie zur Angabe der Parameter aufgefordert.If you omit parameters for this command, you're prompted for them. Wenn das mit -u angegebene Skript Parameter akzeptiert, können Sie diese mit dem Parameter -p angeben.If the script you specify with -u accepts parameters, you can specify them by using the -p parameter.

    Gültige Knotentypen sind headnode, workernode und zookeeper.Valid node types are headnode, workernode, and zookeeper. Wenn das Skript auf mehrere Knotentypen angewendet werden soll, geben Sie die gewünschten Typen an, und trennen Sie sie jeweils durch ein Semikolon ;.If the script should be applied to several node types, specify the types separated by a semicolon ;. Beispiel: -n headnode;workernode.For example, -n headnode;workernode.

    Fügen Sie --persistOnSuccess hinzu, um das Skript dauerhaft zu speichern.To persist the script, add --persistOnSuccess. Sie können das Skript auch zu einem späteren Zeitpunkt mithilfe von azure hdinsight script-action persisted set dauerhaft speichern.You can also persist the script later by using azure hdinsight script-action persisted set.

    Nach Abschluss des Auftrags wird eine Ausgabe wie die folgende zurückgegeben:After the job finishes, you get output like the following text:

     info:    Executing command hdinsight script-action create
     + Executing Script Action on HDInsight cluster
     data:    Operation Info
     data:    ---------------
     data:    Operation status:
     data:    Operation ID:  b707b10e-e633-45c0-baa9-8aed3d348c13
     info:    hdinsight script-action create command OK
    

Anwenden einer Skriptaktion auf einen ausgeführten Cluster mithilfe einer REST-APIApply a script action to a running cluster by using REST API

Weitere Informationen finden Sie unter Cluster REST API in Azure HDInsight (Cluster-REST-API in Azure HDInsight).See Cluster REST API in Azure HDInsight.

Anwenden einer Skriptaktion auf einen ausgeführten Cluster über das HDInsight .NET SDKApply a script action to a running cluster from the HDInsight .NET SDK

Ein Beispiel für die Anwendung von Skripts auf einen Cluster mithilfe des .NET SDK finden Sie unter Apply a Script Action against a running Linux-based HDInsight cluster (Anwenden einer Skriptaktion für einen ausgeführten Linux-basierten HDInsight-Cluster).For an example of using the .NET SDK to apply scripts to a cluster, see Apply a Script Action against a running Linux-based HDInsight cluster.

Anzeigen des Verlaufs und Höherstufen und Tieferstufen von SkriptaktionenView history and promote and demote script actions

Das Azure-PortalThe Azure portal

  1. Melden Sie sich beim Azure-Portal an.Sign in to the Azure portal.

  2. Wählen Sie im Menü links Alle Dienste aus.From the left menu, select All services.

  3. Wählen Sie unter ANALYSEN die Option HDInsight clusters (HDInsight-Cluster) aus.Under ANALYTICS, select HDInsight clusters.

  4. Wählen Sie in der Liste Ihren Cluster aus. Daraufhin wird die Standardansicht geöffnet.Select your cluster from the list, which opens the default view.

  5. Klicken Sie in der Standardansicht unter Einstellungen auf Script actions (Skriptaktionen).From the default view, under Settings, select Script actions.

  6. Im Abschnitt mit den Skriptaktionen wird ein Verlauf der Skripts für diesen Cluster angezeigt.A history of scripts for this cluster displays on the script actions section. Zu diesen Informationen gehört auch eine Liste der gespeicherten Skripts.This information includes a list of persisted scripts. Der folgende Screenshot zeigt, dass das Solr-Skript für diesen Cluster ausgeführt wurde.The following screenshot shows that the Solr script has been run on this cluster. Auf dem Screenshot sind keine permanenten Skripts zu sehen.The screenshot doesn't show any persisted scripts.

    Skriptaktionen

  7. Wählen Sie ein Skript aus dem Verlauf aus, um den Abschnitt Eigenschaften für dieses Skript anzuzeigen.Select a script from the history to display the Properties section for this script. Oben im Fenster können Sie das Skript erneut ausführen oder höherstufen.From the top of the screen, you can rerun the script or promote it.

    Skriptaktionen, Eigenschaften

  8. Sie können im Abschnitt mit den Skriptaktionen auch die Auslassungspunkte ( ... ) rechts neben den Einträgen auswählen, um Aktionen auszuführen.You can also select the ellipsis, ..., to the right of entries on the script actions section to perform actions.

    Skriptaktionen, Auslassungspunkte

Azure PowerShellAzure PowerShell

Cmdletcmdlet FunktionFunction
Get-AzHDInsightPersistedScriptAction Abrufen von Informationen zu permanenten SkriptaktionenRetrieve information on persisted script actions.
Get-AzHDInsightScriptActionHistory Abrufen eines Verlaufs der auf den Cluster angewendeten Skriptaktionen oder von Details zu einem bestimmten SkriptRetrieve a history of script actions applied to the cluster or details for a specific script.
Set-AzHDInsightPersistedScriptAction Höherstufen einer Ad-hoc-Skriptaktion zu einer permanenten SkriptaktionPromote an ad hoc script action to a persisted script action.
Remove-AzHDInsightPersistedScriptAction Tieferstufen einer permanenten Skriptaktion zu einer Ad-hoc-AktionDemote a persisted script action to an ad hoc action.

Wichtig

Remove-AzHDInsightPersistedScriptAction macht die durch ein Skript ausgeführten Aktionen nicht rückgängig.Remove-AzHDInsightPersistedScriptAction doesn't undo the actions performed by a script. Dieses Cmdlet entfernt nur das Flag für die dauerhafte Speicherung.This cmdlet only removes the persisted flag.

Das folgende Beispielskript veranschaulicht, wie die Cmdlets zum Höherstufen und anschließend zum Tieferstufen eines Skripts verwendet werden.The following example script demonstrates using the cmdlets to promote and then demote a script.

# Get a history of scripts
Get-AzHDInsightScriptActionHistory -ClusterName mycluster

# From the list, we want to get information on a specific script
Get-AzHDInsightScriptActionHistory -ClusterName mycluster `
    -ScriptExecutionId 635920937765978529

# Promote this to a persisted script
# Note: the script must have a unique name to be promoted
# if the name is not unique, you receive an error
Set-AzHDInsightPersistedScriptAction -ClusterName mycluster `
    -ScriptExecutionId 635920937765978529

# Demote the script back to ad hoc
# Note that demotion uses the unique script name instead of
# execution ID.
Remove-AzHDInsightPersistedScriptAction -ClusterName mycluster `
    -Name "Install Giraph"

Die klassische Azure-BefehlszeilenschnittstelleThe Azure classic CLI

Cmdletcmdlet FunktionFunction
azure hdinsight script-action persisted list <clustername> Abrufen einer Liste mit permanenten SkriptaktionenRetrieve a list of persisted script actions.
azure hdinsight script-action persisted show <clustername> <scriptname> Abrufen von Informationen zu einer bestimmten permanenten SkriptaktionRetrieve information on a specific persisted script action.
azure hdinsight script-action history list <clustername> Abrufen eines Verlaufs der auf den Cluster angewendeten SkriptaktionenRetrieve a history of script actions applied to the cluster.
azure hdinsight script-action history show <clustername> <scriptname> Abrufen von Informationen zu einer bestimmten SkriptaktionRetrieve information on a specific script action.
azure hdinsight script action persisted set <clustername> <scriptexecutionid> Höherstufen einer Ad-hoc-Skriptaktion zu einer permanenten SkriptaktionPromote an ad hoc script action to a persisted script action.
azure hdinsight script-action persisted delete <clustername> <scriptname> Tieferstufen einer permanenten Skriptaktion zu einer Ad-hoc-AktionDemote a persisted script action to an ad hoc action.

Wichtig

azure hdinsight script-action persisted delete macht die durch ein Skript ausgeführten Aktionen nicht rückgängig.azure hdinsight script-action persisted delete doesn't undo the actions performed by a script. Dieses Cmdlet entfernt nur das Flag für die dauerhafte Speicherung.This cmdlet only removes the persisted flag.

Das HDInsight .NET SDKThe HDInsight .NET SDK

Ein Beispiel für die Verwendung des .NET SDK zum Abrufen des Skriptverlaufs aus einem Cluster sowie zum Höherstufen oder Tieferstufen von Skripts finden Sie unter Apply a Script Action against a running Linux-based HDInsight cluster (Anwenden einer Skriptaktion für einen ausgeführten Linux-basierten HDInsight-Cluster).For an example of using the .NET SDK to retrieve script history from a cluster, promote or demote scripts, see Apply a Script Action against a running Linux-based HDInsight cluster.

Hinweis

Dieses Beispiel veranschaulicht auch die Installation einer HDInsight-Anwendung mithilfe des .NET SDK.This example also demonstrates how to install an HDInsight application by using the .NET SDK.

Unterstützung für Open-Source-Software in HDInsight-ClusternSupport for open-source software used on HDInsight clusters

Der Microsoft Azure HDInsight-Dienst verwendet eine Reihe von Open-Source-Technologien für Apache Hadoop.The Microsoft Azure HDInsight service uses an ecosystem of open-source technologies formed around Apache Hadoop. Microsoft Azure bietet lediglich allgemeinen Support für Open-Source-Technologien.Microsoft Azure provides a general level of support for open-source technologies. Weitere Informationen finden Sie unter Häufig gestellte Fragen zum Azure-Support im Abschnitt Supportumfang.For more information, see the Support Scope section of Azure Support FAQs. Der HDInsight-Dienst bietet zusätzliche Unterstützung für integrierte Komponenten.The HDInsight service provides an additional level of support for built-in components.

Im HDInsight-Dienst sind zwei Arten von Open-Source-Komponenten verfügbar:Two types of open-source components are available in the HDInsight service:

Warnung

Mit dem HDInsight-Cluster bereitgestellte Komponenten werden vollständig unterstützt.Components provided with the HDInsight cluster are fully supported. Der Microsoft-Support unterstützt Sie beim Isolieren und Beheben von Problemen im Zusammenhang mit diesen Komponenten.Microsoft Support helps to isolate and resolve issues related to these components.

Für benutzerdefinierte Komponenten steht wirtschaftlich angemessener Support für eine weiterführende Behandlung des Problems zur Verfügung.Custom components receive commercially reasonable support to help you further troubleshoot the issue. Unter Umständen kann Ihnen der Microsoft-Support bei der Lösung des Problems helfen.Microsoft Support might be able to resolve the issue. Möglicherweise werden Sie auch gebeten, verfügbare Kanäle für die Open-Source-Technologien in Anspruch zu nehmen, die über umfassende Kenntnisse für diese Technologien verfügen.Or they might ask you to engage available channels for the open-source technologies where deep expertise for that technology is found. Hierzu kommen zahlreiche Communitywebsites in Frage.Many community sites can be used. Beispiele wären etwa das MSDN-Forum für HDInsight und Stack Overflow.Examples are MSDN forum for HDInsight and Stack Overflow.

Für Apache-Projekte stehen auf der Apache-Website auch Projektwebsites zur Verfügung.Apache projects also have project sites on the Apache website. Ein Beispiel hierfür ist Hadoop.An example is Hadoop.

Der HDInsight-Dienst bietet mehrere Möglichkeiten, benutzerdefinierte Komponenten zu verwenden.The HDInsight service provides several ways to use custom components. Der Supportumfang ist unabhängig davon, wie die Komponente verwendet oder im Cluster installiert wird.The same level of support applies, no matter how a component is used or installed on the cluster. Die folgende Liste enthält die gängigsten Möglichkeiten für die Verwendung benutzerdefinierter Komponenten in HDInsight-Clustern:The following list describes the most common ways that custom components are used on HDInsight clusters:

  1. Auftragsübermittlung:Job submission. Hadoop-Aufträge und andere Auftragstypen, die benutzerdefinierte Komponenten ausführen oder verwenden, können an den Cluster übermittelt werden.Hadoop or other types of jobs that execute or use custom components can be submitted to the cluster.

  2. Clusteranpassung:Cluster customization. Während der Clustererstellung können Sie zusätzliche Einstellungen und benutzerdefinierte Komponenten angeben, die auf den Clusterknoten installiert werden.During cluster creation, you can specify additional settings and custom components that are installed on the cluster nodes.

  3. Beispiele:Samples. Für beliebte benutzerdefinierte Komponenten stellen Microsoft und andere Anbieter ggf. Beispiele für die Verwendung dieser Komponenten in HDInsight-Clustern bereit.For popular custom components, Microsoft and others might provide samples of how these components can be used on HDInsight clusters. Für diese Beispiele wird kein Support bereitgestellt.These samples are provided without support.

ProblembehandlungTroubleshooting

Über die Ambari-Webbenutzeroberfläche können Sie Informationen anzeigen, die von Skriptaktionen protokolliert wurden.You can use the Ambari web UI to view information logged by script actions. Wenn das Skript bei der Clustererstellung einen Fehlers verursacht hat, sind die Protokolle auch im Standardspeicherkonto verfügbar, das dem Cluster zugeordnet ist.If the script fails during cluster creation, the logs are also available in the default storage account associated with the cluster. Dieser Abschnitt enthält Informationen zum Abrufen der Protokolle mit den beiden folgenden Optionen:This section provides information on how to retrieve the logs by using both these options.

Apache Ambari-WebbenutzeroberflächeThe Apache Ambari web UI

  1. Navigieren Sie im Browser zu https://CLUSTERNAME.azurehdinsight.net.In your browser, go to https://CLUSTERNAME.azurehdinsight.net. Ersetzen Sie CLUSTERNAME durch den Namen Ihres HDInsight-Clusters.Replace CLUSTERNAME with the name of your HDInsight cluster.

    Geben Sie bei entsprechender Aufforderung den Namen (admin) und das Kennwort für den Cluster ein.When prompted, enter the admin account name, admin, and password for the cluster. Unter Umständen müssen die Administratoranmeldeinformationen in einem Webformular erneut eingegeben werden.You might have to reenter the admin credentials in a web form.

  2. Wählen Sie in der Leiste oben auf der Seite die Option ops aus.From the bar at the top of the page, select the ops entry. Daraufhin wird eine Liste mit aktuellen und vorherigen Vorgängen angezeigt, die über Ambari für den Cluster ausgeführt wurden.A list displays current and previous operations done on the cluster through Ambari.

    Ambari-Webbenutzeroberfläche mit ausgewählter Option "ops"

  3. Suchen Sie nach den Einträgen, die run_customscriptaction in der Spalte Vorgänge enthalten.Find the entries that have run_customscriptaction in the Operations column. Diese Einträge werden erstellt, wenn die Skriptaktionen ausgeführt werden.These entries are created when the script actions run.

    Screenshot von Vorgängen

    Wählen Sie den Eintrag run\customscriptaction aus, und navigieren Sie durch die Links, um die Ausgabe für STDOUT und STDERR anzuzeigen.To view the STDOUT and STDERR output, select the run\customscriptaction entry and drill down through the links. Diese Ausgabe wird beim Ausführen des Skripts generiert und kann hilfreiche Informationen enthalten.This output is generated when the script runs and might have useful information.

Rufen Sie Protokolle über das Standardspeicherkonto auf.Access logs from the default storage account

Für den Fall, dass die Clustererstellung aufgrund eines Fehlers in einem Skript nicht erfolgreich ist, finden Sie die Protokolle im Clusterspeicherkonto.If cluster creation fails because of a script error, the logs are kept in the cluster storage account.

  • Die Speicherprotokolle stehen unter \STORAGE_ACCOUNT_NAME\DEFAULT_CONTAINER_NAME\custom-scriptaction-logs\CLUSTER_NAME\DATE zur Verfügung.The storage logs are available at \STORAGE_ACCOUNT_NAME\DEFAULT_CONTAINER_NAME\custom-scriptaction-logs\CLUSTER_NAME\DATE.

    Screenshot von Vorgängen

    In diesem Verzeichnis sind die Protokolle separat nach Hauptknoten, Workerknoten und ZooKeeper-Knoten strukturiert.Under this directory, the logs are organized separately for headnode, worker node, and zookeeper node. Hierzu folgende Beispiele:See the following examples:

    • Hauptknoten: <uniqueidentifier>AmbariDb-hn0-<generated_value>.cloudapp.netHeadnode: <uniqueidentifier>AmbariDb-hn0-<generated_value>.cloudapp.net

    • Workerknoten: <uniqueidentifier>AmbariDb-wn0-<generated_value>.cloudapp.netWorker node: <uniqueidentifier>AmbariDb-wn0-<generated_value>.cloudapp.net

    • ZooKeeper-Knoten: <uniqueidentifier>AmbariDb-zk0-<generated_value>.cloudapp.netZookeeper node: <uniqueidentifier>AmbariDb-zk0-<generated_value>.cloudapp.net

  • Alle Ausgaben vom Typ stdout und stderr des entsprechenden Hosts werden in das Speicherkonto hochgeladen.All stdout and stderr of the corresponding host is uploaded to the storage account. Für die einzelnen Skriptaktionen sind jeweils die Dateien output-*.txt und errors-*.txt vorhanden.There's one output-*.txt and errors-*.txt for each script action. Die Datei output-*.txt enthält Informationen zum URI des Skripts, das auf dem Host ausgeführt wurde.The output-*.txt file contains information about the URI of the script that was run on the host. Der folgende Text ist ein Beispiel für diese Informationen:The following text is an example of this information:

      'Start downloading script locally: ', u'https://hdiconfigactions.blob.core.windows.net/linuxrconfigactionv01/r-installer-v01.sh'
    
  • Es kann sein, dass Sie wiederholt eine Skriptaktion mit demselben Namen erstellen.It's possible that you repeatedly create a script action cluster with the same name. In diesem Fall können Sie die relevanten Protokolle anhand des Datums im Ordnernamen unterscheiden.In that case, you can distinguish the relevant logs based on the DATE folder name. Die Ordnerstruktur für einen an verschiedenen Tagen erstellten Cluster namens mycluster ähnelt beispielsweise den folgenden Protokolleinträgen:For example, the folder structure for a cluster, mycluster, created on different dates appears similar to the following log entries:

    \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\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

  • Wenn Sie am gleichen Tag einen Skriptaktionscluster mit demselben Namen erstellen, können Sie die relevanten Protokolldateien anhand des eindeutigen Präfixes ermitteln.If you create a script action cluster with the same name on the same day, you can use the unique prefix to identify the relevant log files.

  • Wenn Sie gegen 24:00 Uhr (Mitternacht) einen Cluster erstellen, umfassen die Protokolldateien unter Umständen zwei Tage.If you create a cluster near 12:00 AM, midnight, it's possible that the log files span across two days. In diesem Fall sehen Sie für den gleichen Cluster zwei Ordner mit unterschiedlichen Datumsangaben.In that case, you see two different date folders for the same cluster.

  • Das Hochladen von Protokolldateien in den Standardcontainer kann insbesondere bei großen Clustern bis zu fünf Minuten dauern.Uploading log files to the default container can take up to five minutes, especially for large clusters. Wenn Sie also auf die Protokolle zugreifen möchten, sollten Sie nicht sofort den Cluster löschen, falls eine Skriptaktion nicht erfolgreich war.So if you want to access the logs, you shouldn't immediately delete the cluster if a script action fails.

Ambari-WatchdogAmbari watchdog

Warnung

Lassen Sie das Kennwort für die Ambari-Watchdog-Komponente (hdinsightwatchdog) in Ihrem Linux-basierten HDInsight-Cluster unverändert.Don't change the password for the Ambari watchdog, hdinsightwatchdog, on your Linux-based HDInsight cluster. Wenn Sie das Kennwort für dieses Konto ändern, ist es nicht mehr möglich, im HDInsight-Cluster neue Skriptaktionen auszuführen.Changing the password for this account breaks the ability to run new script actions on the HDInsight cluster.

„Cannot import name BlobService“ (Name BlobService kann nicht importiert werden)Can't import name BlobService

Symptome:Symptoms. Bei der Skriptaktion tritt ein Fehler auf.The script action fails. Eine Fehlermeldung ähnlich der folgenden wird angezeigt, wenn Sie den Vorgang in Ambari anzeigen:Text similar to the following error displays when you view the operation in 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

Ursache.Cause. Dieser Fehler tritt auf, wenn Sie den Python Azure Storage-Client aktualisieren, der im HDInsight-Cluster enthalten ist.This error occurs if you upgrade the Python Azure Storage client that's included with the HDInsight cluster. HDInsight erwartet Azure Storage-Client 0.20.0.HDInsight expects Azure Storage client 0.20.0.

Lösung.Resolution. Stellen Sie zur Behebung dieses Fehlers mithilfe von ssh manuell eine Verbindung mit den einzelnen Clusterknoten her.To resolve this error, manually connect to each cluster node by using ssh. Führen Sie den folgenden Befehl aus, um die korrekte Storage-Clientversion neu zu installieren:Run the following command to reinstall the correct storage client version:

sudo pip install azure-storage==0.20.0

Informationen zum Herstellen einer SSH-Verbindung mit dem Cluster finden Sie unter Herstellen einer Verbindung mit HDInsight (Apache Hadoop) per SSH.For information on connecting to the cluster with SSH, see Connect to HDInsight (Apache Hadoop) by using SSH.

Verlauf zeigt die Skripts nicht an, die bei der Clustererstellung verwendet wurdenHistory doesn't show the scripts used during cluster creation

Wenn der Cluster vor dem 15. März 2016 erstellt wurde, wird im Verlauf der Skriptaktionen unter Umständen kein Eintrag angezeigt.If your cluster was created before March 15, 2016, you might not see an entry in script action history. Durch das Ändern der Größe des Clusters werden die Skripts im Skriptaktionsverlaufs angezeigt.Resizing the cluster causes the scripts to appear in script action history.

Hierfür gelten zwei Ausnahmen:There are two exceptions:

  • Ihr Cluster wurde vor dem 1. September 2015 erstellt.Your cluster was created before September 1, 2015. Dies ist das Datum, an dem die Skriptaktionen eingeführt wurden.This date is when script actions were introduced. Für Cluster, die vor diesem Datum erstellt wurden, können also keine Skriptaktionen für die Clustererstellung verwendet worden sein.Any cluster created before this date couldn't have used script actions for cluster creation.

  • Sie haben bei der Clustererstellung mehrere Skriptaktionen verwendet.You used multiple script actions during cluster creation. Oder: Sie haben für mehrere Skripts den gleichen Namen oder den gleichen Namen und URI, aber unterschiedliche Parameter verwendet.Or you used the same name for multiple scripts or the same name, same URI, but different parameters for multiple scripts. In diesen Fällen erhalten Sie eine Fehlermeldung wie die folgende:In these cases, you get the following error:

    Aufgrund von in Konflikt stehenden Skriptnamen in vorhandenen Skripts können in diesem Cluster keine neuen Skriptaktionen ausgeführt werden.No new script actions can be run on this cluster because of conflicting script names in existing scripts. Alle bei der Clustererstellung angegebenen Skriptnamen müssen eindeutig sein.Script names provided at cluster creation must be all unique. Vorhandene Skripts werden beim Ändern der Größe ausgeführt.Existing scripts are run on resize.

Nächste SchritteNext steps