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
Een Hadoop-cluster in HDInsight. Zie Aan de slag met HDInsight in Linux.
Bash op Ubuntu op Windows 10. In de voorbeelden in dit artikel wordt gebruikgemaakt van de Bash-shell in Windows 10. Zie Installatiehandleiding voor Windows 10 voor Windows-subsysteem voor Linux voor installatiestappen. Andere UNIX-shells kunnen ook worden gebruikt. De voorbeelden kunnen, met enkele kleine wijzigingen, werken op een Windows-opdrachtprompt. U kunt ook Windows PowerShell gebruiken.
jq, een opdrachtregel-JSON-processor. Zie https://stedolan.github.io/jq/.
Windows PowerShell. U kunt ook Bash gebruiken.
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 admin
een 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. DeACCOUNTNAME
waarde is de naam van het opslagaccount. HetCONTAINER
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. DeACCOUNTNAME
waarden enCONTAINER
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
, waarbijACCOUNTNAME
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
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 voortag
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. BewerkC:\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
href
elementen ,version
enConfig
, 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", .... }, }, } }
Bewerken
newconfig.json
.
Open hetnewconfig.json
document en wijzig/voeg waarden in hetproperties
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.
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.
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"}}}'
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
.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 het10.0.0.18:8080
gedeelte door de FQDN van het cluster.Aanvraag verifiëren.
Bewerk de onderstaande opdracht door te29
vervangen door de werkelijke waarde voorid
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.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.
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