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 in 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 werken ook. De voorbeelden, met enkele kleine wijzigingen, kunnen werken op een Windows-opdrachtprompt. Of u kunt Windows PowerShell gebruiken.
jq, een opdrachtregel-JSON-processor. Zie https://stedolan.github.io/jq/.
Windows (PowerShell). U kunt ook Bash gebruiken.
Basis-uniform 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
, waar CLUSTERNAME
is de naam van uw cluster. 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
Verbinding maken naar 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
Instellen (referenties behouden)
Bewaar 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 script door uw werkelijke wachtwoord te PASSWORD
vervangen. Voer vervolgens de opdracht in.
export password='PASSWORD'
B. Powershell
$creds = Get-Credential -UserName "admin" -Message "Enter the HDInsight login"
Correct opgemaakte clusternaam identificeren
De werkelijke hoofdletters van de clusternaam kunnen afwijken van wat u verwacht. In de volgende stappen ziet u de werkelijke behuizing en slaat u deze vervolgens op in een variabele voor alle latere voorbeelden.
Bewerk de scripts die u wilt vervangen door CLUSTERNAME
de clusternaam. 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 informatie uit de health_report
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-naam van clusterknooppunten ophalen
Mogelijk moet u de FQDN (Fully Qualified Domain Name) van een clusterknooppunt kennen. U kunt de FQDN voor de verschillende knooppunten in het cluster eenvoudig 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 het virtuele Azure-netwerk dat het HDInsight-cluster bevat.
Zie Een virtueel netwerk voor HDInsight 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 wordt Ambari opgevraagd voor 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 gebruiken als de standaardopslag. U kunt Ambari gebruiken om deze informatie op te halen nadat het cluster is gemaakt. Als u bijvoorbeeld gegevens wilt lezen/schrijven naar de container buiten HDInsight.
De volgende voorbeelden halen de standaardopslagconfiguratie op 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 na het maken van het cluster, moet u mogelijk de configuratieversies weergeven en de meest recente 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 hebbenCONTAINER
dezelfde betekenis als voor Azure Storage die eerder zijn 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
deACCOUNTNAME
naam van het Data Lake Storage-account.Gebruik de volgende voorbeelden om de map in Data Lake Storage te vinden 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 Get-AzHDInsightCluster-cmdlet 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. Zie de tagwaarde . Het volgende voorbeeld is een fragment van 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
newconfig.json
maken.
Wijzig en voer de opdrachten als volgt in:Vervang
livy2-conf
door het nieuwe onderdeel.Vervang door
INITIAL
de werkelijke waarde die is opgehaald uittag
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 uit HDInsight worden opgehaald, om te zetten in een nieuwe configuratiesjabloon. In deze voorbeelden worden de volgende acties uitgevoerd:
Hiermee maakt u een unieke waarde die de tekenreeks 'versie' en de datum bevat, die is opgeslagen in
newtag
.Hiermee maakt u een hoofddocument voor de nieuwe configuratie.
Haalt de inhoud van de
.items[]
matrix op en voegt deze toe onder het desired_config element.Hiermee verwijdert u de
href
,version
enConfig
elementen, omdat deze elementen niet nodig zijn om een nieuwe configuratie in te dienen.Voegt een
tag
element toe met een waarde vanversion#################
. 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 toe in hetproperties
object. In het volgende voorbeeld wordt de waarde gewijzigd"true"
van"livy.server.csrf_protection.enabled"
in"false"
."livy.server.csrf_protection.enabled": "false",
Sla het bestand op zodra u klaar bent met het aanbrengen van wijzigingen.
Verzenden
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 newconfig.json-bestand 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 ingediend 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 opgestart voordat de nieuwe configuratie van kracht kan worden. Gebruik de volgende stappen om de service opnieuw op 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 naar de server verzonden 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 retourwaarde 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, gebruikt 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.Controleer de aanvraag.
Bewerk de onderstaande opdracht door de werkelijke waarde te vervangen29
dieid
moet worden 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 maakt nu gebruik van 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 voor een volledig overzicht van de REST API. Zie ook: Gebruikers autoriseren voor Apache Ambari-weergaven