HDInsight-fürtök kezelése az Apache Ambari REST API használatával

Megtudhatja, hogyan kezelheti és figyelheti az Apache Hadoop-fürtöket az Azure HDInsightban az Apache Ambari REST API használatával.

Mi az az Apache Ambari?

Az Apache Ambari leegyszerűsíti a Hadoop-fürtök kezelését és monitorozását azáltal, hogy a REST API-k által támogatott, könnyen használható webes felhasználói felületet biztosít. Az Ambari alapértelmezés szerint Linux-alapú HDInsight-fürtökkel érhető el.

Előfeltételek

Alap egységes erőforrás-azonosító az Ambari REST API-hoz

A HDInsighton futó Ambari REST API alap egységes erőforrás-azonosítója (URI) a https://CLUSTERNAME.azurehdinsight.net/api/v1/clusters/CLUSTERNAME, ahol CLUSTERNAME a fürt neve. Az URI-kban a fürtnevek megkülönböztetik a kis- és nagybetűket. Bár az URICLUSTERNAME.azurehdinsight.net () teljes tartománynév (FQDN) részének fürtneve nem különbözteti meg a kis- és nagybetűket, az URI többi előfordulása megkülönbözteti a kis- és nagybetűket.

Hitelesítés

A HDInsighton futó Ambarihoz való csatlakozáshoz HTTPS szükséges. Használja a rendszergazdai fiók nevét (az alapértelmezett rendszergazda) és a fürt létrehozása során megadott jelszót.

Az Enterprise Security Package-fürtök esetében a adminhelyett használjon teljes felhasználónevet, például username@domain.onmicrosoft.com: .

Példák

Beállítás (hitelesítő adatok megőrzése)

Őrizze meg a hitelesítő adatait, hogy ne kelljen újra megírni őket az egyes példákhoz. A fürt neve egy külön lépésben marad meg.

A. Bash
Szerkessze az alábbi szkriptet a tényleges jelszóra cserélve PASSWORD . Ezután írja be a parancsot.

export password='PASSWORD'

B. PowerShell

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

A helyesen kisbetűs fürtnév azonosítása

A fürtnév tényleges burkolata eltérhet a várttól. Az itt ismertetett lépések a tényleges burkolatot mutatják be, majd egy változóban tárolják az összes későbbi példa esetében.

Szerkessze az alábbi szkripteket a fürt nevére való lecseréléséhez CLUSTERNAME . Ezután írja be a parancsot. (A teljes tartománynév fürtneve nem különbözteti meg a kis- és nagybetűt.)

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

JSON-adatok elemzése

Az alábbi példa jq vagy ConvertFrom-Json használatával elemzi a JSON-válaszdokumentumot, és csak az health_report eredményekből származó információkat jeleníti meg.

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

Fürtcsomópontok teljes tartománynevének lekérése

Előfordulhat, hogy ismernie kell egy fürtcsomópont teljes tartománynevét (FQDN). Az alábbi példák segítségével egyszerűen lekérheti a fürt különböző csomópontjai teljes tartománynevét:

Minden csomópont

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

Átjárócsomópontok

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

Munkavégző csomópontok

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

Zookeeper-csomópontok

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

Fürtcsomópontok belső IP-címének lekérése

Az ebben a szakaszban szereplő példák által visszaadott IP-címek nem érhetők el közvetlenül az interneten keresztül. Csak a HDInsight-fürtöt tartalmazó Azure-Virtual Network érhetők el.

A HDInsight és a virtuális hálózatok használatával kapcsolatos további információkért lásd: Virtuális hálózat tervezése a HDInsighthoz.

Az IP-cím megkereséséhez ismernie kell a fürtcsomópontok belső teljes tartománynevét (FQDN). Miután megkapta az FQDN-t, lekérheti a gazdagép IP-címét. Az alábbi példák elsőként kérdezik le az Ambarit az összes gazdacsomópont teljes tartománynevéhez. Ezután lekérdezi az Ambarit az egyes gazdagépek IP-címéről.

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"
}

Az alapértelmezett tároló lekérése

A HDInsight-fürtöknek alapértelmezett tárolóként Azure Storage-fiókot vagy Data Lake Storage kell használniuk. Az Ambari használatával lekérheti ezeket az információkat a fürt létrehozása után. Ha például adatokat szeretne olvasni/írni a HDInsighton kívüli tárolóba.

Az alábbi példák lekérik az alapértelmezett tárolókonfigurációt a fürtből:

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'

Fontos

Ezek a példák az adatokat tartalmazó kiszolgálóra (service_config_version=1) alkalmazott első konfigurációt adják vissza. Ha a fürt létrehozása után módosított értéket kér le, előfordulhat, hogy fel kell sorolnia a konfigurációs verziókat, és le kell kérnie a legújabbat.

A visszatérési érték az alábbi példák egyikéhez hasonló:

  • wasbs://CONTAINER@ACCOUNTNAME.blob.core.windows.net – Ez az érték azt jelzi, hogy a fürt egy Azure Storage-fiókot használ az alapértelmezett tároláshoz. Az ACCOUNTNAME érték a tárfiók neve. A CONTAINER rész a tárfiókban található blobtároló neve. A tároló a fürt HDFS-kompatibilis tárolójának gyökere.

  • abfs://CONTAINER@ACCOUNTNAME.dfs.core.windows.net– Ez az érték azt jelzi, hogy a fürt Azure Data Lake Storage Gen2 használ az alapértelmezett tároláshoz. A ACCOUNTNAME és CONTAINER az értékek jelentése megegyezik a korábban említett Azure Storage jelentésével.

  • adl://home– Ez az érték azt jelzi, hogy a fürt Azure Data Lake Storage Gen1-et használja az alapértelmezett tároláshoz.

    A Data Lake Storage fiók nevének megkereséséhez használja az alábbi példákat:

    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'
    

    A visszaadott érték hasonló a következőhöz: ACCOUNTNAME.azuredatalakestore.net, ahol ACCOUNTNAME a Data Lake Storage fiók neve.

    A fürt tárolóját tartalmazó Data Lake Storage könyvtárának megkereséséhez használja az alábbi példákat:

    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'
    

    A visszatérési érték a következőhöz hasonló: /clusters/CLUSTERNAME/. Ez az érték a Data Lake Storage fiókban található elérési út. Ez az elérési út a fürt HDFS-kompatibilis fájlrendszerének gyökere.

