Mengelola klaster HDInsight dengan menggunakan Apache Ambari REST API
Pelajari cara menggunakan Apache Ambari REST API untuk mengelola dan memantau klaster Apache Hadoop di Azure HDInsight.
Apa yang dimaksud dengan Apache Ambari
Apache Ambari menyederhanakan manajemen dan pemantauan klaster Hadoop dengan menyediakan UI web yang mudah digunakan yang didukung oleh REST API-nya. Ambari disediakan secara default dengan klaster HDInsight berbasis Linux.
Prasyarat
Klaster Hadoop pada HDInsight. Lihat Mulai menggunakan Microsoft Azure HDInsight di Linux.
Bash pada Ubuntu pada Windows 10. Contoh dalam artikel ini menggunakan shell Bash pada Windows 10. Lihat Panduan Penginstalan Subsistem Windows untuk Linux untuk Windows 10 sebagai langkah-langkah penginstalan. Shell Unix lainnya juga berfungsi. Contohnya, dengan beberapa modifikasi kecil, dapat berfungsi pada prompt Windows Command. Atau Anda bisa menggunakan Windows PowerShell.
jq, prosesor JSON baris perintah. Lihat https://stedolan.github.io/jq/.
Windows PowerShell. Atau Anda bisa menggunakan Bash.
Pengidentifikasi Sumber Daya Seragam Dasar untuk Ambari Rest API
Dasar Pengidentifikasi Sumber Daya Seragam (URI) untuk Ambari REST API pada HDInsight adalah https://CLUSTERNAME.azurehdinsight.net/api/v1/clusters/CLUSTERNAME
, di mana CLUSTERNAME
adalah nama klaster Anda. Nama klaster dalam URI bersifat peka huruf besar/kecil. Meski nama klaster dalam bagian nama domain yang sepenuhnya memenuhi syarat (FQDN) dari URI (CLUSTERNAME.azurehdinsight.net
) tidak peka huruf besar/kecil, kejadian lain dalam URI peka huruf besar/kecil.
Autentikasi
Untuk terhubung ke Ambari pada HDInsight memerlukan HTTPS. Gunakan nama akun admin (defaultnya adalah admin) dan sandi yang Anda berikan selama pembuatan klaster.
Untuk klaster Paket Keamanan Perusahaan, daripada admin
, gunakan nama pengguna yang sepenuhnya memenuhi syarat seperti username@domain.onmicrosoft.com
.
Contoh
Penyiapan (Mempertahankan kredensial)
Pertahankan kredensial Anda untuk menghindari memasukkannya kembali untuk setiap contoh. Nama kluster dipertahankan dalam langkah terpisah.
J. Bash
Edit skrip dengan mengganti PASSWORD
dengan kata sandi Anda yang sebenarnya. Kemudian masukkan perintah.
export password='PASSWORD'
B. PowerShell
$creds = Get-Credential -UserName "admin" -Message "Enter the HDInsight login"
Identifikasi nama klaster dengan penggunaan huruf besar/kecil yang benar
Penggunaan huruf besar/kecil sebenarnya dari nama klaster mungkin berbeda dari yang Anda harapkan. Langkah-langkah berikut menunjukkan casing aktual, lalu menyimpannya dalam variabel untuk semua contoh selanjutnya.
Edit skrip untuk diganti CLUSTERNAME
dengan nama kluster Anda. Kemudian masukkan perintah. (Nama klaster untuk FQDN tidak peka huruf besar/kecil.)
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
Pemilahan data JSON
Contoh berikut menggunakan jq atauConvertFrom-Json untuk memilah dokumen respons JSON dan hanya menampilkan informasi health_report
dari hasil.
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
Mendapatkan FQDN dari node klaster
Anda mungkin perlu mengetahui nama domain yang sepenuhnya memenuhi syarat (FQDN) dari node klaster. Anda dapat dengan mudah mengambil FQDN untuk berbagai node dalam klaster menggunakan contoh berikut:
Semua node
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
Node kepala
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
Node pekerja
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
Node Zookeeper
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
Mendapatkan alamat IP internal node klaster
Alamat IP yang ditampilkan oleh contoh di bagian ini tidak dapat diakses secara langsung melalui internet. Mereka hanya dapat diakses dalam Azure Virtual Network yang berisi klaster HDInsight.
Untuk informasi selengkapnya tentang cara menggunakan HDInsight dan jaringan virtual, lihat Merencanakan jaringan virtual untuk HDInsight.
Untuk menemukan alamat IP, Anda harus mengetahui nama domain internal yang sepenuhnya memenuhi syarat (FQDN) dari node klaster. Setelah Anda memiliki FQDN, Anda kemudian bisa mendapatkan alamat IP hos. Contoh berikut ini terlebih dahulu mengkueri Ambari untuk FQDN dari semua node hos. Kemudian mengkueri Ambari untuk alamat IP masing-masing hos.
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"
}
Mendapatkan penyimpanan default
Klaster HDInsight harus menggunakan Akun Azure Storage atau Data Lake Storage sebagai penyimpanan default. Anda dapat menggunakan Ambari untuk mengambil informasi ini setelah klaster dibuat. Contohnya, jika Anda ingin membaca/menulis data ke kontainer di luar HDInsight.
Contoh berikut mengambil konfigurasi penyimpanan default dari klaster:
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'
Penting
Contoh-contoh ini menampilkan konfigurasi pertama yang diterapkan ke server (service_config_version=1
) yang berisi informasi ini. Jika Anda mengambil nilai yang telah dimodifikasi setelah pembuatan klaster, Anda mungkin perlu mencantumkan versi konfigurasi dan mengambil yang terbaru.
Nilai yang ditampilkan mirip dengan salah satu contoh berikut:
wasbs://CONTAINER@ACCOUNTNAME.blob.core.windows.net
- Nilai ini menunjukkan bahwa klaster menggunakan akun Azure Storage untuk penyimpanan default. NilaiACCOUNTNAME
adalah nama akun penyimpanan. BagianCONTAINER
adalah nama kontainer blob di akun penyimpanan. Kontainer adalah akar penyimpanan yang kompatibel dengan HDFS untuk klaster.abfs://CONTAINER@ACCOUNTNAME.dfs.core.windows.net
- Nilai ini menunjukkan bahwa klaster menggunakan Azure Data Lake Storage Gen2 untuk penyimpanan default. NilaiACCOUNTNAME
danCONTAINER
memiliki arti yang sama seperti untuk Azure Storage yang disebutkan sebelumnya.adl://home
- Nilai ini menunjukkan bahwa klaster menggunakan Azure Data Lake Storage Gen1 untuk penyimpanan default.Untuk menemukan nama akun Data Lake Storage, gunakan contoh berikut:
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'
Nilai yang ditampilkan mirip dengan
ACCOUNTNAME.azuredatalakestore.net
, di manaACCOUNTNAME
adalah nama akun Data Lake Storage.Untuk menemukan direktori dalam Data Lake Storage yang berisi penyimpanan untuk klaster, gunakan contoh berikut:
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'
Nilai yang ditampilkan mirip dengan
/clusters/CLUSTERNAME/
. Nilai ini adalah jalur dalam akun Data Lake Storage. Jalur ini adalah akar dari sistem file yang kompatibel dengan HDFS untuk klaster.
Catatan
Cmdlet Get-AzHDInsightCluster yang disediakan oleh Azure PowerShell juga menampilkan informasi penyimpanan untuk klaster tersebut.
Mendapatkan semua konfigurasi
Dapatkan konfigurasi yang tersedia untuk klaster Anda.
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
Contoh ini menampilkan dokumen JSON yang berisi konfigurasi saat ini untuk komponen yang diinstal. Lihat nilai tag. Contoh berikut adalah kutipan dari data yang ditampilkan dari jenis klaster Spark.
"jupyter-site" : {
"tag" : "INITIAL",
"version" : 1
},
"livy2-client-conf" : {
"tag" : "INITIAL",
"version" : 1
},
"livy2-conf" : {
"tag" : "INITIAL",
"version" : 1
},
Mendapatkan konfigurasi untuk komponen tertentu
Dapatkan konfigurasi untuk komponen yang Anda minati. Dalam contoh berikut, ganti INITIAL
dengan nilai tag yang ditampilkan dari permintaan sebelumnya.
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
Contoh ini menampilkan dokumen JSON yang berisi konfigurasi saat ini untuk komponen livy2-conf
.
Perbarui konfigurasi
Buat
newconfig.json
.
Ubah, lalu masukkan perintah sebagai berikut:Ganti
livy2-conf
dengan komponen baru.Ganti
INITIAL
dengan nilai sebenarnya yang diambil untuktag
dari Mendapatkan semua konfigurasi.J. 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
Skrip PowerShell menggunakan jq. EditC:\HD\jq\jq-win64
di bawah ini untuk mencerminkan jalur dan versi jq Anda yang sebenarnya.$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 digunakan untuk mengubah data yang diambil dari HDInsight menjadi templat konfigurasi baru. Secara khusus, contoh-contoh ini melakukan tindakan berikut:
Membuat nilai unik yang berisi untai "versi" dan tanggal, yang disimpan di
newtag
.Membuat dokumen akar untuk konfigurasi baru.
Mendapatkan konten larik
.items[]
dan menambahkannya di bawah elemen desired_config.Menghapus elemen
href
,version
, danConfig
, karena elemen-elemen ini tidak diperlukan untuk mengirimkan konfigurasi baru.Menambahkan elemen
tag
dengan nilaiversion#################
. Bagian numerik didasarkan pada tanggal saat ini. Setiap konfigurasi harus memiliki tag yang unik.Terakhir, data disimpan ke dokumen
newconfig.json
. Struktur dokumen akan tampak mirip dengan contoh berikut:{ "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", .... }, }, } }
Edit
newconfig.json
.
Buka dokumennewconfig.json
dan ubah/tambahkan nilai dalam objekproperties
. Contoh berikut mengubah nilai"livy.server.csrf_protection.enabled"
dari"true"
ke"false"
."livy.server.csrf_protection.enabled": "false",
Simpan file setelah Anda selesai melakukan modifikasi.
Kirim
newconfig.json
.
Gunakan perintah berikut untuk mengirimkan konfigurasi yang diperbarui ke 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
Perintah ini mengirimkan isi file newconfig.json ke klaster sebagai konfigurasi baru. Permintaan menampilkan dokumen JSON. Elemen versionTag dalam dokumen ini harus sesuai dengan versi yang Anda kirimkan, dan objek konfigurasi berisi perubahan konfigurasi yang Anda minta.
Memulai ulang komponen layanan
Pada titik ini, UI web Ambari menunjukkan layanan Spark perlu dimulai ulang sebelum konfigurasi baru dapat diterapkan. Gunakan langkah-langkah berikut untuk memulai ulang layanan.
Gunakan yang berikut ini untuk mengaktifkan mode pemeliharaan untuk layanan Spark2:
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"}}}'
Memverifikasi mode pemeliharaan
Perintah ini mengirim dokumen JSON ke server yang mengaktifkan mode pemeliharaan. Anda dapat memverifikasi apakah layanan sekarang dalam mode pemeliharaan menggunakan permintaan berikut:
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
Nilai yang ditampilkan adalah
ON
.Selanjutnya, gunakan yang berikut ini untuk mematikan layanan 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
Responsnya serupa dengan contoh berikut:
{ "href" : "http://10.0.0.18:8080/api/v1/clusters/CLUSTERNAME/requests/29", "Requests" : { "id" : 29, "status" : "Accepted" } }
Penting
Nilai
href
yang ditampilkan oleh URI ini menggunakan alamat IP internal node klaster. Untuk menggunakannya dari luar klaster, ganti bagian10.0.0.18:8080
dengan FQDN klaster.Pastikan permintaan.
Edit perintah di bawah ini dengan mengganti29
dengan nilai sebenarnya untukid
yang ditampilkan dari langkah sebelumnya. Perintah berikut mengambil status permintaan: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
Respons
COMPLETED
menunjukkan bahwa permintaan telah selesai.Setelah permintaan sebelumnya selesai, gunakan yang berikut ini untuk memulai layanan 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
Layanan ini sekarang menggunakan konfigurasi baru.
Terakhir, gunakan yang berikut ini untuk mematikan mode pemeliharaan.
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"}}}'
Langkah berikutnya
Untuk referensi lengkap tentang REST API, lihat Apache Ambari API Reference V1. Lihat juga Otorisasi pengguna untuk Apache Ambari Views