Aracılığıyla paylaş


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/CLUSTERNAMECLUSTERNAME ü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 admingibi username@domain.onmicrosoft.comtam 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 ve CONTAINER 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 benzerACCOUNTNAME.azuredatalakestore.netACCOUNTNAME.

    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

  1. 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 newtagdepolanan 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.

    • hrefBu öğeler yeni bir yapılandırma göndermek için gerekli olmadığından , versionve Config öğelerini siler.

    • tag değerine version#################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",
                ....
            },
          },
        }
      }
      
  2. öğesini düzenleyin newconfig.json.
    Belgeyi newconfig.json açın ve nesnedeki properties 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.

  3. 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.

  1. 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"}}}'
    
  2. 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.

  3. 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ümenin 10.0.0.18:8080 FQDN'siyle değiştirin.

  4. İsteği doğrulayın.
    değerini önceki adımda döndürülen gerçek değerle id değiştirerek 29 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.

  5. Ö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.

  6. 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