Apache Ambari REST API'sini kullanarak HDInsight kümelerini yönetme
Azure HDInsight'ta Apache Hadoop kümelerini yönetmek ve izlemek için Apache Ambari REST API'sini kullanmayı öğrenin.
Apache Ambari nedir?
Apache Ambari, REST API'leri tarafından desteklenen kullanımı kolay bir web kullanıcı arabirimi sağlayarak Hadoop kümelerinin yönetimini ve izlenmesini basitleştirir. Ambari varsayılan olarak Linux tabanlı HDInsight kümeleri ile sağlanır.
Önkoşullar
HDInsight üzerinde hadoop kümesi. Bkz . Linux'ta HDInsight'ı kullanmaya başlama.
Windows 10'da Ubuntu'da Bash. Bu makaledeki örneklerde Windows 10'da Bash kabuğu kullanılır. Yükleme adımları için bkz. Linux için Windows Alt Sistemi Windows 10 Yükleme Kılavuzu. Diğer Unix kabukları da çalışır. Bazı küçük değişikliklerle örnekler bir Windows Komut isteminde çalışabilir. İsterseniz Windows PowerShell'i de kullanabilirsiniz.
jq, bir komut satırı JSON işlemcisi. Bkz. https://stedolan.github.io/jq/.
Windows PowerShell. İsterseniz Bash'i de kullanabilirsiniz.
Ambari REST API için Temel Tekdüzen Kaynak Tanımlayıcısı
HDInsight https://CLUSTERNAME.azurehdinsight.net/api/v1/clusters/CLUSTERNAME
CLUSTERNAME
üzerinde Ambari REST API'sinin temel Tekdüzen Kaynak Tanımlayıcısı (URI), burada kümenizin adıdır. URI'lerdeki küme adları büyük/küçük harfe duyarlıdır. URI'ninCLUSTERNAME.azurehdinsight.net
() tam etki alanı adı (FQDN) bölümündeki küme adı büyük/küçük harfe duyarlı olmasa da, URI'deki diğer oluşumlar büyük/küçük harfe duyarlıdır.
Kimlik Doğrulaması
HDInsight üzerinde Ambari'ye Bağlan https gerektirir. Küme oluşturma sırasında sağladığınız yönetici hesabı adını (varsayılan yöneticidir) ve parolayı kullanın.
Kurumsal Güvenlik Paketi kümeleri için yerine admin
gibi username@domain.onmicrosoft.com
tam kullanıcı adı kullanın.
Örnekler
Kurulum (Kimlik bilgilerini koru)
Her örnekte yeniden girmemek için kimlik bilgilerinizi koruyun. Küme adı ayrı bir adımda korunur.
A. Bash
yerine gerçek parolanızı yazarak PASSWORD
betiği düzenleyin. Ardından komutunu girin.
export password='PASSWORD'
B. PowerShell
$creds = Get-Credential -UserName "admin" -Message "Enter the HDInsight login"
Doğru büyük/küçük harfe ayrılmış küme adını belirleme
Küme adının gerçek büyük/küçük harf sayısı beklediğinizden farklı olabilir. Aşağıdaki adımlarda gerçek büyük/küçük harf gösterilir ve ardından sonraki tüm örnekler için bir değişkende depolanır.
Betikleri kümenizin adıyla değiştirecek CLUSTERNAME
şekilde düzenleyin. Ardından komutunu girin. (FQDN için küme adı büyük/küçük harfe duyarlı değildir.)
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 verilerini ayrıştırma
Aşağıdaki örnek JSON yanıt belgesini ayrıştırmak ve yalnızca health_report
sonuçlardaki bilgileri görüntülemek için jq veya ConvertFrom-Json kullanır.
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
Küme düğümlerinin FQDN'sini alma
Bir küme düğümünün tam etki alanı adını (FQDN) bilmeniz gerekebilir. Aşağıdaki örnekleri kullanarak kümedeki çeşitli düğümler için FQDN'yi kolayca alabilirsiniz:
Tüm düğümler
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
Baş düğümler
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
Çalışan düğümleri
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 düğümleri
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
Küme düğümlerinin iç IP adresini alma
Bu bölümdeki örnekler tarafından döndürülen IP adreslerine İnternet üzerinden doğrudan erişilemez. Bunlara yalnızca HDInsight kümesini içeren Azure Sanal Ağ erişilebilir.
HDInsight ve sanal ağlarla çalışma hakkında daha fazla bilgi için bkz . HDInsight için sanal ağ planlama.
IP adresini bulmak için küme düğümlerinin iç tam etki alanı adını (FQDN) bilmeniz gerekir. FQDN'yi aldıktan sonra konağın IP adresini alabilirsiniz. Aşağıdaki örnekler ilk olarak tüm konak düğümlerinin FQDN'sini sorgular. Ardından ambari'yi her konağın IP adresi için sorgular.
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"
}
Varsayılan depolama alanını alma
HDInsight kümeleri varsayılan depolama alanı olarak bir Azure Depolama Hesabı veya Data Lake Depolama kullanmalıdır. Küme oluşturulduktan sonra bu bilgileri almak için Ambari'yi kullanabilirsiniz. Örneğin, HDInsight dışındaki kapsayıcıya veri okumak/yazmak istiyorsanız.
Aşağıdaki örnekler kümeden varsayılan depolama yapılandırmasını alır:
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'
Önemli
Bu örnekler, bu bilgileri içeren sunucuya (service_config_version=1
) uygulanan ilk yapılandırmayı döndürür. Küme oluşturulduktan sonra değiştirilmiş bir değer alırsanız yapılandırma sürümlerini listelemeniz ve en son sürümü almanız gerekebilir.
Dönüş değeri aşağıdaki örneklerden birine benzer:
wasbs://CONTAINER@ACCOUNTNAME.blob.core.windows.net
- Bu değer, kümenin varsayılan depolama için bir Azure Depolama hesabı kullandığını gösterir.ACCOUNTNAME
Değer, depolama hesabının adıdır. BölümüCONTAINER
, depolama hesabındaki blob kapsayıcısının adıdır. Kapsayıcı, küme için HDFS uyumlu depolama alanının köküdür.abfs://CONTAINER@ACCOUNTNAME.dfs.core.windows.net
- Bu değer, kümenin varsayılan depolama için Azure Data Lake Storage 2. Nesil kullandığını gösterir.ACCOUNTNAME
veCONTAINER
değerleri, daha önce bahsedilen Azure Depolama ile aynı anlamlara sahiptir.adl://home
- Bu değer, kümenin varsayılan depolama için Azure Data Lake Storage 1. Nesil kullandığını gösterir.Data Lake Depolama hesap adını bulmak için aşağıdaki örnekleri kullanın:
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'
Dönüş değeri, Data Lake Depolama hesabının adı olan öğesine benzer
ACCOUNTNAME.azuredatalakestore.net
ACCOUNTNAME
.Data Lake Depolama içinde kümenin depolama alanını içeren dizini bulmak için aşağıdaki örnekleri kullanın:
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'
Dönüş değeri ile
/clusters/CLUSTERNAME/
benzerdir. Bu değer Data Lake Depolama hesabı içindeki bir yoldur. Bu yol, küme için HDFS uyumlu dosya sisteminin köküdür.
Not
Azure PowerShell tarafından sağlanan Get-AzHDInsightCluster cmdlet'i de kümenin depolama bilgilerini döndürür.
Tüm yapılandırmaları alma
Kümeniz için kullanılabilen yapılandırmaları alın.
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
Bu örnek, yüklü bileşenler için geçerli yapılandırmayı içeren bir JSON belgesi döndürür. Etiket değerine bakın. Aşağıdaki örnek, Spark küme türünden döndürülen verilerden bir alıntıdır.
"jupyter-site" : {
"tag" : "INITIAL",
"version" : 1
},
"livy2-client-conf" : {
"tag" : "INITIAL",
"version" : 1
},
"livy2-conf" : {
"tag" : "INITIAL",
"version" : 1
},
Belirli bir bileşen için yapılandırma alma
İlgilendiğiniz bileşenin yapılandırmasını alın. Aşağıdaki örnekte değerini önceki istekten döndürülen etiket değeriyle değiştirin INITIAL
.
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
Bu örnek, bileşen için livy2-conf
geçerli yapılandırmayı içeren bir JSON belgesi döndürür.
Yapılandırmayı güncelleştirme
newconfig.json
oluşturun.
Değiştir'i seçin ve komutları aşağıdaki gibi girin:değerini yeni bileşenle değiştirin
livy2-conf
.değerini, Tüm yapılandırmaları al bölümünden alınan
tag
gerçek değerle değiştirinINITIAL
.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
PowerShell betiği jq kullanır. Gerçek yolunuzu ve jq sürümünü yansıtacak şekilde aşağıda düzenleyinC:\HD\jq\jq-win64
.$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, HDInsight'tan alınan verileri yeni bir yapılandırma şablonuna dönüştürmek için kullanılır. Özellikle, bu örnekler aşağıdaki eylemleri gerçekleştirir:
"version" dizesini ve içinde
newtag
depolanan tarihi içeren benzersiz bir değer oluşturur.Yeni yapılandırma için bir kök belge oluşturur.
Dizinin içeriğini
.items[]
alır ve desired_config öğesinin altına ekler.href
Bu öğeler yeni bir yapılandırma göndermek için gerekli olmadığından ,version
veConfig
öğelerini siler.tag
değerineversion#################
sahip bir öğe ekler. Sayısal bölüm geçerli tarihi temel alır. Her yapılandırmanın benzersiz bir etiketi olmalıdır.Son olarak, veriler belgeye kaydedilir
newconfig.json
. Belge yapısı aşağıdaki örneğe benzer görünmelidir:{ "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", .... }, }, } }
öğesini düzenleyin
newconfig.json
.
Belgeyinewconfig.json
açın ve nesnedekiproperties
değerleri değiştirin/ekleyin. Aşağıdaki örnek değerini olarak"true"
"false"
değiştirir"livy.server.csrf_protection.enabled"
."livy.server.csrf_protection.enabled": "false",
Değişiklik yapmayı bitirdikten sonra dosyayı kaydedin.
gönderin
newconfig.json
.
Güncelleştirilmiş yapılandırmayı Ambari'ye göndermek için aşağıdaki komutları kullanın.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
Bu komutlar, newconfig.json dosyasının içeriğini yeni yapılandırma olarak kümeye gönderir. İstek bir JSON belgesi döndürür. Bu belgedeki versionTag öğesi gönderdiğiniz sürümle eşleşmelidir ve configs nesnesi istediğiniz yapılandırma değişikliklerini içerir.
Hizmet bileşenini yeniden başlatma
Bu noktada Ambari web kullanıcı arabirimi, yeni yapılandırmanın etkili olması için Spark hizmetinin yeniden başlatılması gerektiğini belirtir. Hizmeti yeniden başlatmak için aşağıdaki adımları kullanın.
Spark2 hizmeti için bakım modunu etkinleştirmek için aşağıdakileri kullanın:
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"}}}'
Bakım modunu doğrulama
Bu komutlar, bakım modunu açan sunucuya bir JSON belgesi gönderir. Aşağıdaki isteği kullanarak hizmetin bakım modunda olduğunu doğrulayabilirsiniz:
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
Dönüş değeri şeklindedir
ON
.Ardından, Spark2 hizmetini kapatmak için aşağıdakileri kullanın:
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
Yanıt aşağıdaki örneğe benzer:
{ "href" : "http://10.0.0.18:8080/api/v1/clusters/CLUSTERNAME/requests/29", "Requests" : { "id" : 29, "status" : "Accepted" } }
Önemli
href
Bu URI tarafından döndürülen değer, küme düğümünün iç IP adresini kullanıyor. Küme dışından kullanmak için bölümünü kümenin10.0.0.18:8080
FQDN'siyle değiştirin.İsteği doğrulayın.
değerini önceki adımda döndürülen gerçek değerleid
değiştirerek29
aşağıdaki komutu düzenleyin. Aşağıdaki komutlar isteğin durumunu alır: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
yanıtı
COMPLETED
, isteğin tamamlandığını gösterir.Önceki istek tamamlandıktan sonra Spark2 hizmetini başlatmak için aşağıdakileri kullanın.
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
Hizmet şimdi yeni yapılandırmayı kullanıyor.
Son olarak, bakım modunu kapatmak için aşağıdakileri kullanın.
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"}}}'
Sonraki adımlar
REST API'nin tam başvurusu için bkz . Apache Ambari API Başvurusu V1. Ayrıca bkz. Apache Ambari Görünümleri için kullanıcıları yetkilendirme