Sada HDInsight SDK pro Python
Přehled
Sada HDInsight SDK pro Python poskytuje třídy a metody, které umožňují spravovat clustery HDInsight. Obsahuje operace pro vytváření, odstraňování, aktualizaci, výpis, změnu velikosti, provádění akcí skriptů, monitorování, získání vlastností clusterů HDInsight atd.
Požadavky
- Účet Azure: Pokud ho nemáte, získejte bezplatnou zkušební verzi.
- Python
- Pip
Instalace sady SDK
Sadu HDInsight SDK pro Python najdete v indexu balíčků Pythonu a můžete ji nainstalovat spuštěním následujícího příkazu:
pip install azure-mgmt-hdinsight
Authentication
Nejprve je potřeba ověřit sadu SDK s vaším předplatným Azure. Podle následujícího příkladu vytvořte instanční objekt a použijte ho k ověření. Po dokončení budete mít instanci , která obsahuje mnoho metod (popsaných HDInsightManagementClient
v následujících částech), které lze použít k provádění operací správy.
Poznámka
Kromě následujícího příkladu existují i další způsoby ověření, které by mohly být pro vaše potřeby vhodnější. Všechny metody jsou popsané tady: Ověřování pomocí knihoven pro správu Azure pro Python
Příklad ověřování pomocí instančního objektu
Nejprve se přihlaste k Azure Cloud Shell. Ověřte, že aktuálně používáte předplatné, ve kterém chcete instanční objekt vytvořit.
az account show
Informace o vašem předplatném se zobrazí ve formátu JSON.
{
"environmentName": "AzureCloud",
"id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"isDefault": true,
"name": "XXXXXXX",
"state": "Enabled",
"tenantId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"user": {
"cloudShellID": true,
"name": "XXX@XXX.XXX",
"type": "user"
}
}
Pokud nejste přihlášeni ke správnému předplatnému, vyberte správné předplatné spuštěním příkazu:
az account set -s <name or ID of subscription>
Důležité
Pokud jste ještě nezaregistrovali poskytovatele prostředků HDInsight jinou metodou (například vytvořením clusteru HDInsight prostřednictvím webu Azure Portal), musíte to před ověřením provést jednou. Můžete to provést z Azure Cloud Shell spuštěním následujícího příkazu:
az provider register --namespace Microsoft.HDInsight
Pak zvolte název instančního objektu a vytvořte ho následujícím příkazem:
az ad sp create-for-rbac --name <Service Principal Name> --role Contributor --sdk-auth
Informace o instančním objektu se zobrazí ve formátu JSON.
{
"clientId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"clientSecret": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"subscriptionId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"tenantId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
"resourceManagerEndpointUrl": "https://management.azure.com/",
"activeDirectoryGraphResourceId": "https://graph.windows.net/",
"sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
"galleryEndpointUrl": "https://gallery.azure.com/",
"managementEndpointUrl": "https://management.core.windows.net/"
}
Zkopírujte níže uvedený fragment kódu Pythonu a vyplňte TENANT_ID
hodnoty , CLIENT_ID
CLIENT_SECRET
, a SUBSCRIPTION_ID
s řetězci z kódu JSON, který se vrátil po spuštění příkazu k vytvoření instančního objektu.
from azure.mgmt.hdinsight import HDInsightManagementClient
from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.hdinsight.models import *
# Tenant ID for your Azure Subscription
TENANT_ID = ''
# Your Service Principal App Client ID
CLIENT_ID = ''
# Your Service Principal Client Secret
CLIENT_SECRET = ''
# Your Azure Subscription ID
SUBSCRIPTION_ID = ''
credentials = ServicePrincipalCredentials(
client_id = CLIENT_ID,
secret = CLIENT_SECRET,
tenant = TENANT_ID
)
client = HDInsightManagementClient(credentials, SUBSCRIPTION_ID)
Správa clusteru
Poznámka
V této části se předpokládá, že jste již ověřili a vytvořili HDInsightManagementClient
instanci a uložili ji do proměnné s názvem client
. Pokyny k ověření a získání HDInsightManagementClient
najdete v části Ověřování výše.
Vytvoření clusteru
Nový cluster je možné vytvořit voláním client.clusters.create()
příkazu .
ukázky
K dispozici jsou ukázky kódu pro vytváření několika běžných typů clusterů HDInsight: Ukázky HDInsight v Pythonu.
Příklad
Tento příklad ukazuje, jak vytvořit cluster Spark se 2 hlavními a 1 pracovními uzly.
Poznámka
Nejprve musíte vytvořit skupinu prostředků a účet úložiště, jak je vysvětleno níže. Pokud jste je už vytvořili, můžete tyto kroky přeskočit.
Vytvoření skupiny prostředků
Pomocí azure Cloud Shell můžete vytvořit skupinu prostředků spuštěním příkazu .
az group create -l <Region Name (i.e. eastus)> --n <Resource Group Name>
Vytvoření účtu úložiště
Účet úložiště můžete vytvořit pomocí azure Cloud Shell spuštěním následujícího příkazu:
az storage account create -n <Storage Account Name> -g <Existing Resource Group Name> -l <Region Name (i.e. eastus)> --sku <SKU i.e. Standard_LRS>
Teď spuštěním následujícího příkazu získejte klíč pro váš účet úložiště (budete ho potřebovat k vytvoření clusteru):
az storage account keys list -n <Storage Account Name>
Následující fragment kódu Pythonu vytvoří cluster Spark se 2 hlavními a 1 pracovními uzly. Vyplňte prázdné proměnné, jak je vysvětleno v komentářích, a nebojte se změnit další parametry tak, aby vyhovovaly vašim konkrétním potřebám.
# The name for the cluster you are creating
cluster_name = ""
# The name of your existing Resource Group
resource_group_name = ""
# Choose a username
username = ""
# Choose a password
password = ""
# Replace <> with the name of your storage account
storage_account = "<>.blob.core.windows.net"
# Storage account key you obtained above
storage_account_key = ""
# Choose a region
location = ""
container = "default"
params = ClusterCreateProperties(
cluster_version="3.6",
os_type=OSType.linux,
tier=Tier.standard,
cluster_definition=ClusterDefinition(
kind="spark",
configurations={
"gateway": {
"restAuthCredential.enabled_credential": "True",
"restAuthCredential.username": username,
"restAuthCredential.password": password
}
}
),
compute_profile=ComputeProfile(
roles=[
Role(
name="headnode",
target_instance_count=2,
hardware_profile=HardwareProfile(vm_size="Large"),
os_profile=OsProfile(
linux_operating_system_profile=LinuxOperatingSystemProfile(
username=username,
password=password
)
)
),
Role(
name="workernode",
target_instance_count=1,
hardware_profile=HardwareProfile(vm_size="Large"),
os_profile=OsProfile(
linux_operating_system_profile=LinuxOperatingSystemProfile(
username=username,
password=password
)
)
)
]
),
storage_profile=StorageProfile(
storageaccounts=[StorageAccount(
name=storage_account,
key=storage_account_key,
container=container,
is_default=True
)]
)
)
client.clusters.create(
cluster_name=cluster_name,
resource_group_name=resource_group_name,
parameters=ClusterCreateParametersExtended(
location=location,
tags={},
properties=params
))
Získání podrobností o clusteru
Získání vlastností pro daný cluster:
client.clusters.get("<Resource Group Name>", "<Cluster Name>")
Příklad
Pomocí příkazu get
můžete potvrdit, že jste cluster úspěšně vytvořili.
my_cluster = client.clusters.get("<Resource Group Name>", "<Cluster Name>")
print(my_cluster)
Výstup by měl vypadat takto:
{'additional_properties': {}, 'id': '/subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/resourceGroups/<Resource Group Name>/providers/Microsoft.HDInsight/clusters/<Cluster Name>', 'name': '<Cluster Name>', 'type': 'Microsoft.HDInsight/clusters', 'location': '<Location>', 'tags': {}, 'etag': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX', 'properties': <azure.mgmt.hdinsight.models.cluster_get_properties_py3.ClusterGetProperties object at 0x0000013766D68048>}
Výpis clusterů
Výpis clusterů v rámci předplatného
client.clusters.list()
Výpis clusterů podle skupiny prostředků
client.clusters.list_by_resource_group("<Resource Group Name>")
Poznámka
Oba list()
objekty a list_by_resource_group()
vrátí ClusterPaged
objekt. Volání advance_page()
vrátí seznam clusterů na této stránce a posune ClusterPaged
objekt na další stránku. To se může opakovat, dokud StopIteration
se nevyvolá výjimka, která značí, že neexistují žádné další stránky.
Příklad
Následující příklad vytiskne vlastnosti všech clusterů pro aktuální předplatné:
clusters_paged = client.clusters.list()
while True:
try:
for cluster in clusters_paged.advance_page():
print(cluster)
except StopIteration:
break
Odstranění clusteru
Odstranění clusteru:
client.clusters.delete("<Resource Group Name>", "<Cluster Name>")
Aktualizace značek clusteru
Značky daného clusteru můžete aktualizovat takto:
client.clusters.update("<Resource Group Name>", "<Cluster Name>", tags={<Dictionary of Tags>})
Příklad
client.clusters.update("<Resource Group Name>", "<Cluster Name>", tags={"tag1Name" : "tag1Value", "tag2Name" : "tag2Value"})
Změna velikosti clusteru
Velikost počtu pracovních uzlů daného clusteru můžete změnit zadáním nové velikosti, například takto:
client.clusters.resize("<Resource Group Name>", "<Cluster Name>", target_instance_count=<Num of Worker Nodes>)
Monitorování clusteru
Sadu HDInsight Management SDK můžete použít také ke správě monitorování v clusterech prostřednictvím sady Operations Management Suite (OMS).
Povolení monitorování OMS
Poznámka
Pokud chcete povolit monitorování OMS, musíte mít existující pracovní prostor služby Log Analytics. Pokud jste ho ještě nevytvořili, můžete se dozvědět, jak to udělat, tady: Vytvoření pracovního prostoru služby Log Analytics v Azure Portal.
Povolení monitorování OMS v clusteru:
client.extension.enable_monitoring("<Resource Group Name>", "<Cluster Name>", workspace_id="<Workspace Id>")
Zobrazení stavu monitorování OMS
Zjištění stavu OMS v clusteru:
client.extension.get_monitoring_status("<Resource Group Name", "Cluster Name")
Zakázání monitorování OMS
Zakázání OMS v clusteru:
client.extension.disable_monitoring("<Resource Group Name>", "<Cluster Name>")
Akce skriptu
HDInsight poskytuje metodu konfigurace označovanou jako akce skriptů, která vyvolává vlastní skripty pro přizpůsobení clusteru.
Poznámka
Další informace o používání akcí skriptů najdete tady: Přizpůsobení clusterů HDInsight se systémem Linux pomocí akcí skriptů
Spuštění akcí skriptu
Spuštění akcí skriptu v daném clusteru:
script_action1 = RuntimeScriptAction(name="<Script Name>", uri="<URL To Script>", roles=[<List of Roles>]) #valid roles are "headnode", "workernode", "zookeepernode", and "edgenode"
client.clusters.execute_script_actions("<Resource Group Name>", "<Cluster Name>", <persist_on_success (bool)>, script_actions=[script_action1]) #add more RuntimeScriptActions to the list to execute multiple scripts
Akce odstranit skript
Odstranění zadané trvalé akce skriptu v daném clusteru:
client.script_actions.delete("<Resource Group Name>", "<Cluster Name", "<Script Name>")
Výpis trvalých akcí skriptu
Poznámka
list()
a list_persisted_scripts()
vrátit RuntimeScriptActionDetailPaged
objekt. Volání advance_page()
vrátí seznam RuntimeScriptActionDetail
na této stránce a přejde RuntimeScriptActionDetailPaged
objekt na další stránku. To se může opakovat, dokud StopIteration
se nevyvolá výjimka, která značí, že neexistují žádné další stránky. Viz následující příklad.
Výpis všech trvalých akcí skriptu pro zadaný cluster:
client.script_actions.list_persisted_scripts("<Resource Group Name>", "<Cluster Name>")
Příklad
scripts_paged = client.script_actions.list_persisted_scripts(resource_group_name, cluster_name)
while True:
try:
for script in scripts_paged.advance_page():
print(script)
except StopIteration:
break
Vypsat historii provádění všech skriptů
Výpis historie provádění všech skriptů pro zadaný cluster:
client.script_execution_history.list("<Resource Group Name>", "<Cluster Name>")
Příklad
Tento příklad vytiskne všechny podrobnosti o všech předchozích spuštěních skriptů.
script_executions_paged = client.script_execution_history.list("<Resource Group Name>", "<Cluster Name>")
while True:
try:
for script in script_executions_paged.advance_page():
print(script)
except StopIteration:
break
Azure SDK for Python
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro