Partage via


Ajouter des comptes de stockage supplémentaires à HDInsight

Découvrez comment utiliser des actions de script pour ajouter des comptes Stockage Azure supplémentaires dans HDInsight. Les étapes décrites dans ce document permettent d’ajouter un compte de stockage à un cluster HDInsight existant. Cet article s’applique aux comptes de stockage (différents du compte de stockage en cluster par défaut) et pas à un stockage supplémentaire comme Azure Data Lake Storage Gen2.

Important

Les informations contenues dans ce document portent sur l’ajout d’un ou de plusieurs comptes de stockage supplémentaires à un cluster après sa création. Pour plus d’informations sur l’ajout de comptes de stockage lors de la création du cluster, consultez Configurer des clusters dans HDInsight avec Apache Hadoop, Apache Spark, Apache Kafka, etc.

Prérequis

Fonctionnement

Pendant le traitement, le script effectue les opérations suivantes :

  • Si le compte de stockage existe déjà dans la configuration core-site.xml du cluster, le script s’arrête et aucune action supplémentaire n’est effectuée.

  • Il vérifie que le compte de stockage existe et est accessible à l’aide de la clé.

  • Il chiffre la clé à l’aide des informations d’identification du cluster.

  • Il ajoute le compte de stockage dans le fichier core-site.xml.

  • Arrête et redémarre les services Apache Oozie, Apache Hadoop YARN, Apache Hadoop MapReduce2 et Apache Hadoop HDFS. L’arrêt et le redémarrage de ces services leur permettent d’utiliser le nouveau compte de stockage.

Avertissement

L’utilisation d’un compte de stockage dans un autre emplacement que le cluster HDInsight n’est pas prise en charge.

Ajout d’un compte de stockage

Utilisez une action de script pour appliquer les modifications avec les considérations suivantes :

Propriété Valeur
URI de script bash https://hdiconfigactions.blob.core.windows.net/linuxaddstorageaccountv01/add-storage-account-v01.sh
Type(s) de nœud Head
Paramètres ACCOUNTNAME ACCOUNTKEY -p (facultatif)
  • ACCOUNTNAME est le nom du compte de stockage à ajouter au cluster HDInsight.
  • ACCOUNTKEY est la clé d’accès pour ACCOUNTNAME.
  • -p est facultatif. si ce paramètre est spécifié, la clé n’est pas chiffrée et est stockée en texte brut dans le fichier core-site.xml.

Vérification

Lorsque vous affichez le cluster HDInsight sur le Portail Azure, sélectionnez l’entrée Comptes de stockage sous Propriétés qui n’affichent pas les comptes de stockage ajoutés via cette action de script. Azure PowerShell et Azure CLI n’affichent pas non plus les comptes de stockage supplémentaires. Les informations de stockage n’apparaissent pas, car le script modifie uniquement la configuration core-site.xml du cluster. Ces informations ne sont pas utilisées pour récupérer les informations du cluster avec les API de gestion Azure.

Pour vérifier que le stockage supplémentaire utilise l’une des méthodes affichées :

PowerShell

Le script renvoie le ou les noms du compte de stockage associé au cluster donné. Remplacez CLUSTERNAME par le nom de cluster réel, puis exécutez le script.

# 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. Dans un navigateur web, accédez à https://CLUSTERNAME.azurehdinsight.net, où CLUSTERNAME est le nom de votre cluster.

  2. Accédez à HDFS>Configurations>Avancé>Configuration core-site personnalisée.

  3. Observez les clés qui commencent par fs.azure.account.key. Le nom du compte fait partie de la clé, comme illustré dans cette image d’exemple :

    vérification via Apache Ambari.

Supprimer le compte de stockage

  1. Dans un navigateur web, accédez à https://CLUSTERNAME.azurehdinsight.net, où CLUSTERNAME est le nom de votre cluster.

  2. Accédez à HDFS>Configurations>Avancé>Configuration core-site personnalisée.

  3. Supprimez les clés suivantes :

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

Après avoir supprimé ces clés et enregistré la configuration, vous devez redémarrer Oozie, Yarn, MapReduce2, HDFS et Hive l’un après l’autre.

Problèmes connus

Pare-feu de stockage

Si vous choisissez de sécuriser votre compte de stockage à l’aide des restrictions de pare-feu et réseaux virtuels sur des réseaux sélectionnés, veillez à activer l’exception Autoriser les services approuvés de Microsoft afin que HDInsight puisse accéder à votre compte de stockage.

Impossible d’accéder au stockage après avoir modifié la clé

Si vous modifiez la clé d’un compte de stockage, HDInsight ne peut plus accéder au compte de stockage. HDInsight utilise une copie de la clé mise en cache dans le fichier core-site.xml pour le cluster. Cette copie mise en cache doit être mise à jour pour correspondre à la nouvelle clé.

Si vous exécutez de nouveau l’action de script, la clé n’est pas mise à jour, car le script vérifie s’il existe déjà une entrée pour le compte de stockage. S’il existe déjà une entrée, aucune modification n’est apportée.

Pour contourner ce problème :

Étapes suivantes

Vous avez appris à ajouter des comptes de stockage supplémentaires à un cluster HDInsight existant. Pour plus d’informations sur les actions de script, consultez Personnalisation de clusters HDInsight basés sur Linux à l’aide d’une d’action de script.