Správa clusterů HDInsight pomocí REST API Apache AmbariManage HDInsight clusters by using the Apache Ambari REST API

Naučte se používat REST API Apache Ambari ke správě a monitorování clusterů Apache Hadoop ve službě Azure HDInsight.Learn how to use the Apache Ambari REST API to manage and monitor Apache Hadoop clusters in Azure HDInsight.

Co je Apache AmbariWhat is Apache Ambari

Apache Ambari zjednodušuje správu a monitorování clusterů Hadoop tím, že poskytuje jednoduché webové uživatelské rozhraní, které je zajištěno pomocí rozhraní REST API.Apache Ambari simplifies the management and monitoring of Hadoop clusters by providing an easy to use web UI backed by its REST APIs. Ambari se ve výchozím nastavení poskytuje u clusterů HDInsight se systémem Linux.Ambari is provided by default with Linux-based HDInsight clusters.

PožadavkyPrerequisites

Základní identifikátor URI pro rozhraní Ambari REST APIBase URI for Ambari Rest API

Základní identifikátor URI (Uniform Resource Identifier) pro Ambari REST API v HDInsight je https://CLUSTERNAME.azurehdinsight.net/api/v1/clusters/CLUSTERNAME, kde CLUSTERNAME je název vašeho clusteru.The base Uniform Resource Identifier (URI) for the Ambari REST API on HDInsight is https://CLUSTERNAME.azurehdinsight.net/api/v1/clusters/CLUSTERNAME, where CLUSTERNAME is the name of your cluster. Názvy clusterů v identifikátorech URI rozlišují velká a malá písmena.Cluster names in URIs are case-sensitive. I když název clusteru v části plně kvalifikovaného názvu domény (FQDN) v identifikátoru URICLUSTERNAME.azurehdinsight.net() rozlišuje velká a malá písmena, jiné výskyty v identifikátoru URI rozlišují velká a malá písmena.While the cluster name in the fully qualified domain name (FQDN) part of the URI (CLUSTERNAME.azurehdinsight.net) is case-insensitive, other occurrences in the URI are case-sensitive.

OvěřováníAuthentication

Připojení k Ambari v HDInsight vyžaduje protokol HTTPS.Connecting to Ambari on HDInsight requires HTTPS. Použijte název účtu správce (výchozí nastavení je admin) a heslo, které jste zadali při vytváření clusteru.Use the admin account name (the default is admin) and password you provided during cluster creation.

V případě balíček zabezpečení podniku clusterů místo adminpoužijte plně kvalifikované uživatelské jméno, jako username@domain.onmicrosoft.comje.For Enterprise Security Package clusters, instead of admin, use a fully qualified username like username@domain.onmicrosoft.com.

PříkladyExamples

Nastavení (zachovat přihlašovací údaje)Setup (Preserve credentials)

Zachovejte přihlašovací údaje, abyste je nemuseli znovu zadávat pro každý příklad.Preserve your credentials to avoid reentering them for each example. Název clusteru se zachová v samostatném kroku.The cluster name will be preserved in a separate step.

A. BashA. Bash
Následující skript upravte tak, že PASSWORD nahradíte vlastní heslo.Edit the script below by replacing PASSWORD with your actual password. Pak zadejte příkaz.Then enter the command.

export password='PASSWORD'

B. PowerShellB. PowerShell

$creds = Get-Credential -UserName "admin" -Message "Enter the HDInsight login"

Identifikace správného názvu clusteru použitaIdentify correctly cased cluster name

V závislosti na tom, jak byl cluster vytvořen, může být skutečná velikost názvu clusteru odlišná, než očekáváte.The actual casing of the cluster name may be different than you expect, depending on how the cluster was created. V následujících krocích se zobrazí skutečná velikost písmen a pak se uloží do proměnné pro všechny následující příklady.The steps here will show the actual casing, and then store it in a variable for all subsequent examples.

Úpravou následujících skriptů nahraďte CLUSTERNAME název vašeho clusteru.Edit the scripts below to replace CLUSTERNAME with your cluster name. Pak zadejte příkaz.Then enter the command. (Název clusteru pro plně kvalifikovaný název domény nerozlišuje velká a malá písmena.)(The cluster name for the FQDN is not case-sensitive.)

