Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure HDInsight fournit une méthode de configuration appelée actions de script qui appellent des scripts personnalisés pour personnaliser le cluster. Ces scripts sont utilisés pour installer des composants supplémentaires et modifier les paramètres de configuration. Les actions de script peuvent être utilisées pendant ou après la création du cluster.
Les actions de script peuvent également être publiées sur la Place de marché Azure en tant qu’application HDInsight. Pour plus d’informations sur les applications HDInsight, consultez Publier une application HDInsight sur la Place de marché Azure.
Comprendre les actions de script
Une action de script est un script Bash qui s’exécute sur les nœuds d’un cluster HDInsight. Les caractéristiques et fonctionnalités des actions de script sont les suivantes :
L’URI du script Bash (emplacement pour accéder au fichier) doit être accessible à partir du fournisseur de ressources HDInsight et du cluster.
Voici les emplacements de stockage possibles :
Pour les clusters standard (non ESP) :
Un blob est un compte de stockage Azure utilisé comme compte de stockage principal ou supplémentaire pour le cluster HDInsight. HDInsight est autorisé à accéder à ces deux types de comptes de stockage lors de la création du cluster.
Important
Ne faites pas pivoter la clé de stockage sur ce compte de stockage Azure, car cela entraîne l’échec des actions de script suivantes avec des scripts stockés là-bas.
Data Lake Storage Gen1 : le principal de service UTILISÉ par HDInsight pour accéder à Data Lake Storage doit avoir un accès en lecture au script. Le format d’URI du script Bash est
adl://DATALAKESTOREACCOUNTNAME.azuredatalakestore.net/path_to_file.Data Lake Storage Gen2 n’est pas recommandé d’utiliser pour les actions de script.
abfs://n’est pas pris en charge pour l’URI du script Bash.https://Les URI sont possibles, mais celles-ci fonctionnent pour les conteneurs qui ont un accès public et le pare-feu ouvert pour le fournisseur de ressources HDInsight, et ne sont donc pas recommandées.Un service de partage de fichiers public accessible via les chemins
https://. Par exemple, Azure Blob, GitHub ou OneDrive. Pour obtenir des exemples d’URI, consultez Exemples de scripts d'actions.
Pour les clusters avec ESP, les URI
wasb://,wasbs://ouhttp[s]://sont pris en charge.
Les actions de script peuvent être limitées à s’exécuter uniquement sur certains types de nœuds. par exemple des nœuds principaux ou des nœuds worker.
Les actions de script peuvent être conservées ou ad hoc.
- Les actions de script persistantes doivent avoir un nom unique. Les scripts persistants sont utilisés pour personnaliser les nouveaux nœuds Worker ajoutés au cluster via des opérations de mise à l’échelle. Un script persistant peut également appliquer des modifications à un autre type de nœud lors de la mise à l’échelle des opérations. Un exemple est un nœud principal.
- Les scripts ad hoc ne sont pas conservés. Les actions de script utilisées lors de la création du cluster sont automatiquement conservées. Ils ne sont pas appliqués aux nœuds Worker ajoutés au cluster une fois le script exécuté. Vous pouvez ensuite promouvoir un script ad hoc vers un script persistant ou rétrograder un script persistant vers un script ad hoc . Les scripts qui échouent ne sont pas conservés, même si vous indiquez spécifiquement qu’ils doivent l'être.
Les actions de script peuvent accepter les paramètres utilisés par le script pendant l’exécution.
Les actions de script s’exécutent avec des privilèges de niveau racine sur les nœuds du cluster.
Les actions de script peuvent être utilisées via le portail Azure, Azure PowerShell, Azure CLI ou le Kit de développement logiciel (SDK) .NET HDInsight.
Les actions de script qui suppriment ou modifient des fichiers de service sur la machine virtuelle peuvent avoir un impact sur l’intégrité et la disponibilité du service.
Le cluster conserve un historique de tous les scripts qui ont été exécutés. L’historique vous permet de trouver l’ID d’un script pour les opérations de promotion ou de rétrogradation.
Important
Il n’existe aucun moyen automatique d’annuler les modifications apportées par une action de script. Inversez manuellement les modifications ou fournissez un script qui les inverse.
Permissions
Pour un cluster HDInsight joint à un domaine, il existe deux autorisations Apache Ambari requises lorsque vous utilisez des actions de script avec le cluster :
- AMBARI.RUN_CUSTOM_COMMAND. Le rôle Administrateur Ambari a cette autorisation par défaut.
- CLUSTER.RUN_CUSTOM_COMMAND. L’administrateur de cluster HDInsight et l’administrateur Ambari disposent de cette autorisation par défaut.
Pour plus d’informations sur l’utilisation des autorisations avec HDInsight joint à un domaine, consultez Gérer les clusters HDInsight avec le package Sécurité Entreprise.
Contrôle d’accès
Si vous n’êtes pas l’administrateur ou le propriétaire de votre abonnement Azure, votre compte doit avoir au moins Contributor accès au groupe de ressources qui contient le cluster HDInsight.
Une personne disposant au moins d’un accès Contributeur à l’abonnement Azure doit avoir précédemment inscrit le fournisseur. L’inscription du fournisseur se produit lorsqu’un utilisateur disposant d’un accès Contributeur à l’abonnement crée une ressource. Pour ne pas créer de ressource, consultez inscrire un fournisseur à l’aide de REST.
Obtenez plus d’informations sur l’utilisation de la gestion des accès :
- Prise en main de la gestion des accès dans le portail Azure
- Attribuer des rôles Azure pour gérer l’accès à vos ressources d’abonnement Azure
Méthodes d’utilisation d’actions de script
Vous avez la possibilité de configurer une action de script à exécuter lors de la création du cluster ou de l’exécuter sur un cluster existant.
Action de script dans le processus de création du cluster
Les actions de script utilisées lors de la création du cluster sont légèrement différentes des actions de script exécutées sur un cluster existant :
- Le script est automatiquement rendu persistant.
- Un échec dans le script peut entraîner l’échec du processus de création du cluster.
Le diagramme suivant illustre le moment où l’action de script s’exécute pendant le processus de création :
Le script s’exécute pendant la configuration de HDInsight. Le script s’exécute en parallèle sur tous les nœuds spécifiés dans le cluster. Il s’exécute avec des privilèges racines sur les nœuds.
Vous pouvez effectuer des opérations telles que l’arrêt et le démarrage des services, y compris les services liés à Apache Hadoop. Si vous arrêtez les services, vérifiez que Ambari et d’autres services Hadoop sont en cours d’exécution avant la fin du script. Ces services requis déterminent l’intégrité et l’état du cluster pendant sa création.
Lors de la création du cluster, vous pouvez utiliser plusieurs actions de script à la fois. Ces scripts sont appelés dans l’ordre dans lequel ils ont été spécifiés.
Note
Si le script est présent dans un autre compte de stockage autre que celui spécifié en tant que stockage de cluster (au moment de la création du cluster), il aura besoin d’un accès public.
Important
Les actions de script doivent se terminer dans les 60 minutes ou expirent. Pendant l’approvisionnement du cluster, le script s’exécute simultanément avec d’autres processus d’installation et de configuration. La concurrence pour les ressources telles que le temps processeur ou la bande passante réseau peut faire en sorte que le script mette plus de temps à se terminer que dans votre environnement de développement.
Pour réduire le temps nécessaire à l’exécution du script, évitez les tâches telles que le téléchargement et la compilation d’applications à partir de la source. Précompiler les applications et stocker le fichier binaire dans Stockage Azure.
Action de script sur un cluster en cours d’exécution
Un échec de script sur un cluster déjà en cours d’exécution n’entraîne pas automatiquement l’échec du cluster. Une fois un script terminé, le cluster doit revenir à un état en cours d’exécution. Même si le cluster a un état en cours d’exécution, le script ayant échoué peut avoir perturbé le système. Par exemple, un script peut supprimer les fichiers nécessaires au cluster.
Les actions de script s'exécutent avec des privilèges d'administrateur. Veillez à comprendre ce que fait un script avant de l’appliquer à votre cluster.
Lorsque vous appliquez un script à un cluster, l’état du cluster passe de l’exécution à Accepté. Ensuite, il passe à la configuration HDInsight et, enfin, revient à l’exécution pour les scripts réussis. L’état du script est consigné dans l’historique des actions du script. Ces informations vous indiquent si le script a réussi ou échoué. Par exemple, l’applet Get-AzHDInsightScriptActionHistory de commande PowerShell affiche l’état d’un script. Elle retourne des informations similaires au texte suivant :
ScriptExecutionId : 635918532516474303
StartTime : 8/14/2017 7:40:55 PM
EndTime : 8/14/2017 7:41:05 PM
Status : Succeeded
Important
Si vous modifiez l’utilisateur du cluster, l’administrateur, le mot de passe une fois le cluster créé, les actions de script exécutées sur ce cluster peuvent échouer. Si vous avez des actions de script persistantes qui ciblent des nœuds de travail, ces scripts peuvent échouer lorsque vous redimensionnez le cluster.
Exemples de scripts d'action
Les scripts d’action peuvent être utilisés via les utilitaires suivants :
- Portail Azure
- Azure PowerShell
- Azure CLI
- HDInsight .NET SDK
HDInsight fournit des scripts pour installer les composants suivants sur les clusters HDInsight :
| Nom | Scénario |
|---|---|
| Ajouter un compte de stockage Azure |
https://hdiconfigactions.blob.core.windows.net/linuxaddstorageaccountv01/add-storage-account-v01.sh. Consultez Ajouter des comptes de stockage supplémentaires à HDInsight. |
| Installer Hue |
https://hdiconfigactions.blob.core.windows.net/linuxhueconfigactionv02/install-hue-uber-v02.sh. Consultez Installer et utiliser Hue sur des clusters Hadoop HDInsight. |
| Précharger des bibliothèques Hive |
https://hdiconfigactions.blob.core.windows.net/linuxsetupcustomhivelibsv01/setup-customhivelibs-v01.sh. Consultez Ajouter des bibliothèques Apache Hive personnalisées lors de la création de votre cluster HDInsight. |
Action de script lors de la création du cluster
Cette section explique les différentes façons d’utiliser des actions de script lorsque vous créez un cluster HDInsight.
Utiliser une action de script lors de la création du cluster à partir du portail Azure
Commencez à créer un cluster comme décrit dans Créer des clusters Linux dans HDInsight à l’aide du portail Azure. Sous l’onglet Configuration + tarification , sélectionnez + Ajouter une action de script.
Utilisez l’entrée Sélectionner un script pour sélectionner un script prédéfinyé. Pour utiliser un script personnalisé, sélectionnez Personnalisé. Fournissez ensuite l’URI de script Name et Bash pour votre script.
Le tableau suivant décrit les éléments du formulaire :
Propriété Valeur Sélectionner un script Pour utiliser votre propre script, sélectionnez Personnalisé. Sinon, sélectionnez l’un des scripts fournis. Nom Spécifiez un nom pour l’action de script. URI de script bash Spécifiez l’URI du script. Chef/Travailleur/ZooKeeper Spécifiez les nœuds sur lesquels le script est exécuté : Head, Worker ou ZooKeeper. Paramètres Spécifiez les paramètres, si nécessaire par le script. Utilisez l’option Conserver cette action de script pour vous assurer que le script sera appliqué aux nœuds lors des opérations de mise à l’échelle.
Sélectionnez Créer pour enregistrer le script. Vous pouvez ensuite utiliser + Envoyer nouveau pour ajouter un autre script.
Lorsque vous avez terminé d’ajouter des scripts, vous revenez à l’onglet Configuration + tarification .
Effectuez les étapes de création de cluster restantes comme d’habitude.
Utiliser une action de script à partir de modèles Azure Resource Manager
Les actions de script peuvent être utilisées avec des modèles Azure Resource Manager. Pour obtenir un exemple, consultez Créer un cluster Linux HDInsight et exécuter une action de script.
Dans cet exemple, l’action de script est ajoutée à l’aide du code suivant :
"scriptActions": [
{
"name": "setenvironmentvariable",
"uri": "[parameters('scriptActionUri')]",
"parameters": "headnode"
}
]
Obtenez plus d’informations sur le déploiement d’un modèle :
- Déployer des ressources avec des modèles Resource Manager et Azure PowerShell
- Déployer des ressources avec des modèles Resource Manager et Azure CLI
Utiliser une action de script lors de la création d’un cluster à partir d’Azure PowerShell
Dans cette section, vous utilisez l’applet de commande Add-AzHDInsightScriptAction pour appeler des scripts pour personnaliser un cluster. Avant de commencer, veillez à installer et configurer Azure PowerShell. Pour utiliser ces commandes PowerShell, vous avez besoin du module AZ.
Le script suivant montre comment appliquer une action de script lorsque vous créez un cluster à l’aide de 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
La création du cluster peut prendre plusieurs minutes.
Utiliser une action de script lors de la création du cluster à partir du Kit de développement logiciel (SDK) .NET HDInsight
Le SDK .NET HDInsight fournit des bibliothèques clientes qui facilitent l’utilisation de HDInsight à partir d’une application .NET. Pour obtenir un exemple de code, consultez Actions de script.
Action de script sur un cluster en cours d’exécution
Cette section explique comment appliquer des actions de script sur un cluster en cours d’exécution.
Appliquer une action de script à un cluster en cours d’exécution à partir du portail Azure
Connectez-vous au portail Azure et recherchez votre cluster.
Dans l’affichage par défaut, sous Paramètres, sélectionnez Actions de script.
En haut de la page Actions de script , sélectionnez + Envoyer nouveau.
Utilisez l’entrée Sélectionner un script pour sélectionner un script prédéfinyé. Pour utiliser un script personnalisé, sélectionnez Personnalisé. Fournissez ensuite l’URI de script Name et Bash pour votre script.
Le tableau suivant décrit les éléments du formulaire :
Propriété Valeur Sélectionner un script Pour utiliser votre propre script, sélectionnez personnalisé. Sinon, sélectionnez un script fourni. Nom Spécifiez un nom pour l’action de script. Bash script URI Spécifiez l’URI du script. Chef/Travailleur/Gardien Spécifiez les nœuds sur lesquels le script est exécuté : Head, Worker ou ZooKeeper. Paramètres Spécifiez les paramètres, si nécessaire par le script. Utilisez l’entrée Continuer cette action de script pour vous assurer que le script est appliqué aux nœuds lors de la mise à l’échelle.
Enfin, sélectionnez le bouton Créer pour appliquer le script au cluster.
Appliquer une action de script à un cluster en cours d’exécution à partir d’Azure PowerShell
Pour utiliser ces commandes PowerShell, vous avez besoin du module AZ. L’exemple suivant montre comment appliquer une action de script à un cluster en cours d’exécution :
# 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
Une fois l’opération terminée, vous recevez des informations similaires au texte suivant :
OperationState : Succeeded
ErrorMessage :
Name : Giraph
Uri : https://hdiconfigactions.blob.core.windows.net/linuxgiraphconfigactionv01/giraph-installer-v01.sh
Parameters :
NodeTypes : {HeadNode, WorkerNode}
Appliquer une action de script à un cluster en cours d’exécution à partir d’Azure CLI
Avant de commencer, veillez à installer et configurer Azure CLI. Vérifiez que vous disposez de la dernière version. Pour plus d’informations, consultez la rubrique Installation de l’interface de ligne de commande Azure (CLI).
Authentifiez-vous auprès de votre abonnement Azure :
az loginAppliquez une action de script à un cluster en cours d’exécution :
az hdinsight script-action execute --cluster-name CLUSTERNAME --name SCRIPTNAME --resource-group RESOURCEGROUP --roles ROLESLes rôles valides sont
headnode, ,workernodezookeepernode,edgenode. Si le script doit être appliqué à plusieurs types de nœuds, séparez les rôles par un espace. Par exemple :--roles headnode workernode.Pour conserver le script, ajoutez
--persist-on-success. Vous pouvez également conserver le script ultérieurement à l’aide deaz hdinsight script-action promote.
Appliquer une action de script à un cluster en cours d’exécution à l’aide de l’API REST
Consultez l’API REST de cluster dans Azure HDInsight.
Appliquer une action de script à un cluster en cours d’exécution à partir du Kit de développement logiciel (SDK) .NET HDInsight
Pour obtenir un exemple d’utilisation du Kit de développement logiciel (SDK) .NET pour appliquer des scripts à un cluster, consultez Appliquer une action de script à un cluster HDInsight linux en cours d’exécution.
Afficher l’historique et promouvoir et rétrograder les actions de script
Le portail Azure
Connectez-vous au portail Azure et recherchez votre cluster.
Dans l’affichage par défaut, sous Paramètres, sélectionnez Actions de script.
Un historique des scripts de ce cluster s’affiche dans la section Actions de script. Ces informations incluent une liste de scripts persistants. La capture d’écran suivante montre que le script Solr a été exécuté sur ce cluster. La capture d’écran n’affiche aucun script persistant.
Sélectionnez un script dans l’historique pour afficher la section Propriétés de ce script. En haut de l’écran, vous pouvez réexécuter le script ou le promouvoir.
Vous pouvez également sélectionner le bouton de sélection (…) à droite des entrées dans la section Actions de script pour effectuer des actions.
Azure PowerShell
| Applet de commande | Fonction |
|---|---|
Get-AzHDInsightPersistedScriptAction |
Récupérez des informations sur les actions de script persistantes. Cette applet de commande n’annule pas les actions effectuées par un script, elle supprime uniquement l’indicateur persistant. |
Get-AzHDInsightScriptActionHistory |
Récupérez un historique des actions de script appliquées au cluster ou des détails pour un script spécifique. |
Set-AzHDInsightPersistedScriptAction |
Promouvoir une ad hoc action de script vers une action de script persistante. |
Remove-AzHDInsightPersistedScriptAction |
Rétrogradez une action de script persistante à une ad hoc action. |
L’exemple de script suivant illustre l’utilisation des applets de commande pour promouvoir, puis rétrograder un 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"
Azure CLI
| Command | Descriptif |
|---|---|
az hdinsight script-action delete |
Supprime une action de script persistante spécifiée du cluster. Cette commande n’annule pas les actions effectuées par un script, elle supprime uniquement l’indicateur persistant. |
az hdinsight script-action execute |
Exécutez des actions de script sur le cluster HDInsight spécifié. |
az hdinsight script-action list |
Répertorie toutes les actions de script persistantes pour le cluster spécifié. |
az hdinsight script-action list-execution-history |
Répertorie l’historique d’exécution de tous les scripts pour le cluster spécifié. |
az hdinsight script-action promote |
Promeut l’exécution de script ad hoc spécifiée dans un script persistant. |
az hdinsight script-action show-execution-details |
Obtient les détails de l’exécution du script pour l’ID d’exécution de script donné. |
HDInsight .NET SDK
Pour obtenir un exemple d’utilisation du SDK (.NET Kit de développement logiciel) pour récupérer l’historique des scripts à partir d’un cluster, promouvoir ou rétrograder des scripts, voir la rubrique Appliquer une action de script à un cluster HDInsight Linux en cours d’exécution.
Note
Cet exemple montre également comment installer une application HDInsight à l’aide du Kit de développement logiciel (SDK) .NET.