Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Zjistěte, jak vytvořit cluster HDInsight pomocí šablony Azure Resource Manageru a rozhraní Azure REST API.
Rozhraní Azure REST API umožňuje provádět operace správy na službách hostovaných na platformě Azure, včetně vytváření nových prostředků, jako jsou clustery HDInsight.
Poznámka:
Kroky v tomto dokumentu používají ke komunikaci s rozhraním Azure REST API nástroj curl (https://curl.haxx.se/)).
Vytvoření šablony
Šablony Azure Resource Manageru jsou dokumenty JSON, které popisují skupinu prostředků a všechny prostředky v ní (například HDInsight).) Tento přístup založený na šabloně umožňuje definovat prostředky, které potřebujete pro HDInsight, v jedné šabloně.
Následující dokument JSON je sloučením souborů šablony a parametrů z https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.hdinsight/hdinsight-linux-ssh-password/azuredeploy.json, který vytvoří cluster založený na Linuxu pomocí hesla pro zabezpečení uživatelského účtu SSH.
{
"properties": {
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"clusterType": {
"type": "string",
"allowedValues": ["hadoop",
"hbase",
"spark"],
"metadata": {
"description": "The type of the HDInsight cluster to create."
}
},
"clusterName": {
"type": "string",
"metadata": {
"description": "The name of the HDInsight cluster to create."
}
},
"clusterLoginUserName": {
"type": "string",
"metadata": {
"description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards."
}
},
"clusterLoginPassword": {
"type": "securestring",
"metadata": {
"description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter."
}
},
"sshUserName": {
"type": "string",
"metadata": {
"description": "These credentials can be used to remotely access the cluster."
}
},
"sshPassword": {
"type": "securestring",
"metadata": {
"description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter."
}
},
"clusterStorageAccountName": {
"type": "string",
"metadata": {
"description": "The name of the storage account to be created and be used as the cluster's storage."
}
},
"clusterWorkerNodeCount": {
"type": "int",
"defaultValue": 4,
"metadata": {
"description": "The number of nodes in the HDInsight cluster."
}
}
},
"variables": {
"defaultApiVersion": "2015-05-01-preview",
"clusterApiVersion": "2015-03-01-preview"
},
"resources": [{
"name": "[parameters('clusterStorageAccountName')]",
"type": "Microsoft.Storage/storageAccounts",
"location": "[resourceGroup().location]",
"apiVersion": "[variables('defaultApiVersion')]",
"dependsOn": [],
"tags": {
},
"properties": {
"accountType": "Standard_LRS"
}
},
{
"name": "[parameters('clusterName')]",
"type": "Microsoft.HDInsight/clusters",
"location": "[resourceGroup().location]",
"apiVersion": "[variables('clusterApiVersion')]",
"dependsOn": ["[concat('Microsoft.Storage/storageAccounts/',parameters('clusterStorageAccountName'))]"],
"tags": {
},
"properties": {
"clusterVersion": "3.6",
"osType": "Linux",
"clusterDefinition": {
"kind": "[parameters('clusterType')]",
"configurations": {
"gateway": {
"restAuthCredential.isEnabled": true,
"restAuthCredential.username": "[parameters('clusterLoginUserName')]",
"restAuthCredential.password": "[parameters('clusterLoginPassword')]"
}
}
},
"storageProfile": {
"storageaccounts": [{
"name": "[concat(parameters('clusterStorageAccountName'),'.blob.core.windows.net')]",
"isDefault": true,
"container": "[parameters('clusterName')]",
"key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('clusterStorageAccountName')), variables('defaultApiVersion')).key1]"
}]
},
"computeProfile": {
"roles": [{
"name": "headnode",
"targetInstanceCount": "2",
"hardwareProfile": {
"vmSize": "{}"
},
"osProfile": {
"linuxOperatingSystemProfile": {
"username": "[parameters('sshUserName')]",
"password": "[parameters('sshPassword')]"
}
}
},
{
"name": "workernode",
"targetInstanceCount": "[parameters('clusterWorkerNodeCount')]",
"hardwareProfile": {
"vmSize": "{}"
},
"osProfile": {
"linuxOperatingSystemProfile": {
"username": "[parameters('sshUserName')]",
"password": "[parameters('sshPassword')]"
}
}
}]
}
}
}],
"outputs": {
"cluster": {
"type": "object",
"value": "[reference(resourceId('Microsoft.HDInsight/clusters',parameters('clusterName')))]"
}
}
},
"mode": "incremental",
"Parameters": {
"clusterName": {
"value": "newclustername"
},
"clusterType": {
"value": "hadoop"
},
"clusterStorageAccountName": {
"value": "newstoragename"
},
"clusterLoginUserName": {
"value": "admin"
},
"clusterLoginPassword": {
"value": "changeme"
},
"sshUserName": {
"value": "sshuser"
},
"sshPassword": {
"value": "changeme"
}
}
}
}
Tento příklad se používá v krocích v tomto dokumentu. Nahraďte příklad hodnot v části Parametry hodnotami pro váš cluster.
Důležité
Šablona používá výchozí počet pracovních uzlů (4) pro cluster HDInsight. Pokud plánujete více než 32 pracovních uzlů, musíte vybrat velikost hlavního uzlu s alespoň 8 jádry a 14 GB ram.
Další informace o velikostech uzlů a souvisejících nákladech najdete v cenách pro HDInsight.
Přihlaste se ke svému předplatnému Azure.
Postupujte podle kroků popsaných v Začínáme s Azure CLI a připojte se k předplatnému pomocí příkazu az login.
Vytvořte služebního principála
Poznámka:
Tyto kroky představují zkrácenou verzi Vytvoření instančního objektu s heslem části Vytvoření instančního objektu pro přístup k prostředkům dokumentu pomocí Azure CLI. Tento postup vytvoří služební principál, který se použije k ověřování v rozhraní Azure REST API.
Z příkazového řádku pomocí následujícího příkazu zobrazte seznam předplatných Azure.
az account list --query '[].{Subscription_ID:id,Tenant_ID:tenantId,Name:name}' --output tableV seznamu vyberte předplatné, které chcete použít, a poznamenejte si Subscription_ID a Tenant_ID sloupce. Uložte tyto hodnoty.
Pomocí následujícího příkazu vytvořte aplikaci v Microsoft Entra ID.
az ad app create --display-name "exampleapp" --homepage "https://www.contoso.org" --identifier-uris "https://www.contoso.org/example" --password <Your password> --query 'appId'Nahraďte hodnoty
--display-name,--homepagea--identifier-urisvlastními hodnotami. Zadejte heslo pro novou položku služby Active Directory.Poznámka:
Hodnoty
--home-pagea--identifier-urisnemusí odkazovat na skutečnou webovou stránku hostované na internetu. Musí to být jedinečné identifikátory URI.Hodnota vrácená tímto příkazem je ID aplikace pro novou aplikaci. Uložte tuto hodnotu.
Pomocí následujícího příkazu vytvořte zástupce služby pomocí ID aplikace .
az ad sp create --id <App ID> --query 'objectId'Hodnota vrácená tímto příkazem je ID objektu . Uložte tuto hodnotu.
Přiřaďte roli vlastníka služebnímu principálu pomocí hodnoty ID objektu . Použijte ID předplatného, jste získali dříve.
az role assignment create --assignee <Object ID> --role Owner --scope /subscriptions/<Subscription ID>/
Získání ověřovacího tokenu
K načtení ověřovacího tokenu použijte následující příkaz:
curl -X "POST" "https://login.microsoftonline.com/$TENANTID/oauth2/token" \
-H "Cookie: flight-uxoptin=true; stsservicecookie=ests; x-ms-gateway-slice=productionb; stsservicecookie=ests" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "client_id=$APPID" \
--data-urlencode "grant_type=client_credentials" \
--data-urlencode "client_secret=$PASSWORD" \
--data-urlencode "resource=https://management.azure.com/"
Nastavte $TENANTID, $APPIDa $PASSWORD na hodnoty získané nebo použité dříve.
Pokud je tento požadavek úspěšný, obdržíte odpověď 200 řad a text odpovědi obsahuje dokument JSON.
Dokument JSON vrácený tímto požadavkem obsahuje prvek s názvem access_token. Hodnota access_token se používá k ověřování požadavků na rozhraní REST API.
{
"token_type":"Bearer",
"expires_in":"3599",
"expires_on":"1463409994",
"not_before":"1463406094",
"resource":"https://management.azure.com/","access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWoNBVGZNNXBPWWlKSE1iYTlnb0VLWSIsImtpZCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSJ9.eyJhdWQiOiJodHRwczovL21hbmFnZW1lbnQuYXp1cmUuY29tLyIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0LzcyZjk4OGJmLTg2ZjEtNDFhZi05MWFiLTJkN2NkMDExZGI2Ny8iLCJpYXQiOjE0NjM0MDYwOTQsIm5iZiI6MTQ2MzQwNjA5NCwiZXhwIjoxNDYzNDA5OTk5LCJhcHBpZCI6IjBlYzcyMzM0LTZkMDMtNDhmYi04OWU1LTU2NTJiODBiZDliYiIsImFwcGlkYWNyIjoiMSIsImlkcCI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0LzcyZjk4OGJmLTg2ZjEtNDFhZi05MWFiLTJkN2NkMDExZGI0Ny8iLCJvaWQiOiJlNjgxZTZiMi1mZThkLTRkZGUtYjZiMS0xNjAyZDQyNWQzOWYiLCJzdWIiOiJlNjgxZTZiMi1mZThkLTRkZGUtYjZiMS0xNjAyZDQyNWQzOWYiLCJ0aWQiOiI3MmY5ODhiZi04NmYxLTQxYWYtOTFhYi0yZDdjZDAxMWRiNDciLCJ2ZXIiOiIxLjAifQ.nJVERbeDHLGHn7ZsbVGBJyHOu2PYhG5dji6F63gu8XN2Cvol3J1HO1uB4H3nCSt9DTu_jMHqAur_NNyobgNM21GojbEZAvd0I9NY0UDumBEvDZfMKneqp7a_cgAU7IYRcTPneSxbD6wo-8gIgfN9KDql98b0uEzixIVIWra2Q1bUUYETYqyaJNdS4RUmlJKNNpENllAyHQLv7hXnap1IuzP-f5CNIbbj9UgXxLiOtW5JhUAwWLZ3-WMhNRpUO2SIB7W7tQ0AbjXw3aUYr7el066J51z5tC1AK9UC-mD_fO_HUP6ZmPzu5gLA6DxkIIYP3grPnRVoUDltHQvwgONDOw"
}
Vytvoření skupiny zdrojů
Pomocí následujícího vytvořte skupinu prostředků.
- Nastavte
$SUBSCRIPTIONIDna ID předplatného, které jste obdrželi při vytváření služebního principála. - Nastavte
$ACCESSTOKENna přístupový token přijatý v předchozím kroku. - Nahraďte
DATACENTERLOCATIONdatovým centrem, ve kterém chcete vytvořit skupinu prostředků a prostředky. Například „středojižní část Spojených států“. - Nastavte
$RESOURCEGROUPNAMEna název, který chcete použít pro tuto skupinu:
curl -X "PUT" "https://management.azure.com/subscriptions/$SUBSCRIPTIONID/resourcegroups/$RESOURCEGROUPNAME?api-version=2015-01-01" \
-H "Authorization: Bearer $ACCESSTOKEN" \
-H "Content-Type: application/json" \
-d $'{
"location": "DATACENTERLOCATION"
}'
Pokud je tento požadavek úspěšný, obdržíte odpověď 200 řad a text odpovědi obsahuje dokument JSON obsahující informace o skupině. Prvek "provisioningState" obsahuje hodnotu "Succeeded".
Vytvořte nasazení
Pomocí následujícího příkazu nasaďte šablonu do skupiny prostředků.
- Nastavte
$DEPLOYMENTNAMEna název, který chcete použít pro toto nasazení.
curl -X "PUT" "https://management.azure.com/subscriptions/$SUBSCRIPTIONID/resourcegroups/$RESOURCEGROUPNAME/providers/microsoft.resources/deployments/$DEPLOYMENTNAME?api-version=2015-01-01" \
-H "Authorization: Bearer $ACCESSTOKEN" \
-H "Content-Type: application/json" \
-d "{set your body string to the template and parameters}"
Poznámka:
Pokud jste šablonu uložili do souboru, můžete místo -d "{ template and parameters}"použít následující příkaz:
--data-binary "@/path/to/file.json"
Pokud je tento požadavek úspěšný, obdržíte odpověď 200 řad a text odpovědi obsahuje dokument JSON obsahující informace o operaci nasazení.
Důležité
Nasazení bylo odesláno, ale nedokončilo se. Dokončení nasazení může trvat několik minut, obvykle přibližně 15.
Kontrola stavu nasazení
Pokud chcete zkontrolovat stav nasazení, použijte následující příkaz:
curl -X "GET" "https://management.azure.com/subscriptions/$SUBSCRIPTIONID/resourcegroups/$RESOURCEGROUPNAME/providers/microsoft.resources/deployments/$DEPLOYMENTNAME?api-version=2015-01-01" \
-H "Authorization: Bearer $ACCESSTOKEN" \
-H "Content-Type: application/json"
Tento příkaz vrátí dokument JSON obsahující informace o operaci nasazení. Prvek "provisioningState" obsahuje stav nasazení. Pokud tento prvek obsahuje hodnotu "Succeeded", nasazení bylo úspěšně dokončeno.
Řešení problémů
Pokud narazíte na problémy s vytvářením clusterů HDInsight, podívejte se na požadavky na řízení přístupu.
Další kroky
Teď, když jste úspěšně vytvořili cluster HDInsight, se naučíte pracovat s clusterem pomocí následujícího postupu.