HDInsight-clusters beheren met behulp van de Apache Ambari REST API

Meer informatie over het gebruik van de Apache Ambari REST API voor het beheren en bewaken van Apache Hadoop-clusters in Azure HDInsight.

Wat is Apache Ambari?

Apache Ambari vereenvoudigt het beheer en de bewaking van Hadoop-clusters door een gebruiksvriendelijke webinterface te bieden die wordt ondersteund door de REST API's. Ambari wordt standaard geleverd met HDInsight-clusters op basis van Linux.

Vereisten

Basis-uniforme resource-id voor Ambari REST API

De basis-URI (Uniform Resource Identifier) voor de Ambari REST API in HDInsight is https://CLUSTERNAME.azurehdinsight.net/api/v1/clusters/CLUSTERNAME, waarbij CLUSTERNAME de naam van uw cluster is. Clusternamen in URI's zijn hoofdlettergevoelig. Hoewel de clusternaam in het FQDN-gedeelte (Fully Qualified Domain Name) van de URI (CLUSTERNAME.azurehdinsight.net) niet hoofdlettergevoelig is, zijn andere exemplaren in de URI hoofdlettergevoelig.

Verificatie

Voor verbinding met Ambari in HDInsight is HTTPS vereist. Gebruik de naam van het beheerdersaccount (de standaardinstelling is beheerder) en het wachtwoord dat u hebt opgegeven tijdens het maken van het cluster.

Gebruik voor Enterprise Security Package-clusters in plaats van admineen volledig gekwalificeerde gebruikersnaam, zoals username@domain.onmicrosoft.com.

Voorbeelden

Installatie (referenties behouden)

Behoud uw referenties om te voorkomen dat ze voor elk voorbeeld opnieuw worden gebruikt. De clusternaam blijft behouden in een afzonderlijke stap.

A. Bash
Bewerk het onderstaande script door te PASSWORD vervangen door uw werkelijke wachtwoord. Voer vervolgens de opdracht in.

export password='PASSWORD'

B. PowerShell

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

De juiste clusternaam met hoofdletters en kleine letters identificeren

De werkelijke hoofdletters van de clusternaam kunnen afwijken van wat u verwacht. In de stappen hier wordt de werkelijke hoofdletters weergegeven en wordt deze vervolgens opgeslagen in een variabele voor alle latere voorbeelden.

Bewerk de onderstaande scripts om te vervangen door CLUSTERNAME de naam van uw cluster. Voer vervolgens de opdracht in. (De clusternaam voor de FQDN is niet hoofdlettergevoelig.)

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-gegevens parseren

In het volgende voorbeeld wordt jq of ConvertFrom-Json gebruikt om het JSON-antwoorddocument te parseren en alleen de health_report informatie uit de resultaten weer te geven.

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

De FQDN van clusterknooppunten ophalen

Mogelijk moet u de FQDN (Fully Qualified Domain Name) van een clusterknooppunt weten. U kunt eenvoudig de FQDN voor de verschillende knooppunten in het cluster ophalen met behulp van de volgende voorbeelden:

Alle knooppunten

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

Hoofdknooppunten

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

Werkknooppunten

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-knooppunten

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

Het interne IP-adres van clusterknooppunten ophalen

De IP-adressen die door de voorbeelden in deze sectie worden geretourneerd, zijn niet rechtstreeks toegankelijk via internet. Ze zijn alleen toegankelijk binnen de Azure-Virtual Network die het HDInsight-cluster bevat.

Zie Een virtueel netwerk plannen voor HDInsight voor meer informatie over het werken met HDInsight en virtuele netwerken.

Als u het IP-adres wilt vinden, moet u de interne FQDN (Fully Qualified Domain Name) van de clusterknooppunten kennen. Zodra u de FQDN hebt, kunt u het IP-adres van de host ophalen. In de volgende voorbeelden wordt eerst een query uitgevoerd op Ambari voor de FQDN van alle hostknooppunten. Vervolgens voert u een query uit op Ambari naar het IP-adres van elke 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"
}

