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

Zjistěte, jak použít rozhraní Apache Ambari REST API ke správě a monitorování clusterů systému Apache Hadoop v 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ů systému Hadoop tím, že poskytuje snadno použitelné webové uživatelské rozhraní se opírá o jeho 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 je dostupné ve výchozím nastavení s clustery HDInsight založené na Linuxu.Ambari is provided by default with Linux-based HDInsight clusters.

PožadavkyPrerequisites

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

Základní identifikátor URI (Uniform Resource) pro rozhraní Ambari REST API na 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 malá a velká písmena.Cluster names in URIs are case-sensitive. Zatímco název clusteru v části plně kvalifikovaný název (FQDN) identifikátoru URI (CLUSTERNAME.azurehdinsight.net) je velká a malá písmena, další výskyty v identifikátoru URI jsou malá a velká 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.

AuthenticationAuthentication

Připojení k Ambari na HDInsight vyžaduje protokol HTTPS.Connecting to Ambari on HDInsight requires HTTPS. Použijte název účtu správce (výchozí hodnota je správce) 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.

PříkladyExamples

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

Zachovat svoje přihlašovací údaje, aby se zabránilo pokuste pro každý příklad.Preserve your credentials to avoid reentering them for each example. Název clusteru budou zachovány v samostatný krok.The cluster name will be preserved in a separate step.

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

export password='PASSWORD'

B. PowerShellB. PowerShell

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

Zjištění názvu správně malá a velká použita clusteruIdentify correctly cased cluster name

Skutečné malých a velkých písmen na název clusteru může být jiný než byste očekávali, v závislosti na způsobu vytvoření clusteru.The actual casing of the cluster name may be different than you expect, depending on how the cluster was created. Zde uvedené kroky se zobrazí skutečné velká a malá písmena a uložte ho do proměnné pro všechny další příklady.The steps here will show the actual casing, and then store it in a variable for all subsequent examples.