Megjegyzés

Az Azure PowerShell által biztosított Get-AzHDInsightCluster parancsmag a fürt tárolási adatait is visszaadja.

Az összes konfiguráció lekérése

Kérje le a fürthöz elérhető konfigurációkat.

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

Ez a példa egy JSON-dokumentumot ad vissza, amely a telepített összetevők aktuális konfigurációját tartalmazza. Tekintse meg a címke értékét. Az alábbi példa egy Részlet a Spark-fürttípusból visszaadott adatokból.

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

Adott összetevő konfigurációjának lekérése

Kérje le a kívánt összetevő konfigurációját. A következő példában cserélje le a elemet INITIAL az előző kérésből visszaadott címkeértékre.

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

Ez a példa egy JSON-dokumentumot ad vissza, amely az összetevő aktuális konfigurációját livy2-conf tartalmazza.

Konfiguráció frissítése

  1. Hozza létre newconfig.jsona elemet.
    Módosítsa, majd írja be az alábbi parancsokat:

    • Cserélje le a elemet livy2-conf az új összetevőre.

    • Cserélje le a elemet INITIAL az összes konfiguráció lekérése mezőből lekért tényleges értékretag.

      A. 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. PowerShell
      A PowerShell-szkript jq-t használ. Szerkessze C:\HD\jq\jq-win64 az alábbiakat, hogy tükrözze a jq tényleges elérési útját és verzióját.

      $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
      

      A Jq használatával a HDInsightból lekért adatok új konfigurációs sablont alakítanak át. Ezek a példák a következő műveleteket hajtják végre:

    • Létrehoz egy egyedi értéket, amely tartalmazza a "version" sztringet és a dátumot, amely a fájlban newtagvan tárolva.

    • Létrehoz egy gyökérdokumentumot az új konfigurációhoz.

    • Lekéri a .items[] tömb tartalmát, és hozzáadja a desired_config elemhez.

    • Törli a href, versionés Config elemeket, mivel ezekre az elemekre nincs szükség az új konfiguráció elküldéséhez.

    • Hozzáad egy tag értéket tartalmazó version#################elemet. A numerikus rész az aktuális dátumon alapul. Minden konfigurációnak egyedi címkével kell rendelkeznie.

      Végül az adatok a dokumentumba lesznek newconfig.json mentve. A dokumentumstruktúra a következő példához hasonlóan jelenik meg:

      {
        "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. Szerkessze a parancsot newconfig.json.
    Nyissa meg a newconfig.json dokumentumot, és módosítsa/adja hozzá az objektum értékeit properties . Az alábbi példa a értékét értékről "true" értékre "false"módosítja"livy.server.csrf_protection.enabled".

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

    Ha végzett a módosításokkal, mentse a fájlt.

  3. Küldje el newconfig.jsona elemet.
    Az alábbi parancsokkal küldje el a frissített konfigurációt az Ambarinak.

    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
    

    Ezek a parancsok új konfigurációként küldik el a newconfig.json fájl tartalmát a fürtnek. A kérelem egy JSON-dokumentumot ad vissza. A dokumentum versionTag elemének meg kell egyeznie a beküldött verzióval, és a konfigurációs objektum tartalmazza a kért konfigurációs módosításokat.

Szolgáltatásösszetevő újraindítása

Ezen a ponton az Ambari webes felhasználói felülete azt jelzi, hogy az új konfiguráció életbe lépése előtt újra kell indítani a Spark szolgáltatást. A szolgáltatás újraindításához kövesse az alábbi lépéseket.

  1. A Spark2 szolgáltatás karbantartási módjának engedélyezéséhez használja az alábbiakat:

    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. Karbantartási mód ellenőrzése

    Ezek a parancsok egy JSON-dokumentumot küldenek a karbantartási módot bekapcsoló kiszolgálónak. A következő kéréssel ellenőrizheti, hogy a szolgáltatás karbantartási módban van-e:

    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
    

    A visszatérési érték a következő: ON.

  3. Ezután a következő lépésben kapcsolja ki a Spark2 szolgáltatást:

    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
    

    A válasz a következő példához hasonló:

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

    Fontos

    Az href URI által visszaadott érték a fürtcsomópont belső IP-címét használja. Ha a fürtön kívülről szeretné használni, cserélje le a 10.0.0.18:8080 részt a fürt teljes tartománynevére.

  4. Ellenőrizze a kérést.
    Szerkessze az alábbi parancsot az előző lépésben visszaadott id tényleges értékre cserélve29. A következő parancsok lekérik a kérés állapotát:

    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
    

    A válasz COMPLETED azt jelzi, hogy a kérés befejeződött.

  5. Miután az előző kérés befejeződött, az alábbi lépésekkel indítsa el a Spark2 szolgáltatást.

    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
    

    A szolgáltatás most az új konfigurációt használja.

  6. Végül az alábbi paranccsal kapcsolja ki a karbantartási módot.

    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"}}}'
    

Következő lépések

A REST API teljes körű referenciáját lásd: Apache Ambari API Reference V1. Lásd még: Felhasználók engedélyezése Apache Ambari-nézetekhez