De standaardopslag ophalen

HDInsight-clusters moeten een Azure Storage-account of Data Lake Storage als standaardopslag gebruiken. U kunt Ambari gebruiken om deze informatie op te halen nadat het cluster is gemaakt. Bijvoorbeeld als u gegevens wilt lezen/schrijven naar de container buiten HDInsight.

In de volgende voorbeelden wordt de standaardopslagconfiguratie opgehaald uit het 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'

Belangrijk

Deze voorbeelden retourneren de eerste configuratie die is toegepast op de server (service_config_version=1) die deze informatie bevat. Als u een waarde ophaalt die is gewijzigd nadat het cluster is gemaakt, moet u mogelijk de configuratieversies weergeven en de meest recente versie ophalen.

De retourwaarde is vergelijkbaar met een van de volgende voorbeelden:

  • wasbs://CONTAINER@ACCOUNTNAME.blob.core.windows.net - Deze waarde geeft aan dat het cluster een Azure Storage-account gebruikt voor standaardopslag. De ACCOUNTNAME waarde is de naam van het opslagaccount. Het CONTAINER gedeelte is de naam van de blobcontainer in het opslagaccount. De container is de hoofdmap van de HDFS-compatibele opslag voor het cluster.

  • abfs://CONTAINER@ACCOUNTNAME.dfs.core.windows.net- Deze waarde geeft aan dat het cluster Azure Data Lake Storage Gen2 gebruikt voor standaardopslag. De ACCOUNTNAME waarden en CONTAINER hebben dezelfde betekenis als voor Azure Storage die eerder is vermeld.

  • adl://home- Deze waarde geeft aan dat het cluster Azure Data Lake Storage Gen1 gebruikt voor standaardopslag.

    Gebruik de volgende voorbeelden om de naam van het Data Lake Storage-account te vinden:

    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'
    

    De retourwaarde is vergelijkbaar met ACCOUNTNAME.azuredatalakestore.net, waarbij ACCOUNTNAME de naam van het Data Lake Storage-account is.

    Gebruik de volgende voorbeelden om de map te vinden in Data Lake Storage die de opslag voor het cluster bevat:

    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'
    

    De retourwaarde is vergelijkbaar met /clusters/CLUSTERNAME/. Deze waarde is een pad binnen het Data Lake Storage-account. Dit pad is de hoofdmap van het hdfs-compatibele bestandssysteem voor het cluster.

Notitie

De cmdlet Get-AzHDInsightCluster van Azure PowerShell retourneert ook de opslaggegevens voor het cluster.

Alle configuraties ophalen

Haal de configuraties op die beschikbaar zijn voor uw 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

In dit voorbeeld wordt een JSON-document geretourneerd met de huidige configuratie voor geïnstalleerde onderdelen. Bekijk de tagwaarde . Het volgende voorbeeld is een fragment uit de gegevens die worden geretourneerd door een Spark-clustertype.

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

Configuratie ophalen voor een specifiek onderdeel

Haal de configuratie op voor het onderdeel waarin u geïnteresseerd bent. Vervang in het volgende voorbeeld door INITIAL de tagwaarde die is geretourneerd door de vorige aanvraag.

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

In dit voorbeeld wordt een JSON-document geretourneerd met de huidige configuratie voor het livy2-conf onderdeel.

