Přizpůsobení clusterů Azure HDInsight pomocí akcí skriptu
Azure HDInsight poskytuje metodu konfigurace označovanou jako akce skriptu, které vyvolávají vlastní skripty pro přizpůsobení clusteru. Tyto skripty slouží k instalaci dalších komponent a změně nastavení konfigurace. Akce skriptu je možné použít během vytváření clusteru nebo po jeho vytvoření.
Akce skriptů je také možné publikovat na Azure Marketplace jako aplikaci HDInsight. Další informace o aplikacích HDInsight najdete v tématu Publikování aplikace HDInsight na Azure Marketplace.
Principy akcí skriptů
Akce skriptu je skript Bash, který běží na uzlech v clusteru HDInsight. Charakteristiky a funkce akcí skriptu jsou následující:
Identifikátor URI skriptu Bash (umístění pro přístup k souboru) musí být přístupný od poskytovatele prostředků HDInsight a clusteru.
Tady jsou možná umístění úložiště:
Pro běžné clustery (mimo ESP):
Objekt blob v účtu azure Storage, který je primárním nebo dalším účtem úložiště pro cluster HDInsight. Služba HDInsight má během vytváření clusteru udělený přístup k oběma těmto typům účtů úložiště.
Důležité
Neměňte klíč úložiště v tomto účtu Azure Storage, protože způsobí selhání následných akcí skriptu se skripty uloženými v tomto účtu.
Data Lake Storage Gen1: Instanční objekt HDInsight používá pro přístup ke službě Data Lake Storage přístup pro čtení ke skriptu. Formát identifikátoru URI skriptu Bash je
adl://DATALAKESTOREACCOUNTNAME.azuredatalakestore.net/path_to_file
.Data Lake Storage Gen2 se nedoporučuje používat pro akce skriptu.
abfs://
není podporován pro identifikátor URI skriptu Bash.https://
Identifikátory URI jsou možné, ale ty fungují pro kontejnery, které mají veřejný přístup, a bránu firewall otevřenou pro poskytovatele prostředků HDInsight, a proto se nedoporučuje.Veřejná služba pro sdílení souborů přístupná prostřednictvím
https://
cest. Příklady jsou Azure Blob, GitHub nebo OneDrive. Například identifikátory URI najdete v části Ukázkové skriptovací skripty.
Pro clustery s ESP
wasb://
se podporují identifikátory URI nebowasbs://
http[s]://
identifikátory URI.
Akce skriptu je možné omezit tak, aby běžely pouze na určitých typech uzlů. Příklady jsou hlavní uzly nebo pracovní uzly.
Akce skriptu mohou být trvalé nebo ad hoc.
- Trvalé akce skriptu musí mít jedinečný název. Trvalé skripty se používají k přizpůsobení nových pracovních uzlů přidaných do clusteru prostřednictvím operací škálování. Při provádění operací škálování může trvalý skript také použít změny jiného typu uzlu. Příkladem je hlavní uzel.
- Ad hoc skripty se neuchovávají. Akce skriptu použité při vytváření clusteru se automaticky uchovávají. Po spuštění skriptu se nepoužijí na pracovní uzly přidané do clusteru. Potom můžete upřednostnit ad hoc skript na trvalý skript nebo snížit úroveň trvalého skriptu na ad hoc skript. Skripty, které selžou, se neuchovávají, i když výslovně naznačujete, že by měly být.
Akce skriptu mohou přijímat parametry, které skript používá během provádění.
Akce skriptů se spouštějí s oprávněními kořenové úrovně na uzlech clusteru.
Akce skriptů je možné použít prostřednictvím webu Azure Portal, Azure PowerShellu, Azure CLI nebo sady .NET SDK služby HDInsight.
Akce skriptu, které odeberou nebo upravují soubory služby na virtuálním počítači, můžou mít vliv na stav a dostupnost služby.
Cluster uchovává historii všech spuštěných skriptů. Historie pomáhá, když potřebujete najít ID skriptu pro operace povýšení nebo snížení úrovně.
Důležité
Neexistuje žádný automatický způsob, jak vrátit zpět změny provedené akcí skriptu. Buď ručně převrácení změn, nebo zadejte skript, který je obrátí.
Oprávnění
V případě clusteru HDInsight připojeného k doméně existují dvě oprávnění Apache Ambari, která se vyžadují při použití akcí skriptu s clusterem:
- AMBARI. RUN_CUSTOM_COMMAND. Role Ambari Správa istrator má ve výchozím nastavení toto oprávnění.
- CLUSTERU. RUN_CUSTOM_COMMAND. Cluster HDInsight Správa istrator i Ambari Správa istrator mají ve výchozím nastavení toto oprávnění.
Další informace o práci s oprávněními s HDInsight připojenými k doméně najdete v tématu Správa clusterů HDInsight s balíčkem zabezpečení podniku.
Řízení přístupu
Pokud nejste správcem nebo vlastníkem předplatného Azure, váš účet musí mít alespoň Contributor
přístup ke skupině prostředků, která obsahuje cluster HDInsight.
Někdo s alespoň přístupem přispěvatele k předplatnému Azure musí mít dříve zaregistrovaného poskytovatele. Registrace zprostředkovatele nastane, když uživatel s přístupem přispěvatele k předplatnému vytvoří prostředek. Informace o bez vytvoření prostředku najdete v tématu Registrace poskytovatele pomocí rest.
Získejte další informace o práci se správou přístupu:
- Začínáme se správou přístupu na webu Azure Portal
- Přiřazení rolí Azure ke správě přístupu k prostředkům předplatného Azure
Metody použití akcí skriptu
Máte možnost nakonfigurovat akci skriptu, která se má spustit při prvním vytvoření clusteru nebo spuštění v existujícím clusteru.
Akce skriptu v procesu vytváření clusteru
Akce skriptů používané při vytváření clusteru se mírně liší od akcí skriptů spuštěných v existujícím clusteru:
- Skript se automaticky zachová.
- Selhání ve skriptu může způsobit selhání procesu vytváření clusteru.
Následující diagram znázorňuje, kdy se akce skriptu spustí během procesu vytváření:
Skript se spustí, když se konfiguruje HDInsight. Skript běží paralelně na všech zadaných uzlech v clusteru. Běží s kořenovými oprávněními na uzlech.
Můžete provádět operace, jako je zastavení a spouštění služeb, včetně služeb souvisejících s Apache Hadoopem. Pokud zastavíte služby, před dokončením skriptu se ujistěte, že jsou spuštěné služby související s Ambari a dalšími službami Hadoop. Tyto požadované služby určují stav a stav clusteru při jeho vytváření.
Během vytváření clusteru můžete použít mnoho akcí skriptů najednou. Tyto skripty jsou vyvolány v pořadí, v jakém byly zadány.
Poznámka:
Pokud se skript nachází v jiném účtu úložiště, než je určené jako úložiště clusteru (v době vytvoření clusteru), který bude potřebovat veřejný přístup.
Důležité
Akce skriptu se musí dokončit do 60 minut nebo vyprší jejich časový limit. Během zřizování clusteru se skript spouští souběžně s jinými procesy instalace a konfigurace. Konkurence pro prostředky, jako je čas procesoru nebo šířka pásma sítě, může způsobit, že dokončení skriptu trvá déle, než to dělá ve vývojovém prostředí.
Abyste minimalizovali dobu potřebnou ke spuštění skriptu, vyhněte se úlohám, jako je stahování a kompilace aplikací ze zdroje. Aplikace předkompilování a uložení binárního souboru ve službě Azure Storage
Akce skriptu ve spuštěném clusteru
Selhání skriptu v již spuštěném clusteru automaticky nezpůsobí, že se cluster změní na stav selhání. Po dokončení skriptu by se cluster měl vrátit do spuštěného stavu. I když má cluster spuštěný stav, může se stát, že selhal skript. Skript může například odstranit soubory, které cluster potřebuje.
Akce skriptů se spouštějí s kořenovými oprávněními. Než skript použijete pro cluster, ujistěte se, že rozumíte tomu, co skript dělá.
Když na cluster použijete skript, stav clusteru se změní ze Spuštěno na Přijato. Potom se změní na konfiguraci HDInsight a nakonec se vrátíte zpět na Spuštěno pro úspěšné skripty. Stav skriptu se zaprotokoluje v historii akcí skriptu. Tyto informace vám říkají, jestli byl skript úspěšný nebo neúspěšný. Například rutina PowerShellu Get-AzHDInsightScriptActionHistory
zobrazuje stav skriptu. Vrátí informace podobné následujícímu textu:
ScriptExecutionId : 635918532516474303
StartTime : 8/14/2017 7:40:55 PM
EndTime : 8/14/2017 7:41:05 PM
Status : Succeeded
Důležité
Pokud změníte uživatele clusteru, správce, heslo po vytvoření clusteru, akce skriptu se spouštějí na tomto clusteru můžou selhat. Pokud máte nějaké trvalé akce skriptu, které cílí na pracovní uzly, tyto skripty můžou selhat při škálování clusteru.
Ukázkové skriptovací skripty
Skripty akcí skriptu je možné použít pomocí následujících nástrojů:
- portál Azure
- Azure PowerShell
- Azure CLI
- Sada HDInsight .NET SDK
HDInsight poskytuje skripty pro instalaci následujících komponent do clusterů HDInsight:
Název | Skript |
---|---|
Přidání účtu Azure Storage | https://hdiconfigactions.blob.core.windows.net/linuxaddstorageaccountv01/add-storage-account-v01.sh . Viz Přidání dalších účtů úložiště do SLUŽBY HDInsight. |
Instalace rozhraní Hue | https://hdiconfigactions.blob.core.windows.net/linuxhueconfigactionv02/install-hue-uber-v02.sh . Viz Instalace a použití Hue v clusterech HDInsight Hadoop. |
Předběžné načtení knihoven Hive | https://hdiconfigactions.blob.core.windows.net/linuxsetupcustomhivelibsv01/setup-customhivelibs-v01.sh . Viz Přidání vlastních knihoven Apache Hive při vytváření clusteru HDInsight. |
Akce skriptu během vytváření clusteru
Tato část vysvětluje různé způsoby použití akcí skriptů při vytváření clusteru HDInsight.
Použití akce skriptu při vytváření clusteru z webu Azure Portal
Začněte vytvářet cluster, jak je popsáno v tématu Vytvoření clusterů založených na Linuxu ve službě HDInsight pomocí webu Azure Portal. Na kartě Konfigurace a ceny vyberte + Přidat akci skriptu.
Pomocí položky Vybrat skript vyberte předem připravený skript. Pokud chcete použít vlastní skript, vyberte Vlastní. Pak zadejte identifikátor URI skriptu Name a Bash pro váš skript.
Následující tabulka popisuje prvky ve formuláři:
Vlastnost Hodnota Výběr skriptu Pokud chcete použít vlastní skript, vyberte Vlastní. V opačném případě vyberte jeden ze zadaných skriptů. Název Zadejte název akce skriptu. Identifikátor URI skriptu Bash Zadejte identifikátor URI skriptu. Vedoucí/pracovník/ZooKeeper Zadejte uzly, na kterých se skript spouští: Head, Worker nebo ZooKeeper. Parametry V případě potřeby skriptu zadejte parametry. Pomocí položky Akce Zachovat tento skript se ujistěte, že se skript použije během operací škálování.
Výběrem možnosti Vytvořit uložte skript. Potom můžete pomocí + Odeslat nový přidat další skript.
Po přidání skriptů se vrátíte na kartu Konfigurace a ceny .
Dokončete zbývající kroky vytváření clusteru obvyklým způsobem.
Použití akce skriptu ze šablon Azure Resource Manageru
Akce skriptů je možné použít se šablonami Azure Resource Manageru. Příklad najdete v tématu Vytvoření clusteru HDInsight Linux a spuštění akce skriptu.
V tomto příkladu se akce skriptu přidá pomocí následujícího kódu:
"scriptActions": [
{
"name": "setenvironmentvariable",
"uri": "[parameters('scriptActionUri')]",
"parameters": "headnode"
}
]
Získejte další informace o tom, jak nasadit šablonu:
- Nasazení prostředků pomocí šablon Resource Manageru a Azure PowerShellu
- Nasazení prostředků pomocí šablon Resource Manageru a Azure CLI
Použití akce skriptu během vytváření clusteru z Azure PowerShellu
V této části použijete rutinu Add-AzHDInsightScriptAction k vyvolání skriptů pro přizpůsobení clusteru. Než začnete, ujistěte se, že jste nainstalovali a nakonfigurovali Azure PowerShell. K použití těchto příkazů PowerShellu potřebujete modul AZ.
Následující skript ukazuje, jak použít akci skriptu při vytváření clusteru pomocí PowerShellu:
# 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
Vytvoření clusteru může trvat několik minut.
Použití akce skriptu při vytváření clusteru ze sady HDInsight .NET SDK
Sada HDInsight .NET SDK poskytuje klientské knihovny, které usnadňují práci se službou HDInsight z aplikace .NET. Ukázku kódu najdete v tématu Akce skriptu.
Akce skriptu pro spuštěný cluster
Tato část vysvětluje, jak použít akce skriptů ve spuštěném clusteru.
Použití akce skriptu na spuštěný cluster z webu Azure Portal
Přihlaste se k webu Azure Portal a vyhledejte svůj cluster.
Ve výchozím zobrazení v části Nastavení vyberte Akce skriptu.
V horní části stránky Akce skriptu vyberte + Odeslat nový.
Pomocí položky Vybrat skript vyberte předem připravený skript. Pokud chcete použít vlastní skript, vyberte Vlastní. Pak zadejte identifikátor URI skriptu Name a Bash pro váš skript.
Následující tabulka popisuje prvky ve formuláři:
Vlastnost Hodnota Výběr skriptu Pokud chcete použít vlastní skript, vyberte vlastní. V opačném případě vyberte zadaný skript. Název Zadejte název akce skriptu. Identifikátor URI skriptu Bash Zadejte identifikátor URI skriptu. Vedoucí/pracovník/zookeeper Zadejte uzly, na kterých se skript spouští: Head, Worker nebo ZooKeeper. Parametry V případě potřeby skriptu zadejte parametry. Pomocí položky Akce Zachovat tento skript ověřte, že se skript použije během operací škálování.
Nakonec vyberte tlačítko Vytvořit , aby se skript použil na cluster.
Použití akce skriptu na spuštěný cluster z Azure PowerShellu
K použití těchto příkazů PowerShellu potřebujete modul AZ. Následující příklad ukazuje, jak použít akci skriptu na spuštěný 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
Po dokončení operace se zobrazí podobné informace jako v následujícím textu:
OperationState : Succeeded
ErrorMessage :
Name : Giraph
Uri : https://hdiconfigactions.blob.core.windows.net/linuxgiraphconfigactionv01/giraph-installer-v01.sh
Parameters :
NodeTypes : {HeadNode, WorkerNode}
Použití akce skriptu na spuštěný cluster z Azure CLI
Než začnete, ujistěte se, že jste nainstalovali a nakonfigurovali Azure CLI. Ujistěte se, že máte nejnovější verzi. Další informace najdete v tématu Instalace Azure CLI.
Ověřte se ve svém předplatném Azure:
az login
Použití akce skriptu na spuštěný cluster:
az hdinsight script-action execute --cluster-name CLUSTERNAME --name SCRIPTNAME --resource-group RESOURCEGROUP --roles ROLES
Platné role jsou
headnode
,workernode
,zookeepernode
,edgenode
. Pokud se má skript použít u několika typů uzlů, oddělte role mezerou. Například--roles headnode workernode
.Chcete-li zachovat skript, přidejte
--persist-on-success
. Skript můžete také později zachovat pomocí .az hdinsight script-action promote
Použití akce skriptu na spuštěný cluster pomocí rozhraní REST API
Viz rozhraní REST API clusteru ve službě Azure HDInsight.
Použití akce skriptu na spuštěný cluster ze sady HDInsight .NET SDK
Příklad použití sady .NET SDK k použití skriptů v clusteru najdete v tématu Použití akce skriptu pro spuštěný cluster HDInsight se systémem Linux.
Zobrazení historie a zvýšení úrovně akcí skriptů a snížení úrovně
Azure Portal
Přihlaste se k webu Azure Portal a vyhledejte svůj cluster.
Ve výchozím zobrazení v části Nastavení vyberte Akce skriptu.
V části Akce skriptu se zobrazí historie skriptů pro tento cluster. Tyto informace zahrnují seznam trvalých skriptů. Následující snímek obrazovky ukazuje, že se v tomto clusteru spustil skript Solr. Snímek obrazovky nezobrazuje žádné trvalé skripty.
Vyberte skript z historie a zobrazte oddíl Vlastnosti pro tento skript. V horní části obrazovky můžete skript spustit znovu nebo ho zvýšit jeho úroveň.
Můžete také vybrat tři tečky, ..., napravo od položek v oddílu akcí skriptu provádět akce.
Azure PowerShell
Rutina | Function |
---|---|
Get-AzHDInsightPersistedScriptAction |
Načtěte informace o trvalých akcích skriptu. Tato rutina neodstraní akce provedené skriptem, odebere pouze trvalý příznak. |
Get-AzHDInsightScriptActionHistory |
Načtěte historii akcí skriptů použitých v clusteru nebo podrobnosti pro konkrétní skript. |
Set-AzHDInsightPersistedScriptAction |
ad hoc Zvýšení úrovně akce skriptu na trvalou akci skriptu |
Remove-AzHDInsightPersistedScriptAction |
Snížení úrovně trvalé akce skriptu na ad hoc akci |
Následující ukázkový skript ukazuje použití rutin k povýšení a snížení úrovně skriptu.
# 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
Příkaz | Popis |
---|---|
az hdinsight script-action delete |
Odstraní zadanou trvalou akci skriptu clusteru. Tento příkaz neodstraní akce provedené skriptem, odebere pouze trvalý příznak. |
az hdinsight script-action execute |
Provádění akcí skriptu v zadaném clusteru HDInsight |
az hdinsight script-action list |
Zobrazí seznam všech trvalých akcí skriptu pro zadaný cluster. |
az hdinsight script-action list-execution-history |
Zobrazí seznam historie spuštění všech skriptů pro zadaný cluster. |
az hdinsight script-action promote |
Podporuje provádění zadaných ad hoc skriptů na trvalý skript. |
az hdinsight script-action show-execution-details |
Získá podrobnosti o spuštění skriptu pro dané ID spuštění skriptu. |
Sada HDInsight .NET SDK
Příklad použití sady .NET SDK k načtení historie skriptů z clusteru, zvýšení úrovně nebo snížení úrovně skriptů najdete v tématu Použití akce skriptu pro spuštěný cluster HDInsight se systémem Linux.
Poznámka:
Tento příklad také ukazuje, jak nainstalovat aplikaci HDInsight pomocí sady .NET SDK.