export clusterName=$(curl -u admin:$password -sS -G "https://CLUSTERNAME.azurehdinsight.net/api/v1/clusters" | jq -r '.items[].Clusters.cluster_name')
echo $clusterName
# Identify properly cased cluster name
$resp = Invoke-WebRequest -Uri "https://CLUSTERNAME.azurehdinsight.net/api/v1/clusters" `
    -Credential $creds -UseBasicParsing
$clusterName = (ConvertFrom-Json $resp.Content).items.Clusters.cluster_name;

# Show cluster name
$clusterName

Analýza dat JSONParsing JSON data

Následující příklad používá JQ nebo ConvertFrom-JSON k analýze dokumentu odpovědi JSON a health_report zobrazení pouze informací z výsledků.The following example uses jq or ConvertFrom-Json to parse the JSON response document and display only the health_report information from the results.

curl -u admin:$password -sS -G "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName" \
| jq '.Clusters.health_report'
$resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName" `
    -Credential $creds -UseBasicParsing
$respObj = ConvertFrom-Json $resp.Content
$respObj.Clusters.health_report

Získání plně kvalifikovaného názvu domény uzlů clusteruGet the FQDN of cluster nodes

Při práci se službou HDInsight budete možná muset znát plně kvalifikovaný název domény (FQDN) uzlu clusteru.When working with HDInsight, you may need to know the fully qualified domain name (FQDN) of a cluster node. Plně kvalifikovaný název domény pro různé uzly v clusteru můžete snadno načíst pomocí následujících příkladů:You can easily retrieve the FQDN for the various nodes in the cluster using the following examples:

Všechny uzlyAll nodes

curl -u admin:$password -sS -G "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/hosts" \
| jq -r '.items[].Hosts.host_name'
$resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/hosts" `
    -Credential $creds -UseBasicParsing
$respObj = ConvertFrom-Json $resp.Content
$respObj.items.Hosts.host_name

Hlavní uzlyHead nodes

curl -u admin:$password -sS -G "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/services/HDFS/components/NAMENODE" \
| jq -r '.host_components[].HostRoles.host_name'
$resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/services/HDFS/components/NAMENODE" `
    -Credential $creds -UseBasicParsing
$respObj = ConvertFrom-Json $resp.Content
$respObj.host_components.HostRoles.host_name

Pracovní uzlyWorker nodes

curl -u admin:$password -sS -G "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/services/HDFS/components/DATANODE" \
| jq -r '.host_components[].HostRoles.host_name'
$resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/services/HDFS/components/DATANODE" `
    -Credential $creds -UseBasicParsing
$respObj = ConvertFrom-Json $resp.Content
$respObj.host_components.HostRoles.host_name

Uzly ZookeeperZookeeper nodes

curl -u admin:$password -sS -G "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/services/ZOOKEEPER/components/ZOOKEEPER_SERVER" \
| jq -r ".host_components[].HostRoles.host_name"
$resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/services/ZOOKEEPER/components/ZOOKEEPER_SERVER" `
    -Credential $creds -UseBasicParsing
$respObj = ConvertFrom-Json $resp.Content
$respObj.host_components.HostRoles.host_name

Získat interní IP adresu uzlů clusteruGet the internal IP address of cluster nodes

IP adresy vrácené příklady v této části nejsou přímo přístupné prostřednictvím Internetu.The IP addresses returned by the examples in this section are not directly accessible over the internet. Jsou přístupné jenom v rámci Azure Virtual Network, který obsahuje cluster HDInsight.They are only accessible within the Azure Virtual Network that contains the HDInsight cluster.

Další informace o práci s HDInsight a virtuálními sítěmi najdete v tématu plánování virtuální sítě pro HDInsight.For more information on working with HDInsight and virtual networks, see Plan a virtual network for HDInsight.

