Pythonhoz készült HDInsight SDK
Áttekintés
A Pythonhoz készült HDInsight SDK olyan osztályokat és metódusokat biztosít, amelyek lehetővé teszik a HDInsight-fürtök kezelését. Az SDK többek között létrehozásra, törlésre, frissítésre, listázásra, átméretezésre, szkriptműveletek végrehajtására, monitorozásra és HDInsight-fürtök tulajdonságainak lekérésére szolgáló műveleteket tartalmaz.
Előfeltételek
- Egy Azure-fiók. Ha nincs ilyenje, ingyenes próbaverziót kaphat.
- Python
- Pip
SDK telepítése
A Pythonhoz készült HDInsight SDK megtalálható a Python-csomagindexben , és a következő futtatásával telepíthető:
pip install azure-mgmt-hdinsight
Hitelesítés
Az SDK-t először hitelesíteni kell az Azure-előfizetésével. Kövesse az alábbi példát egy szolgáltatásnév létrehozásához és hitelesítéséhez. Ha ez megtörtént, egy példánya HDInsightManagementClient
lesz, amely számos (az alábbi szakaszokban ismertetett) metódust tartalmaz, amelyek felügyeleti műveletek végrehajtására használhatók.
Megjegyzés
Az alábbi példán kívül más módszerek is léteznek a hitelesítésre, amelyek esetleg jobban megfelelnek az Igényeinek. Az összes metódust itt ismertetjük: Hitelesítés a Pythonhoz készült Azure Management Libraries használatával
Hitelesítési példa szolgáltatásnév használatával
Először jelentkezzen be az Azure Cloud Shell. Ellenőrizze, hogy jelenleg azt az előfizetést használja-e, amelyben létre szeretné hozni a szolgáltatásnevet.
az account show
Az előfizetés adatai JSON-ként jelennek meg.
{
"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"
}
}
Ha nincs bejelentkezve a megfelelő előfizetésbe, válassza ki a megfelelőt a következő futtatásával:
az account set -s <name or ID of subscription>
Fontos
Ha még nem regisztrálta a HDInsight-erőforrás-szolgáltatót egy másik módszerrel (például egy HDInsight-fürt Azure Portalon keresztüli létrehozásával), ezt egyszer kell elvégeznie a hitelesítés előtt. Ezt az Azure Cloud Shell az alábbi parancs futtatásával teheti meg:
az provider register --namespace Microsoft.HDInsight
Ezután válasszon nevet a szolgáltatásnévnek, és hozza létre a következő paranccsal:
az ad sp create-for-rbac --name <Service Principal Name> --role Contributor --sdk-auth
A szolgáltatásnév adatai JSON-ként jelennek meg.
{
"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/"
}
Másolja ki az alábbi Python-kódrészletet, és töltse ki TENANT_ID
a , CLIENT_ID
, , CLIENT_SECRET
és SUBSCRIPTION_ID
karakterláncokat a JSON-ból, amelyet a parancs futtatása után visszaadott a szolgáltatásnév létrehozásához.
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)
Fürtkezelés
Megjegyzés
Ez a szakasz feltételezi, hogy már hitelesített és létrehozott egy példányt HDInsightManagementClient
, és egy nevű client
változóban tárolja. A hitelesítésre és a hitelesítésre HDInsightManagementClient
vonatkozó utasítások a fenti Hitelesítés szakaszban találhatók.
Fürt létrehozása
A meghívásával client.clusters.create()
új fürt hozható létre.
Példák
A HDInsight-fürtök számos gyakori típusának létrehozására szolgáló kódminták érhetők el: HDInsight Python-minták.
Példa
Ez a példa bemutatja, hogyan hozhat létre Spark-fürtöt 2 átjárócsomóponttal és 1 munkavégző csomóponttal.
Megjegyzés
Először létre kell hoznia egy erőforráscsoportot és egy tárfiókot az alábbiak szerint. Ha már létrehozta ezeket, kihagyhatja ezeket a lépéseket.
Erőforráscsoport létrehozása
Erőforráscsoportot az Azure Cloud Shell használatával hozhat létre a következő futtatásával:
az group create -l <Region Name (i.e. eastus)> --n <Resource Group Name>
Tárfiók létrehozása
A következő futtatásával hozhat létre tárfiókot az Azure Cloud Shell használatával:
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>
Most futtassa a következő parancsot a tárfiók kulcsának lekéréséhez (erre szüksége lesz egy fürt létrehozásához):
az storage account keys list -n <Storage Account Name>
Az alábbi Python-kódrészlet létrehoz egy Spark-fürtöt 2 átjárócsomóponttal és 1 munkavégző csomóponttal. Töltse ki az üres változókat a megjegyzésekben leírtak szerint, és nyugodtan módosíthatja az egyéb paramétereket az ön igényeinek megfelelően.
# 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
))
Fürt részleteinek lekérése
Egy adott fürt tulajdonságainak lekérése:
client.clusters.get("<Resource Group Name>", "<Cluster Name>")
Példa
A használatával get
ellenőrizheti, hogy sikeresen létrehozta-e a fürtöt.
my_cluster = client.clusters.get("<Resource Group Name>", "<Cluster Name>")
print(my_cluster)
A kimenetnek a következőképpen kell kinéznie:
{'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>}
Fürtök listázása
Az előfizetés alatti fürtök listázása
client.clusters.list()
Fürtök listázása erőforráscsoport szerint
client.clusters.list_by_resource_group("<Resource Group Name>")
Megjegyzés
Mindkettőt list()
, és list_by_resource_group()
visszaad egy objektumot ClusterPaged
. A hívás advance_page()
az adott lapon lévő fürtök listáját adja vissza, és az objektumot a ClusterPaged
következő oldalra irányítja. Ez mindaddig megismételhető, amíg a rendszer kivételt StopIteration
nem emel ki, ami azt jelzi, hogy nincs több oldal.
Példa
Az alábbi példa az aktuális előfizetéshez tartozó összes fürt tulajdonságait nyomtatja ki:
clusters_paged = client.clusters.list()
while True:
try:
for cluster in clusters_paged.advance_page():
print(cluster)
except StopIteration:
break
Fürt törlése
Fürt törlése:
client.clusters.delete("<Resource Group Name>", "<Cluster Name>")
Fürtcímkék frissítése
Az adott fürt címkéi a következőképpen frissíthetők:
client.clusters.update("<Resource Group Name>", "<Cluster Name>", tags={<Dictionary of Tags>})
Példa
client.clusters.update("<Resource Group Name>", "<Cluster Name>", tags={"tag1Name" : "tag1Value", "tag2Name" : "tag2Value"})
Fürt átméretezése
Egy adott fürt munkavégző csomópontjainak számát átméretezheti egy ilyen új méret megadásával:
client.clusters.resize("<Resource Group Name>", "<Cluster Name>", target_instance_count=<Num of Worker Nodes>)
Fürtmonitorozás
A HDInsight Management SDK-val az Operations Management Suite (OMS) segítségével is felügyelheti a fürtök monitorozását.
Az OMS monitorozásának engedélyezése
Megjegyzés
Az OMS-figyelés engedélyezéséhez rendelkeznie kell egy meglévő Log Analytics-munkaterületel. Ha még nem hozott létre egyet, itt megtudhatja, hogyan teheti meg ezt: Log Analytics-munkaterület létrehozása a Azure Portal.
Az OMS-figyelés engedélyezése a fürtön:
client.extension.enable_monitoring("<Resource Group Name>", "<Cluster Name>", workspace_id="<Workspace Id>")
Az OMS-figyelés állapotának megtekintése
Az OMS állapotának lekérése a fürtön:
client.extension.get_monitoring_status("<Resource Group Name", "Cluster Name")
Az OMS monitorozásának letiltása
Az OMS letiltása a fürtön:
client.extension.disable_monitoring("<Resource Group Name>", "<Cluster Name>")
Szkriptműveletek
A HDInsight egy szkriptműveletek nevű konfigurációs módszert biztosít, amely egyéni szkripteket hív meg a fürt testreszabásához.
Megjegyzés
A szkriptműveletek használatáról itt talál további információt: Linux-alapú HDInsight-fürtök testreszabása szkriptműveletekkel
Szkriptműveletek végrehajtása
Szkriptműveletek végrehajtása egy adott fürtön:
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
Szkript törlése művelet
Egy adott fürtön tárolt, megőrzött szkriptművelet törlése:
client.script_actions.delete("<Resource Group Name>", "<Cluster Name", "<Script Name>")
Megőrzött szkriptműveletek listázása
Megjegyzés
list()
és list_persisted_scripts()
visszaad egy objektumot RuntimeScriptActionDetailPaged
. A hívás advance_page()
egy listát RuntimeScriptActionDetail
ad vissza az adott oldalon, és az RuntimeScriptActionDetailPaged
objektumot a következő oldalra irányítja. Ez mindaddig megismételhető, amíg a rendszer kivételt StopIteration
nem emel ki, ami azt jelzi, hogy nincs több oldal. Lásd az alábbi példát.
A megadott fürt összes megőrzött szkriptműveletének listázása:
client.script_actions.list_persisted_scripts("<Resource Group Name>", "<Cluster Name>")
Példa
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
Az összes szkript végrehajtási előzményeinek listázása
A megadott fürt összes szkriptjének végrehajtási előzményeinek listázása:
client.script_execution_history.list("<Resource Group Name>", "<Cluster Name>")
Példa
Ez a példa az összes korábbi szkriptvégrehajtás összes részletét kinyomtatja.
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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: