Megosztás a következőn keresztül:


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 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 van ellátva.

Előfeltételek

  • Hadoop-fürt a HDInsighton. Tekintse meg a HDInsight linuxos használatának első lépéseit.

  • Bash az Ubuntu-on Windows 10 rendszeren. A cikkben szereplő példák a Bash rendszerhéjat használják Windows 10 rendszeren. A telepítés lépéseit a windows 10-hez készült Linuxos Windows-alrendszer telepítési útmutatójában találja. Más Unix-rendszerhéjak is működnek. A példák néhány apró módosítással a Windows parancssorán is használhatók. Vagy használhatja a Windows PowerShellt is.

  • jq, egy parancssori JSON-processzor. Lásd: https://stedolan.github.io/jq/.

  • Windows PowerShell. Vagy használhatja a Basht.

Az Ambari REST API egységes erőforrás-azonosítójának alapszintű azonosítója

A HDInsighton https://CLUSTERNAME.azurehdinsight.net/api/v1/clusters/CLUSTERNAMECLUSTERNAME futó Ambari REST API alap egységes erőforrás-azonosítója (URI) a fürt neve. Az URI-kban a fürtnevek megkülönböztetik a kis- és nagybetűket. Míg az URI (CLUSTERNAME.azurehdinsight.net) teljes tartománynév (FQDN) részének fürtneve nem megkülönbözteti 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 Csatlakozás az Ambarihoz 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 ahelyett admin, hogy teljes felhasználónevet használnál, 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 megismétlenie őket az egyes példákhoz. A fürt neve egy külön lépésben marad meg.

V. Bash
Szerkessze a szkriptet a tényleges jelszóra cserélve PASSWORD . Ezután adja meg 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 alábbi 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 a szkripteket a fürt nevére való lecseréléséhez CLUSTERNAME . Ezután adja meg a parancsot. (A teljes tartománynév fürtneve nem megkülönbözteti a kis- és nagybetűk nevé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

Fejcsomó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

Feldolgozó 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. Ezek csak a HDInsight-fürtöt tartalmazó Azure-beli virtuális hálózaton belül érhetők el.

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

Az IP-cím megkereséséhez ismernie kell a fürtcsomópontok belső teljes tartománynevét (FQDN). Miután megkapta a teljes tartománynevet, lekérheti a gazdagép IP-címét. Az alábbi példák az összes gazdagépcsomópont teljes tartománynevéhez tartozó Ambari lekérdezést ismertetik. Ezután lekérdezi az Ambarit az egyes gazdagépek IP-címéhez.

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-t 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 az alapértelmezett tárolókonfigurációt kérik le 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 információt tartalmazó kiszolgálóra (service_config_version=1) alkalmazott első konfigurációt tartalmazzák. Ha olyan értéket kér le, amelyet a fürt létrehozása után módosítottak, 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ók blobtárolójának 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 az Azure Data Lake Storage Gen2-t használja az alapértelmezett tároláshoz. Az ACCOUNTNAME értékek é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 az 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 visszatérési érték hasonló a ACCOUNTNAME Data Lake Storage-fiók nevéhezACCOUNTNAME.azuredatalakestore.net.

    A fürt tárterületét tartalmazó Data Lake Storage-címtár 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 hasonló a következőhöz /clusters/CLUSTERNAME/: . Ez az érték a Data Lake Storage-fiók elérési útja. Ez az elérési út a fürt HDFS-kompatibilis fájlrendszerének gyökere.

Feljegyzé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 Spark-fürttípusból visszaadott adatok részlete.

"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. Az alábbi példában cserélje le 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 a következőt: newconfig.json.
    Módosítsa, majd adja meg a parancsokat az alábbiak szerint:

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

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

      V. 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 sablonná alakíthatók. 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, amelyet a rendszer tárol.newtag

    • 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 az elemeket, mivel ezekre az elemekre nincs szükség egy új konfiguráció elküldéséhez.

    • A tag értékkel version#################rendelkező elemet ad hozzá. 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. Szerkesztés 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 feladó "true" értékét a következőre módosítja: .a0"false">

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

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

  3. Küldés newconfig.json.
    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érés 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 a Spark szolgáltatást újra kell indítani az új konfiguráció életbe lépése előtt. 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 kiszolgálónak, amely bekapcsolja a karbantartási módot. 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. 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ésből visszaadott tényleges értékre id 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 kapcsolja ki a karbantartási módot az alábbi módon.

    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 referenciáját az Apache Ambari API-referencia V1-ben talál. Lásd még: Felhasználók engedélyezése Apache Ambari-nézetekhez