Configuratie bijwerken

  1. Maak newconfig.json.
    Wijzig en voer de onderstaande opdrachten in:

    • Vervang door livy2-conf het nieuwe onderdeel.

    • Vervang door INITIAL de werkelijke waarde die is opgehaald voor tag uit Alle configuraties ophalen.

      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
      Het PowerShell-script maakt gebruik van jq. Bewerk C:\HD\jq\jq-win64 hieronder om uw werkelijke pad en versie van jq weer te geven.

      $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 wordt gebruikt om de gegevens die zijn opgehaald uit HDInsight om te zetten in een nieuwe configuratiesjabloon. Met deze voorbeelden worden met name de volgende acties uitgevoerd:

    • Hiermee maakt u een unieke waarde met de tekenreeks 'version' en de datum, die is opgeslagen in newtag.

    • Hiermee maakt u een hoofddocument voor de nieuwe configuratie.

    • Hiermee haalt u de inhoud van de .items[] matrix op en voegt u deze toe onder het element desired_config .

    • Hiermee verwijdert u de hrefelementen , versionen Config , omdat deze elementen niet nodig zijn om een nieuwe configuratie te verzenden.

    • Voegt een tag -element toe met de waarde .version################# Het numerieke gedeelte is gebaseerd op de huidige datum. Elke configuratie moet een unieke tag hebben.

      Ten slotte worden de gegevens opgeslagen in het newconfig.json document. De documentstructuur moet er ongeveer uitzien als in het volgende voorbeeld:

      {
        "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. Bewerken newconfig.json.
    Open het newconfig.json document en wijzig/voeg waarden in het properties object toe. In het volgende voorbeeld wordt de waarde van "livy.server.csrf_protection.enabled" van gewijzigd "true" in "false".

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

    Sla het bestand op wanneer u klaar bent met het aanbrengen van wijzigingen.

  3. Verzend newconfig.json.
    Gebruik de volgende opdrachten om de bijgewerkte configuratie naar Ambari te verzenden.

    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
    

    Met deze opdrachten wordt de inhoud van het bestand newconfig.json als de nieuwe configuratie naar het cluster verzonden. De aanvraag retourneert een JSON-document. Het element versionTag in dit document moet overeenkomen met de versie die u hebt verzonden en het configuratieobject bevat de configuratiewijzigingen die u hebt aangevraagd.

Een serviceonderdeel opnieuw starten

Op dit moment geeft de Ambari-webinterface aan dat de Spark-service opnieuw moet worden gestart voordat de nieuwe configuratie van kracht kan worden. Gebruik de volgende stappen om de service opnieuw te starten.

  1. Gebruik het volgende om de onderhoudsmodus voor de Spark2-service in te schakelen:

    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. Onderhoudsmodus controleren

    Met deze opdrachten wordt een JSON-document verzonden naar de server die de onderhoudsmodus inschakelt. U kunt controleren of de service zich nu in de onderhoudsmodus bevindt met behulp van de volgende aanvraag:

    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
    

    De geretourneerde waarde is ON.

  3. Gebruik vervolgens het volgende om de Spark2-service uit te schakelen:

    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
    

    Het antwoord is vergelijkbaar met het volgende voorbeeld:

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

    Belangrijk

    De href waarde die door deze URI wordt geretourneerd, maakt gebruik van het interne IP-adres van het clusterknooppunt. Als u het van buiten het cluster wilt gebruiken, vervangt u het 10.0.0.18:8080 gedeelte door de FQDN van het cluster.

  4. Aanvraag verifiëren.
    Bewerk de onderstaande opdracht door te 29 vervangen door de werkelijke waarde voor id die is geretourneerd uit de vorige stap. Met de volgende opdrachten wordt de status van de aanvraag opgehaald:

    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
    

    Een antwoord van COMPLETED geeft aan dat de aanvraag is voltooid.

  5. Zodra de vorige aanvraag is voltooid, gebruikt u het volgende om de Spark2-service te starten.

    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
    

    De service gebruikt nu de nieuwe configuratie.

  6. Gebruik ten slotte het volgende om de onderhoudsmodus uit te schakelen.

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

Volgende stappen

Zie Apache Ambari API Reference V1 (Apache Ambari API Reference V1) voor een volledig overzicht van de REST API. Zie ook Gebruikers autoriseren voor Apache Ambari-weergaven