Zarządzanie klastrami usługi HDInsight przy użyciu interfejsu API REST apache Ambari
Dowiedz się, jak używać interfejsu API REST apache Ambari do zarządzania klastrami Apache Hadoop i monitorowania ich w usłudze Azure HDInsight.
Co to jest apache Ambari
System Apache Ambari upraszcza zarządzanie klastrami Hadoop i monitorowanie ich, zapewniając łatwy w użyciu internetowy interfejs użytkownika wspierany przez jego interfejsy API REST. System Ambari jest domyślnie dostarczany z klastrami usługi HDInsight opartymi na systemie Linux.
Wymagania wstępne
Klaster Hadoop w usłudze HDInsight. Zobacz Wprowadzenie do usługi HDInsight w systemie Linux.
Powłoka Bash w systemie Ubuntu w systemie Windows 10. Przykłady w tym artykule korzystają z powłoki Bash w Windows 10. Aby uzyskać instrukcje instalacji, zobacz przewodnik instalacji Podsystem Windows dla systemu Linux, aby uzyskać Windows 10. Inne powłoki systemu Unix również będą działać. Przykłady z niewielkimi modyfikacjami mogą działać w wierszu polecenia systemu Windows. Możesz też użyć Windows PowerShell.
jq, procesor JSON wiersza polecenia. Zobacz: .
Windows PowerShell. Możesz też użyć powłoki Bash.
Podstawowy jednolity identyfikator zasobu dla interfejsu API REST systemu Ambari
Podstawowy identyfikator URI (Uniform Resource Identifier) dla interfejsu API REST systemu Ambari w usłudze HDInsight to https://CLUSTERNAME.azurehdinsight.net/api/v1/clusters/CLUSTERNAME
, gdzie CLUSTERNAME
to nazwa klastra. W nazwach klastrów w identyfikatorach URI jest rozróżniana wielkość liter. Nazwa klastra w w pełni kwalifikowanej części nazwy domeny (FQDN) identyfikatora URI (CLUSTERNAME.azurehdinsight.net
) nie uwzględnia wielkości liter, ale w innych wystąpieniach w identyfikatorze URI jest uwzględniana wielkość liter.
Authentication
Nawiązywanie połączenia z usługą Ambari w usłudze HDInsight wymaga protokołu HTTPS. Użyj nazwy konta administratora (wartość domyślna to administrator) i hasła podanego podczas tworzenia klastra.
W przypadku klastrów pakietu Enterprise Security zamiast admin
użyj w pełni kwalifikowanej nazwy użytkownika, takiej jak username@domain.onmicrosoft.com
.
Przykłady
Konfiguracja (zachowywanie poświadczeń)
Zachowaj poświadczenia, aby uniknąć ponownego wprowadzania ich dla każdego przykładu. Nazwa klastra zostanie zachowana w osobnym kroku.
A. Bash
Zmodyfikuj poniższy skrypt, zastępując PASSWORD
element rzeczywistym hasłem. Następnie wprowadź polecenie .
export password='PASSWORD'
B. PowerShell
$creds = Get-Credential -UserName "admin" -Message "Enter the HDInsight login"
Identyfikowanie nazwy klastra o prawidłowym przypadku
Rzeczywista wielkość liter nazwy klastra może być inna niż oczekiwano. Kroki opisane w tym miejscu przedstawiają rzeczywistą wielkość liter, a następnie przechowują ją w zmiennej dla wszystkich późniejszych przykładów.
Zmodyfikuj poniższe skrypty, aby zastąpić CLUSTERNAME
ciąg nazwą klastra. Następnie wprowadź polecenie . (Nazwa klastra nazwy FQDN nie uwzględnia wielkości liter).
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
Analizowanie danych JSON
W poniższym przykładzie użyto formatu jq lub ConvertFrom-Json , aby przeanalizować dokument odpowiedzi JSON i wyświetlić tylko health_report
informacje z wyników.
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
Pobieranie nazwy FQDN węzłów klastra
Może być konieczne poznanie w pełni kwalifikowanej nazwy domeny (FQDN) węzła klastra. Nazwę FQDN dla różnych węzłów w klastrze można łatwo pobrać, korzystając z następujących przykładów:
Wszystkie węzły
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
Węzły główne
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
Węzły robocze
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
Węzły dozorców
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
Uzyskiwanie wewnętrznego adresu IP węzłów klastra
Adresy IP zwracane przez przykłady w tej sekcji nie są bezpośrednio dostępne za pośrednictwem Internetu. Są one dostępne tylko w usłudze Azure Virtual Network, która zawiera klaster usługi HDInsight.
Aby uzyskać więcej informacji na temat pracy z usługą HDInsight i sieciami wirtualnymi, zobacz Planowanie sieci wirtualnej dla usługi HDInsight.
Aby znaleźć adres IP, należy znać wewnętrzną w pełni kwalifikowaną nazwę domeny (FQDN) węzłów klastra. Po utworzeniu nazwy FQDN możesz uzyskać adres IP hosta. W poniższych przykładach najpierw odpytuję ambari dla nazwy FQDN wszystkich węzłów hosta. Następnie wysyła zapytanie do systemu Ambari pod kątem adresu IP każdego hosta.
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"
}
Pobieranie magazynu domyślnego
Klastry usługi HDInsight muszą używać konta usługi Azure Storage lub Data Lake Storage jako magazynu domyślnego. Możesz użyć narzędzia Ambari, aby pobrać te informacje po utworzeniu klastra. Jeśli na przykład chcesz odczytywać/zapisywać dane w kontenerze poza usługą HDInsight.
W poniższych przykładach pobrano domyślną konfigurację magazynu z klastra:
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'
Ważne
Te przykłady zwracają pierwszą konfigurację zastosowaną do serwera (service_config_version=1
), który zawiera te informacje. W przypadku pobrania wartości zmodyfikowanej po utworzeniu klastra może być konieczne wyświetlenie listy wersji konfiguracji i pobranie najnowszej.
Wartość zwracana jest podobna do jednej z następujących przykładów:
wasbs://CONTAINER@ACCOUNTNAME.blob.core.windows.net
— Ta wartość wskazuje, że klaster używa konta usługi Azure Storage dla magazynu domyślnego. WartośćACCOUNTNAME
jest nazwą konta magazynu. CzęśćCONTAINER
jest nazwą kontenera obiektów blob na koncie magazynu. Kontener jest katalogem głównym magazynu zgodnego z systemem plików HDFS dla klastra.abfs://CONTAINER@ACCOUNTNAME.dfs.core.windows.net
— Ta wartość wskazuje, że klaster używa Azure Data Lake Storage Gen2 dla magazynu domyślnego. WartościACCOUNTNAME
iCONTAINER
mają takie same znaczenie jak w przypadku usługi Azure Storage wymienionej wcześniej.adl://home
— Ta wartość wskazuje, że klaster używa Azure Data Lake Storage Gen1 dla magazynu domyślnego.Aby znaleźć nazwę konta Data Lake Storage, użyj następujących przykładów:
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'
Zwracana wartość jest podobna do
ACCOUNTNAME.azuredatalakestore.net
, gdzieACCOUNTNAME
jest nazwą konta Data Lake Storage.Aby znaleźć katalog w Data Lake Storage, który zawiera magazyn dla klastra, użyj następujących przykładów:
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'
Zwracana wartość jest podobna do
/clusters/CLUSTERNAME/
. Ta wartość jest ścieżką w ramach konta Data Lake Storage. Ta ścieżka jest katalogem głównym systemu plików zgodnego z systemem plików HDFS dla klastra.
Uwaga
Polecenie cmdlet Get-AzHDInsightCluster udostępnione przez Azure PowerShell zwraca również informacje o magazynie dla klastra.
Pobieranie wszystkich konfiguracji
Pobierz konfiguracje dostępne dla klastra.
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
Ten przykład zwraca dokument JSON zawierający bieżącą konfigurację zainstalowanych składników. Zobacz wartość tagu . Poniższy przykład to fragment danych zwracanych z typu klastra Spark.
"jupyter-site" : {
"tag" : "INITIAL",
"version" : 1
},
"livy2-client-conf" : {
"tag" : "INITIAL",
"version" : 1
},
"livy2-conf" : {
"tag" : "INITIAL",
"version" : 1
},
Pobieranie konfiguracji dla określonego składnika
Pobierz konfigurację interesującego Cię składnika. W poniższym przykładzie zastąp INITIAL
ciąg wartością tagu zwróconą z poprzedniego żądania.
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
Ten przykład zwraca dokument JSON zawierający bieżącą konfigurację livy2-conf
składnika.
Aktualizowanie konfiguracji
Utwórz plik
newconfig.json
.
Zmodyfikuj, a następnie wprowadź poniższe polecenia:Zastąp
livy2-conf
element nowym składnikiem.Zastąp
INITIAL
element wartością rzeczywistą pobraną ztag
polecenia Pobierz wszystkie konfiguracje.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
Skrypt programu PowerShell używa języka jq. EdytujC:\HD\jq\jq-win64
poniżej, aby odzwierciedlić rzeczywistą ścieżkę i wersję pliku jq.$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
Narzędzie Jq służy do przekształcania danych pobranych z usługi HDInsight w nowy szablon konfiguracji. W szczególności te przykłady wykonują następujące czynności:
Tworzy unikatową wartość zawierającą ciąg "version" i datę, która jest przechowywana w pliku
newtag
.Tworzy dokument główny dla nowej konfiguracji.
Pobiera zawartość
.items[]
tablicy i dodaje ją pod elementem desired_config .href
Usuwa elementy ,version
iConfig
, ponieważ te elementy nie są potrzebne do przesłania nowej konfiguracji.tag
Dodaje element z wartościąversion#################
. Część liczbowa jest oparta na bieżącej dacie. Każda konfiguracja musi mieć unikatowy tag.Na koniec dane są zapisywane w dokumencie
newconfig.json
. Struktura dokumentu powinna wyglądać podobnie do poniższego przykładu:{ "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", .... }, }, } }
Edytuj
newconfig.json
plik .
Otwórz dokument i zmodyfikujnewconfig.json
properties
/dodaj wartości w obiekcie . Poniższy przykład zmienia wartość z"livy.server.csrf_protection.enabled"
"true"
na"false"
."livy.server.csrf_protection.enabled": "false",
Zapisz plik po zakończeniu wprowadzania modyfikacji.
Prześlij plik
newconfig.json
.
Użyj następujących poleceń, aby przesłać zaktualizowaną konfigurację do systemu Ambari.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
Te polecenia przesyłają zawartość pliku newconfig.json do klastra jako nową konfigurację. Żądanie zwraca dokument JSON. Element versionTag w tym dokumencie powinien być zgodny z przesłaną wersją, a obiekt configs zawiera żądane zmiany konfiguracji.
Ponowne uruchamianie składnika usługi
W tym momencie internetowy interfejs użytkownika systemu Ambari wskazuje, że usługa Spark musi zostać ponownie uruchomiona, zanim nowa konfiguracja zacznie obowiązywać. Aby ponownie uruchomić usługę, wykonaj następujące kroki.
Aby włączyć tryb konserwacji dla usługi Spark2, wykonaj następujące czynności:
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"}}}'
Weryfikowanie trybu konserwacji
Te polecenia wysyłają dokument JSON do serwera, który włącza tryb konserwacji. Możesz sprawdzić, czy usługa jest teraz w trybie konserwacji, korzystając z następującego żądania:
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
Zwracana wartość to
ON
.Następnie użyj następującego polecenia, aby wyłączyć usługę Spark2:
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
Odpowiedź jest podobna do poniższego przykładu:
{ "href" : "http://10.0.0.18:8080/api/v1/clusters/CLUSTERNAME/requests/29", "Requests" : { "id" : 29, "status" : "Accepted" } }
Ważne
Wartość
href
zwrócona przez ten identyfikator URI używa wewnętrznego adresu IP węzła klastra. Aby użyć go spoza klastra, zastąp10.0.0.18:8080
część nazwą FQDN klastra.Zweryfikuj żądanie.
Zmodyfikuj poniższe polecenie, zastępując29
wartość rzeczywistą zwracanąid
z poprzedniego kroku. Następujące polecenia pobierają stan żądania: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
Odpowiedź wskazuje
COMPLETED
, że żądanie zostało zakończone.Po zakończeniu poprzedniego żądania użyj następującego polecenia, aby uruchomić usługę Spark2.
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
Usługa korzysta teraz z nowej konfiguracji.
Na koniec użyj poniższych instrukcji, aby wyłączyć tryb konserwacji.
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"}}}'
Następne kroki
Aby uzyskać pełną dokumentację interfejsu API REST, zobacz Dokumentacja interfejsu API apache Ambari w wersji 1. Zobacz również autoryzowanie użytkowników dla widoków systemu Apache Ambari