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 yedeklenen 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 bir Hadoop kümesi. Bkz. Linux üzerinde HDInsight kullanmaya başlama.
Windows 10 üzerinde Ubuntu'da Bash. Bu makaledeki örneklerde Windows 10 üzerinde Bash kabuğu kullanılır. Yükleme adımları için bkz. Windows 10 Linux için Windows Alt Sistemi Yükleme Kılavuzu. Diğer Unix kabukları da çalışır. Bazı küçük değişikliklerle örnekler bir Windows Komut isteminde çalışabilir. Veya Windows PowerShell 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
üzerindeki 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ğlanmak için HTTPS gerekir. Küme oluşturma sırasında sağladığınız yönetici hesabı adını (varsayılan değer 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
öğesini gerçek parolanızla değiştirerek PASSWORD
aşağıdaki 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. Buradaki adımlarda gerçek büyük/küçük harf gösterilir ve sonraki tüm örnekler için bir değişkende depolanır.
Değerini küme adınızla değiştirmek CLUSTERNAME
için aşağıdaki betikleri 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
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ğ içinden 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 Ambari'ye 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 Storage 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ğeri 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 Storage 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 ile benzerdir
ACCOUNTNAME.azuredatalakestore.net
ve buradaACCOUNTNAME
Data Lake Storage hesabının adıdır.kümenin depolamasını içeren Data Lake Storage dizinini 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 Storage 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
oluşturun
newconfig.json
.
öğesini değiştirin ve aşağıdaki komutları girin:değerini yeni bileşenle değiştirin
livy2-conf
.değerini, Tüm yapılandırmaları al'dan 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. Jq'nun gerçek yolunu ve 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.değerine
version#################
sahip birtag
öğ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ı bitirdiğinizde 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 gösterir. 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 artık 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 artık 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