Hinzufügen zusätzlicher Speicherkonten zu HDInsight

Erfahren Sie, wie Sie Skriptaktionen verwenden, um in HDInsight zusätzliche Azure Storage-Konten hinzuzufügen. Mit den Schritten in diesem Dokument fügen Sie einem vorhandenen HDInsight-Cluster ein Azure Storage-Konto hinzu. Dieser Artikel bezieht sich auf Speicherkonten und nicht auf das Standardclusterspeicherkonto oder weitere Speicher wie Azure Data Lake Storage Gen2.

Wichtig

Die Informationen in diesem Dokument beziehen sich auf das Hinzufügen zusätzlicher Speicherkonten zu einem Cluster, nachdem dieser erstellt wurde. Informationen zum Hinzufügen von Speicherkonten während der Clustererstellung finden Sie unter Einrichten von Clustern in HDInsight mit Apache Hadoop, Apache Spark, Apache Kafka und anderen.

Voraussetzungen

Funktionsweise

Während der Verarbeitung führt dieses Skript folgende Aktionen aus:

  • Wenn das Speicherkonto bereits in der core-site.xml-Konfiguration für den Cluster vorhanden ist, wird das Skript beendet, und keine weiteren Aktionen werden ausgeführt.

  • Es wird überprüft, ob das Speicherkonto vorhanden ist und mit dem Schlüssel darauf zugegriffen werden kann.

  • Der Schlüssel wird mit den Clusteranmeldeinformationen verschlüsselt.

  • Das Speicherkonto wird der core-site.xml-Datei hinzugefügt.

  • Die Dienste Apache Oozie, Apache Hadoop YARN, Apache Hadoop MapReduce2 und Apache Hadoop HDFS werden beendet. Durch das Beenden und Starten dieser Dienste wird ihnen die Verwendung des neuen Speicherkontos ermöglicht.

Warnung

Die Verwendung eines Speicherkontos an einem anderen Ort als dem HDInsight-Cluster wird nicht unterstützt.

Hinzufügen von Speicherkonten

Verwenden Sie eine Skriptaktion, um die Änderungen anzuwenden. Beachten Sie Folgendes:

Eigenschaft Wert
Bash-Skript-URI https://hdiconfigactions.blob.core.windows.net/linuxaddstorageaccountv01/add-storage-account-v01.sh
Knotentyp(en) Head
Parameter ACCOUNTNAME ACCOUNTKEY -p (optional)
  • ACCOUNTNAME ist der Name des Speicherkontos, das dem HDInsight-Cluster hinzugefügt werden soll.
  • ACCOUNTKEY ist der Zugriffsschlüssel für ACCOUNTNAME.
  • -p ist optional. Bei Angabe wird der Schlüssel nicht verschlüsselt und im Klartext in der Datei „core-site.xml“ gespeichert.

Überprüfung

Wenn Sie beim Anzeigen des HDInsight-Clusters im Azure-Portal die Option Speicherkonten unter Eigenschaften auswählen, werden Speicherkonten, die über diese Skriptaktion hinzugefügt wurden, nicht angezeigt. Azure PowerShell und die Azure-Befehlszeilenschnittstelle zeigen das zusätzliche Speicherkonto ebenfalls nicht an. Die Speicherinformationen werden nicht angezeigt, da vom Skript nur die core-site.xml-Konfiguration für den Cluster geändert wird. Diese Informationen werden nicht verwendet, wenn Sie die Clusterinformationen mit Azure-Verwaltungs-APIs abrufen.

Um den zusätzlichen Speicherplatz zu überprüfen, verwenden Sie eine der folgenden Methoden:

PowerShell

Das Skript gibt die Namen der dem angegebenen Cluster zugeordneten Speicherkonten zurück. Ersetzen Sie CLUSTERNAME durch den tatsächlichen Clusternamen, und führen Sie dann das Skript aus.