Pokud chcete najít IP adresu, musíte znát interní plně kvalifikovaný název domény (FQDN) uzlů clusteru.To find the IP address, you must know the internal fully qualified domain name (FQDN) of the cluster nodes. Jakmile budete mít plně kvalifikovaný název domény, můžete získat IP adresu hostitele.Once you have the FQDN, you can then get the IP address of the host. V následujících příkladech se první dotaz Ambari na plně kvalifikovaný název domény všech hostitelských uzlů a pak na dotaz Ambari pro IP adresu každého hostitele.The following examples first query Ambari for the FQDN of all the host nodes, then query Ambari for the IP address of each host.

for HOSTNAME in $(curl -u admin:$password -sS -G "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/hosts" | jq -r '.items[].Hosts.host_name')
do
    IP=$(curl -u admin:$password -sS -G "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/hosts/$HOSTNAME" | jq -r '.Hosts.ip')
  echo "$HOSTNAME <--> $IP"
done
$uri = "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/hosts" 
$resp = Invoke-WebRequest -Uri $uri -Credential $creds -UseBasicParsing
$respObj = ConvertFrom-Json $resp.Content
foreach($item in $respObj.items) {
    $hostName = [string]$item.Hosts.host_name
    $hostInfoResp = Invoke-WebRequest -Uri "$uri/$hostName" `
        -Credential $creds -UseBasicParsing
    $hostInfoObj = ConvertFrom-Json $hostInfoResp 
    $hostIp = $hostInfoObj.Hosts.ip
    "$hostName <--> $hostIp"
}

Získat výchozí úložištěGet the default storage

Při vytváření clusteru HDInsight musíte jako výchozí úložiště pro cluster použít účet Azure Storage nebo Data Lake Storage.When you create an HDInsight cluster, you must use an Azure Storage Account or Data Lake Storage as the default storage for the cluster. Po vytvoření clusteru můžete tyto informace načíst pomocí Ambari.You can use Ambari to retrieve this information after the cluster has been created. Například pokud chcete číst/zapisovat data do kontejneru mimo HDInsight.For example, if you want to read/write data to the container outside HDInsight.

Následující příklady načtou z clusteru výchozí konfiguraci úložiště:The following examples retrieve the default storage configuration from the cluster:

curl -u admin:$password -sS -G "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/configurations/service_config_versions?service_name=HDFS&service_config_version=1" \
| jq -r '.items[].configurations[].properties["fs.defaultFS"] | select(. != null)'
$resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/configurations/service_config_versions?service_name=HDFS&service_config_version=1" `
    -Credential $creds -UseBasicParsing
$respObj = ConvertFrom-Json $resp.Content
$respObj.items.configurations.properties.'fs.defaultFS'

Důležité

Tyto příklady vrátí první konfiguraci použitou pro server (service_config_version=1), který obsahuje tyto informace.These examples return the first configuration applied to the server (service_config_version=1) which contains this information. Pokud načtete hodnotu, která byla upravena po vytvoření clusteru, bude pravděpodobně nutné zobrazit seznam verzí konfigurace a načíst nejnovější z nich.If you retrieve a value that has been modified after cluster creation, you may need to list the configuration versions and retrieve the latest one.

Vrácená hodnota je podobná jednomu z následujících příkladů:The return value is similar to one of the following examples:

  • wasbs://CONTAINER@ACCOUNTNAME.blob.core.windows.net– Tato hodnota označuje, že cluster používá pro výchozí úložiště účet Azure Storage.wasbs://CONTAINER@ACCOUNTNAME.blob.core.windows.net - This value indicates that the cluster is using an Azure Storage account for default storage. ACCOUNTNAME Hodnota je název účtu úložiště.The ACCOUNTNAME value is the name of the storage account. CONTAINER Část je název kontejneru objektů BLOB v účtu úložiště.The CONTAINER portion is the name of the blob container in the storage account. Kontejner je kořenem úložiště kompatibilního se systémem HDFS pro daný cluster.The container is the root of the HDFS compatible storage for the cluster.

  • abfs://CONTAINER@ACCOUNTNAME.dfs.core.windows.net– Tato hodnota označuje, že cluster používá Azure Data Lake Storage Gen2 pro výchozí úložiště.abfs://CONTAINER@ACCOUNTNAME.dfs.core.windows.net - This value indicates that the cluster is using Azure Data Lake Storage Gen2 for default storage. Hodnoty ACCOUNTNAME aCONTAINER mají stejný význam jako Azure Storage výše zmíněné.The ACCOUNTNAME and CONTAINER values have the same meanings as for Azure Storage mentioned previously.

  • adl://home– Tato hodnota označuje, že cluster používá Azure Data Lake Storage Gen1 pro výchozí úložiště.adl://home - This value indicates that the cluster is using Azure Data Lake Storage Gen1 for default storage.

    Chcete-li najít Data Lake Storage název účtu, použijte následující příklady:To find the Data Lake Storage account name, use the following examples:

    curl -u admin:$password -sS -G "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/configurations/service_config_versions?service_name=HDFS&service_config_version=1" \
    | jq -r '.items[].configurations[].properties["dfs.adls.home.hostname"] | select(. != null)'
    
    $resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/configurations/service_config_versions?service_name=HDFS&service_config_version=1" `
        -Credential $creds -UseBasicParsing
    $respObj = ConvertFrom-Json $resp.Content
    $respObj.items.configurations.properties.'dfs.adls.home.hostname'
    

    Vrácená hodnota je podobná ACCOUNTNAME.azuredatalakestore.net, kde ACCOUNTNAME je název účtu Data Lake Storage.The return value is similar to ACCOUNTNAME.azuredatalakestore.net, where ACCOUNTNAME is the name of the Data Lake Storage account.

    Pokud chcete najít adresář v rámci Data Lake Storage, který obsahuje úložiště pro cluster, použijte následující příklady:To find the directory within Data Lake Storage that contains the storage for the cluster, use the following examples:

    curl -u admin:$password -sS -G "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/configurations/service_config_versions?service_name=HDFS&service_config_version=1" \
    | jq -r '.items[].configurations[].properties["dfs.adls.home.mountpoint"] | select(. != null)'
    
    $resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/configurations/service_config_versions?service_name=HDFS&service_config_version=1" `
        -Credential $creds -UseBasicParsing
    $respObj = ConvertFrom-Json $resp.Content
    $respObj.items.configurations.properties.'dfs.adls.home.mountpoint'
    

    Vrácená hodnota je podobná /clusters/CLUSTERNAME/.The return value is similar to /clusters/CLUSTERNAME/. Tato hodnota je cesta v rámci Data Lake Storage účtu.This value is a path within the Data Lake Storage account. Tato cesta je kořenem systému souborů kompatibilního s HDFS pro daný cluster.This path is the root of the HDFS compatible file system for the cluster.

Poznámka

Rutina Get-AzHDInsightCluster , kterou poskytuje Azure PowerShell , vrátí taky informace o úložišti pro daný cluster.The Get-AzHDInsightCluster cmdlet provided by Azure PowerShell also returns the storage information for the cluster.

Získat všechny konfiguraceGet all configurations

Získejte konfigurace, které jsou k dispozici pro váš cluster.Get the configurations that are available for your cluster.

curl -u admin:$password -sS -G "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName?fields=Clusters/desired_configs"
$respObj = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName`?fields=Clusters/desired_configs" `
    -Credential $creds -UseBasicParsing
$respObj.Content

Tento příklad vrátí dokument JSON obsahující aktuální konfiguraci (identifikovanou hodnotou značky ) pro součásti nainstalované v clusteru.This example returns a JSON document containing the current configuration (identified by the tag value) for the components installed on the cluster. Následující příklad je výpis z dat vrácených z typu clusteru Spark.The following example is an excerpt from the data returned from a Spark cluster type.

"jupyter-site" : {
  "tag" : "INITIAL",
  "version" : 1
},
"livy2-client-conf" : {
  "tag" : "INITIAL",
  "version" : 1
},
"livy2-conf" : {
  "tag" : "INITIAL",
  "version" : 1
},

Získat konfiguraci pro konkrétní součástGet configuration for specific component

Získejte konfiguraci pro komponentu, které vás zajímá.Get the configuration for the component that you are interested in. V následujícím příkladu nahraďte INITIAL hodnotou značky vrácenou z předchozího požadavku.In the following example, replace INITIAL with the tag value returned from the previous request.

curl -u admin:$password -sS -G "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/configurations?type=livy2-conf&tag=INITIAL"
$resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/configurations?type=livy2-conf&tag=INITIAL" `
    -Credential $creds -UseBasicParsing
$resp.Content

Tento příklad vrátí dokument JSON obsahující aktuální konfiguraci pro livy2-conf komponentu.This example returns a JSON document containing the current configuration for the livy2-conf component.

Aktualizovat konfiguraciUpdate configuration

  1. Vytvořit newconfig.json.Create newconfig.json.
    Upravte a potom zadejte následující příkazy:Modify, and then enter the commands below:

    • Nahraďte livy2-conf požadovanou komponentou.Replace livy2-conf with the desired component.

    • Nahraďte INITIAL skutečnou hodnotou získanou tag pro získání všech konfigurací.Replace INITIAL with actual value retrieved for tag from Get all configurations.

      A. BashA. Bash

      curl -u admin:$password -sS -G "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/configurations?type=livy2-conf&tag=INITIAL" \
      | jq --arg newtag $(echo version$(date +%s%N)) '.items[] | del(.href, .version, .Config) | .tag |= $newtag | {"Clusters": {"desired_config": .}}' > newconfig.json
      

      B. PowerShellB. PowerShell
      PowerShellový skript používá JQ.The PowerShell script uses jq. Níže C:\HD\jq\jq-win64 upravte, aby odrážela vaši skutečnou cestu a verzi JQ.Edit C:\HD\jq\jq-win64 below to reflect your actual path and version of jq.

      $epoch = Get-Date -Year 1970 -Month 1 -Day 1 -Hour 0 -Minute 0 -Second 0
      $now = Get-Date
      $unixTimeStamp = [math]::truncate($now.ToUniversalTime().Subtract($epoch).TotalMilliSeconds)
      $resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/configurations?type=livy2-conf&tag=INITIAL" `
        -Credential $creds -UseBasicParsing
      $resp.Content | C:\HD\jq\jq-win64 --arg newtag "version$unixTimeStamp" '.items[] | del(.href, .version, .Config) | .tag |= $newtag | {"Clusters": {"desired_config": .}}' > newconfig.json
      

      JQ se používá k zapnutí dat načtených z HDInsight do nové šablony konfigurace.Jq is used to turn the data retrieved from HDInsight into a new configuration template. Konkrétně tyto příklady provádějí následující akce:Specifically, these examples perform the following actions:

    • Vytvoří jedinečnou hodnotu obsahující řetězec "Version" a datum, které je uloženo v newtag.Creates a unique value containing the string "version" and the date, which is stored in newtag.

    • Vytvoří kořenový dokument pro novou požadovanou konfiguraci.Creates a root document for the new desired configuration.

    • Načte obsah .items[] pole a přidá ho pod element desired_config .Gets the contents of the .items[] array and adds it under the desired_config element.

    • Odstraní prvky href, version aConfig , protože tyto prvky nejsou nutné k odeslání nové konfigurace.Deletes the href, version, and Config elements, as these elements aren't needed to submit a new configuration.

    • Přidá prvek s hodnotou version#################. tagAdds a tag element with a value of version#################. Číselná část je založena na aktuálním datu.The numeric portion is based on the current date. Každá konfigurace musí mít jedinečnou značku.Each configuration must have a unique tag.

      Nakonec se data uloží do newconfig.json dokumentu.Finally, the data is saved to the newconfig.json document. Struktura dokumentu by měla vypadat podobně jako v následujícím příkladu:The document structure should appear similar to the following example:

      {
        "Clusters": {
          "desired_config": {
            "tag": "version1552064778014",
            "type": "livy2-conf",
            "properties": {
              "livy.environment": "production",
              "livy.impersonation.enabled": "true",
              "livy.repl.enableHiveContext": "true",
              "livy.server.csrf_protection.enabled": "true",
                ....
            },
          },
        }
      }
      
  2. Upravit newconfig.json.Edit newconfig.json.
    Otevřete dokument a upravte nebo přidejte hodnoty properties v objektu. newconfig.jsonOpen the newconfig.json document and modify/add values in the properties object. Následující příklad změní hodnotu "livy.server.csrf_protection.enabled" z "true" na "false".The following example changes the value of "livy.server.csrf_protection.enabled" from "true" to "false".

     "livy.server.csrf_protection.enabled": "false",
    

    Až provedete úpravy, soubor uložte.Save the file once you are done making modifications.

  3. Odeslat newconfig.json.Submit newconfig.json.
    K odeslání aktualizované konfigurace do Ambari použijte následující příkazy.Use the following commands to submit the updated configuration to Ambari.

    curl -u admin:$password -sS -H "X-Requested-By: ambari" -X PUT -d @newconfig.json "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName"
    
    $newConfig = Get-Content .\newconfig.json
    $resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName" `
        -Credential $creds -UseBasicParsing `
        -Method PUT `
        -Headers @{"X-Requested-By" = "ambari"} `
        -Body $newConfig
    $resp.Content
    

    Tyto příkazy odesílají obsah souboru newconfig. JSON do clusteru jako novou požadovanou konfiguraci.These commands submit the contents of the newconfig.json file to the cluster as the new desired configuration. Požadavek vrátí dokument JSON.The request returns a JSON document. Element versionTag v tomto dokumentu by se měl shodovat s verzí, kterou jste odeslali, a objekt config obsahuje změny konfigurace, které jste požadovali.The versionTag element in this document should match the version you submitted, and the configs object contains the configuration changes you requested.

Restartovat součást službyRestart a service component

Pokud se v tomto okamžiku podíváte na webové uživatelské rozhraní Ambari, služba Spark indikuje, že je nutné ji restartovat, aby se nová konfigurace mohla projevit.At this point, if you look at the Ambari web UI, the Spark service indicates that it needs to be restarted before the new configuration can take effect. K restartování služby použijte následující postup.Use the following steps to restart the service.

  1. Pro povolení režimu údržby pro službu Spark2 použijte následující postup:Use the following to enable maintenance mode for the Spark2 service:

    curl -u admin:$password -sS -H "X-Requested-By: ambari" \
    -X PUT -d '{"RequestInfo": {"context": "turning on maintenance mode for SPARK2"},"Body": {"ServiceInfo": {"maintenance_state":"ON"}}}' \
    "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/services/SPARK2"
    
    $resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/services/SPARK2" `
        -Credential $creds -UseBasicParsing `
        -Method PUT `
        -Headers @{"X-Requested-By" = "ambari"} `
        -Body '{"RequestInfo": {"context": "turning on maintenance mode for SPARK2"},"Body": {"ServiceInfo": {"maintenance_state":"ON"}}}'
    
  2. Ověřit režim údržbyVerify maintenance mode

    Tyto příkazy odesílají dokument JSON na server, který se zapne v režimu údržby.These commands send a JSON document to the server that turns on maintenance mode. Pomocí této žádosti můžete ověřit, že je služba teď v režimu údržby:You can verify that the service is now in maintenance mode using the following request:

    curl -u admin:$password -sS -H "X-Requested-By: ambari" \
    "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/services/SPARK2" \
    | jq .ServiceInfo.maintenance_state
    
    $resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/services/SPARK2" `
        -Credential $creds -UseBasicParsing
    $respObj = ConvertFrom-Json $resp.Content
    $respObj.ServiceInfo.maintenance_state
    

    Vrácená hodnota je ON.The return value is ON.

  3. Dále pomocí následujícího políčka vypněte službu Spark2:Next, use the following to turn off the Spark2 service:

    curl -u admin:$password -sS -H "X-Requested-By: ambari" \
    -X PUT -d '{"RequestInfo":{"context":"_PARSE_.STOP.SPARK2","operation_level":{"level":"SERVICE","cluster_name":"CLUSTERNAME","service_name":"SPARK"}},"Body":{"ServiceInfo":{"state":"INSTALLED"}}}' \
    "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/services/SPARK2"
    
    $resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/services/SPARK2" `
        -Credential $creds -UseBasicParsing `
        -Method PUT `
        -Headers @{"X-Requested-By" = "ambari"} `
        -Body '{"RequestInfo":{"context":"_PARSE_.STOP.SPARK2","operation_level":{"level":"SERVICE","cluster_name":"CLUSTERNAME","service_name":"SPARK"}},"Body":{"ServiceInfo":{"state":"INSTALLED"}}}'
    $resp.Content
    

    Odpověď bude podobná jako v následujícím příkladu:The response is similar to the following example:

    {
        "href" : "http://10.0.0.18:8080/api/v1/clusters/CLUSTERNAME/requests/29",
        "Requests" : {
            "id" : 29,
            "status" : "Accepted"
        }
    }
    

    Důležité

    href Hodnota vrácená tímto identifikátorem URI používá interní IP adresu uzlu clusteru.The href value returned by this URI is using the internal IP address of the cluster node. Pokud ho chcete použít mimo cluster, nahraďte 10.0.0.18:8080 jeho část plně kvalifikovaným názvem domény clusteru.To use it from outside the cluster, replace the 10.0.0.18:8080 portion with the FQDN of the cluster.

  4. Ověřte požadavek.Verify request.
    Níže uvedený příkaz upravte nahrazením 29 skutečnou id hodnotou vrácenou z předchozího kroku.Edit the command below by replacing 29 with the actual value for id returned from the prior step. Následující příkazy načtou stav žádosti:The following commands retrieve the status of the request:

    curl -u admin:$password -sS -H "X-Requested-By: ambari" \
    "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/requests/29" \
    | jq .Requests.request_status
    
    $resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/requests/29" `
        -Credential $creds -UseBasicParsing
    $respObj = ConvertFrom-Json $resp.Content
    $respObj.Requests.request_status
    

    Odpověď COMPLETED indikuje, že žádost byla dokončena.A response of COMPLETED indicates that the request has finished.

  5. Po dokončení předchozí žádosti použijte následující příkaz a spusťte službu Spark2.Once the previous request completes, use the following to start the Spark2 service.

    curl -u admin:$password -sS -H "X-Requested-By: ambari" \
    -X PUT -d '{"RequestInfo":{"context":"_PARSE_.START.SPARK2","operation_level":{"level":"SERVICE","cluster_name":"CLUSTERNAME","service_name":"SPARK"}},"Body":{"ServiceInfo":{"state":"STARTED"}}}' \
    "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/services/SPARK2"
    
    $resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/services/SPARK2" `
        -Credential $creds -UseBasicParsing `
        -Method PUT `
        -Headers @{"X-Requested-By" = "ambari"} `
        -Body '{"RequestInfo":{"context":"_PARSE_.START.SPARK2","operation_level":{"level":"SERVICE","cluster_name":"CLUSTERNAME","service_name":"SPARK"}},"Body":{"ServiceInfo":{"state":"STARTED"}}}'
    $resp.Content
    

    Služba teď používá novou konfiguraci.The service is now using the new configuration.

  6. Nakonec pomocí následujícího příkazu vypněte režim údržby.Finally, use the following to turn off maintenance mode.

    curl -u admin:$password -sS -H "X-Requested-By: ambari" \
    -X PUT -d '{"RequestInfo": {"context": "turning off maintenance mode for SPARK2"},"Body": {"ServiceInfo": {"maintenance_state":"OFF"}}}' \
    "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/services/SPARK2"
    
    $resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/services/SPARK2" `
        -Credential $creds -UseBasicParsing `
        -Method PUT `
        -Headers @{"X-Requested-By" = "ambari"} `
        -Body '{"RequestInfo": {"context": "turning off maintenance mode for SPARK2"},"Body": {"ServiceInfo": {"maintenance_state":"OFF"}}}'
    

Další krokyNext steps

Úplný odkaz na REST API najdete v tématu rozhraní Apache Ambari API reference V1.For a complete reference of the REST API, see Apache Ambari API Reference V1.