Upravit skripty níže nahraďte CLUSTERNAME názvem vašeho clusteru.Edit the scripts below to replace CLUSTERNAME with your cluster name. Potom zadejte příkaz.Then enter the command. (Název clusteru plně kvalifikovaného názvu domény není malá a velká 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 analyzovat odpověď dokumentu JSON a zobrazit pouze health_report informace 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ískat plně kvalifikovaný název domény uzlů clusteruGet the FQDN of cluster nodes

Při práci s HDInsight, budete muset vědě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. Můžete snadno získat plně kvalifikovaný název domény pro různé uzly v clusteru pomocí následujících příkladech: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ískání interní IP adresy uzlů clusteruGet the internal IP address of cluster nodes

IP adresy vrácených příklady v této části nejsou přímo přístupné přes internet.The IP addresses returned by the examples in this section are not directly accessible over the internet. Jsou dostupné v rámci virtuální sítě Azure, která obsahuje HDInsight cluster.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 části možnosti rozšíření HDInsight s použitím vlastní virtuální sítě Azure.For more information on working with HDInsight and virtual networks, see Extend HDInsight capabilities by using a custom Azure Virtual Network.

Pokud chcete zjistit 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, pak můžete získat IP adresu hostitele.Once you have the FQDN, you can then get the IP address of the host. Následující příklady nejprve Ambari dotázat na plně kvalifikovaný název domény všech uzlů hostitele a pak Ambari dotázat na 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ískání výchozí úložištěGet the default storage

Při vytváření clusteru služby HDInsight, musí použít účet služby Azure Storage nebo Data Lake Storage jako výchozí úložiště clusteru.When you create an HDInsight cluster, you must use an Azure Storage Account or Data Lake Storage as the default storage for the cluster. Ambari slouží k načtení těchto informací po vytvoření clusteru.You can use Ambari to retrieve this information after the cluster has been created. Pokud třeba chcete pro čtení a zápisu dat do kontejneru mimo HDInsight.For example, if you want to read/write data to the container outside HDInsight.

Následující příklady načíst výchozí konfigurace úložiště v clusteru: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í konfigurace pro server (service_config_version=1) obsahující 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 změněna po vytvoření clusteru, budete muset seznamu verze konfigurace a načíst nejnovější.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á následující příklady: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á účet Azure Storage pro výchozí úložiště.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řenový adresář HDFS kompatibilní úložiště pro 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. ACCOUNTNAME a CONTAINER hodnoty mají stejný význam jako pro Azure Storage, již bylo zmíněno dříve.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.

    Pokud chcete zjistit název účtu Data Lake Storage, 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ář 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 účtu Data Lake Storage.This value is a path within the Data Lake Storage account. Tato cesta je kořenový systému HDFS kompatibilní souborů pro cluster.This path is the root of the HDFS compatible file system for the cluster.

Poznámka

Get-AzHDInsightCluster rutiny poskytované prostředí Azure PowerShell také vrátí informace o úložiště pro 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ískání 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

V tomto příkladu vrátí dokument JSON obsahující aktuální konfiguraci (identifikovaný značka hodnotu) 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ýpisem z data vrácená 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ískáte konfiguraci pro součást, která vás zajímají.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ácená z předchozí žádosti.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

V tomto příkladu vrátí dokumentu JSON, který obsahuje aktuální konfiguraci livy2-conf komponenty.This example returns a JSON document containing the current configuration for the livy2-conf component.

Konfigurace aktualizaceUpdate configuration

  1. Vytvoření 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 pomocí požadované součásti.Replace livy2-conf with the desired component.

    • Nahraďte INITIAL se skutečnou hodnotou načtené pro tag z získat všechny konfigurace.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
      Tento skript Powershellu využívá jq.The PowerShell script uses jq. Upravit C:\HD\jq\jq-win64 níže tak, aby odrážely skutečné cesty a verze 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
      

      Chcete-li data načtená z HDInsight do nové šablony konfigurace se používá Jq.Jq is used to turn the data retrieved from HDInsight into a new configuration template. Tyto příklady konkrétně provést následující akce:Specifically, these examples perform the following actions:

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

    • Vytvoří kořenový dokument pro nové požadované konfigurace.Creates a root document for the new desired configuration.

    • Získá obsah .items[] pole a přidá ho pod desired_config elementu.Gets the contents of the .items[] array and adds it under the desired_config element.

    • Odstraní href, version, a Config prvky, jako tyto prvky nejsou potřeba odeslat novou konfiguraci.Deletes the href, version, and Config elements, as these elements aren't needed to submit a new configuration.

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

      A konečně data uložená newconfig.json dokumentu.Finally, the data is saved to the newconfig.json document. Strukturu dokumentu by měl 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řít newconfig.json v dokumentu a upravit nebo přidat hodnoty properties objektu.Open 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" k "false".The following example changes the value of "livy.server.csrf_protection.enabled" from "true" to "false".

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

    Po dokončení úpravami, které provedete, uložte soubor.Save the file once you are done making modifications.

  3. Odeslat newconfig.json.Submit newconfig.json.
    K odeslání aktualizovanou konfiguraci na 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 odeslat obsah newconfig.json souboru 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. VersionTag element v tomto dokumentu by měla odpovídat verzi jste odeslali a configs objekt obsahuje změny konfigurace, které jste požádali.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

V tomto okamžiku Pokud podíváte na webové uživatelské rozhraní Ambari, službu Sparku znamená, že je nutné restartovat předtím, než se nová konfigurace projevila.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. Pomocí následujících kroků restartujte službu.Use the following steps to restart the service.

  1. Pomocí následujícího postupu povolte režim údržby pro službu Spark2: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ěření režimu údržbyVerify maintenance mode

    Tyto příkazy odeslání dokumentu JSON na serveru, na kterém Zapne režim údržby.These commands send a JSON document to the server that turns on maintenance mode. Můžete ověřit, že služba je nyní v režimu údržby pomocí následující žádosti: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. Chcete-li vypnout službu Spark2 v dalším kroku použijte následující: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 Hodnoty vrácené pomocí tohoto identifikátoru URI používá interní IP adresa uzlu clusteru.The href value returned by this URI is using the internal IP address of the cluster node. Chcete-li použít z mimo cluster, nahraďte 10.0.0.18:8080 část s plně kvalifikovaný název 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ěření požadavku.Verify request.
    Upravte následující příkaz tak, že nahradíte 29 se skutečnou hodnotou id vrácená 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 požadavku: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 označuje, že žádost byla dokončena.A response of COMPLETED indicates that the request has finished.

  5. Po dokončení předchozího požadavku, použijte následující postup ke spuštění služby 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 použijte následující postup k vypnutí možnosti režimu ú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ší postupNext steps

Úplný popis rozhraní REST API najdete v části Apache Ambari API Reference V1.For a complete reference of the REST API, see Apache Ambari API Reference V1.