# Update values
$clusterName = "CLUSTERNAME"

$creds = Get-Credential -UserName "admin" -Message "Enter the cluster login credentials"

$clusterName = $clusterName.ToLower();

# getting service_config_version
$resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName`?fields=Clusters/desired_service_config_versions/HDFS" `
    -Credential $creds -UseBasicParsing
$respObj = ConvertFrom-Json $resp.Content

$configVersion=$respObj.Clusters.desired_service_config_versions.HDFS.service_config_version

$resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/configurations/service_config_versions?service_name=HDFS&service_config_version=$configVersion" `
    -Credential $creds
$respObj = ConvertFrom-Json $resp.Content

# extract account names
$value = ($respObj.items.configurations | Where type -EQ "core-site").properties | Get-Member -membertype properties | Where Name -Like "fs.azure.account.key.*"
foreach ($name in $value ) { $name.Name.Split(".")[4]}

Apache Ambari

  1. Navigieren Sie in einem Webbrowser zu https://CLUSTERNAME.azurehdinsight.net, wobei CLUSTERNAME der Name Ihres Clusters ist.

  2. Navigieren Sie zu HDFS>Configs>Advanced>Custom core-site (HDFS > Konfigurationen > Erweitert > Benutzerdefinierte core-site).

  3. Beachten Sie die Schlüssel, die mit fs.azure.account.key beginnen. Der Kontoname ist Teil des Schlüssels, wie in diesem Beispielbild veranschaulicht:

    Überprüfung durch Apache Ambari

Entfernen des Speicherkontos

  1. Navigieren Sie in einem Webbrowser zu https://CLUSTERNAME.azurehdinsight.net, wobei CLUSTERNAME der Name Ihres Clusters ist.

  2. Navigieren Sie zu HDFS>Configs>Advanced>Custom core-site (HDFS > Konfigurationen > Erweitert > Benutzerdefinierte core-site).

  3. Entfernen Sie die folgenden Schlüssel:

    • fs.azure.account.key.<STORAGE_ACCOUNT_NAME>.blob.core.windows.net
    • fs.azure.account.keyprovider.<STORAGE_ACCOUNT_NAME>.blob.core.windows.net

Nachdem Sie diese Schlüssel entfernt und die Konfiguration gespeichert haben, müssen Sie Oozie, Yarn, MapReduce2, HDFS und Hive nacheinander neu starten.

Bekannte Probleme

Speicherfirewall

Denken Sie daran, die Ausnahme Vertrauenswürdige Microsoft-Dienste zulassen zu aktivieren, damit HDInsight auf Ihr Speicherkonto zugreifen kann, wenn Sie Ihr Speicherkonto mit den Firewalls und virtuelle Netzwerke-Einschränkungen für Ausgewählte Netzwerke schützen.

Zugriff auf den Speicher ist nach dem Ändern des Schlüssels nicht möglich

Wenn Sie den Schlüssel für ein Speicherkonto ändern, kann HDInsight nicht mehr auf das Speicherkonto zugreifen. HDInsight verwendet eine zwischengespeicherte Kopie des Schlüssels in der Datei „core-site.xml“ für den Cluster. Diese zwischengespeicherte Kopie muss mit dem neuen Schlüssel aktualisiert werden.

Das wiederholte Ausführen der Skriptaktion aktualisiert den Schlüssel nicht, da das Skript überprüft, ob bereits ein Eintrag für das Speicherkonto vorhanden ist. Wenn bereits ein Eintrag vorhanden ist, werden keine Änderungen vorgenommen.

So umgehen Sie dieses Problem:

Nächste Schritte

Sie haben gelernt, wie Sie einem vorhandenen HDInsight-Cluster zusätzliche Speicherkonten hinzufügen. Weitere Informationen zu Skriptaktionen finden Sie unter Anpassen Linux-basierter HDInsight-Cluster mithilfe von Skriptaktionen.