Referensi kebijakan komputasi
Artikel ini adalah referensi untuk definisi kebijakan komputasi. Artikel ini mencakup referensi atribut kebijakan dan jenis batasan yang tersedia. Ada juga contoh kebijakan yang dapat Anda referensikan untuk kasus penggunaan umum.
Apa itu definisi kebijakan?
Definisi kebijakan adalah aturan kebijakan individual yang dinyatakan dalam JSON. Definisi dapat menambahkan aturan ke salah satu atribut yang dikontrol dengan Clusters API. Misalnya, definisi ini menetapkan waktu penghentian otomatis default, melarang pengguna untuk menggunakan kumpulan, dan menegakkan penggunaan Photon.
{
"autotermination_minutes": {
"type": "unlimited",
"defaultValue": 4320,
"isOptional": true
},
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"runtime_engine": {
"type": "fixed",
"value": "PHOTON",
"hidden": true
}
}
Hanya boleh ada satu batasan per atribut. Jalur atribut mencerminkan nama atribut API. Untuk atribut berlapis, jalur menggabungkan nama atribut berlapis menggunakan titik. Atribut yang tidak ditentukan dalam definisi kebijakan tidak akan dibatasi.
Atribut yang didukung
Kebijakan mendukung semua atribut yang dikontrol dengan Clusters API. Jenis pembatasan yang dapat Anda tempatkan pada atribut dapat bervariasi per pengaturan berdasarkan jenisnya dan kaitannya dengan elemen UI. Anda tidak dapat menggunakan kebijakan untuk menentukan izin komputasi.
Anda juga dapat menggunakan kebijakan untuk mengatur DBA maks per jam dan jenis kluster. Lihat jalur atribut virtual .
Tabel berikut mencantumkan jalur atribut kebijakan yang didukung:
Jalur atribut | Jenis | Deskripsi |
---|---|---|
autoscale.max_workers |
nomor opsional | Saat disembunyikan, menghapus kolom jumlah pekerja maksimum dari UI. |
autoscale.min_workers |
nomor opsional | Ketika disembunyikan, elemen jumlah pekerja minimum dihapus dari UI. |
autotermination_minutes |
angka | Nilai 0 tidak mewakili penghentian otomatis. Saat disembunyikan, menghapus kotak centang penghentian otomatis dan input nilai dari UI. |
azure_attributes.availability |
tali | Mengontrol komputasi menggunakan instans sesuai permintaan atau spot (ON_DEMAND_AZURE atau SPOT_WITH_FALLBACK_AZURE ). |
azure_attributes.first_on_demand |
angka | Mengontrol jumlah simpul yang akan ditempatkan pada instans on-demand. |
azure_attributes.spot_bid_max_price |
angka | Mengatur harga maksimum untuk spot instance Azure. |
cluster_log_conf.path |
tali | URL tujuan dari file log. |
cluster_log_conf.type |
tali | Jenis tujuan log.
DBFS adalah satu-satunya nilai yang dapat diterima. |
cluster_name |
string | Nama kluster. |
custom_tags.* |
string | Kontrol nilai tag tertentu dengan menambahkan nama tag, misalnya: custom_tags.<mytag> . |
data_security_mode |
string | Mengatur mode akses kluster. Katalog Unity memerlukan SINGLE_USER atau USER_ISOLATION (mode akses Standar di UI). Nilai NONE berarti tidak ada fitur keamanan yang diaktifkan. |
docker_image.basic_auth.password |
tali | Kata sandi untuk autentikasi dasar citra Databricks Container Services. |
docker_image.basic_auth.username |
string | Nama pengguna untuk autentikasi dasar citra di Databricks Container Services. |
docker_image.url |
tali | Mengontrol URL gambar layanan kontainer Databricks. Saat disembunyikan, menghapus bagian Layanan Kontainer Databricks dari UI. |
driver_node_type_id |
teks opsional | Ketika disembunyikan, menghapus pilihan jenis node driver dari UI. |
enable_local_disk_encryption |
Boolean | Atur ke true untuk mengaktifkan, atau false untuk menonaktifkan, mengenkripsi disk yang dilampirkan secara lokal ke kluster (seperti yang ditentukan melalui API). |
init_scripts.*.workspace.destination
init_scripts.*.volumes.destination
init_scripts.*.abfss.destination
init_scripts.*.file.destination
|
tali |
* mengacu pada indeks dari skrip inisiasi dalam array atribut. Lihat kebijakan penulisan untuk atribut array. |
instance_pool_id |
tali | Mengontrol pool yang digunakan oleh node pekerja jika driver_instance_pool_id sudah ditentukan, atau untuk semua node klaster jika tidak. Jika Anda menggunakan kumpulan untuk simpul pekerja, Anda juga harus menggunakan kumpulan untuk simpul penggerak. Saat disembunyikan, menghapus pilihan kumpulan dari UI. |
driver_instance_pool_id |
tali | Jika ditentukan, konfigurasikan kumpulan yang berbeda untuk simpul driver daripada untuk simpul pekerja. Jika tidak ditentukan, akan otomatis menggunakan instance_pool_id . Jika Anda menggunakan kumpulan untuk simpul pekerja, Anda juga harus menggunakan kumpulan untuk simpul penggerak. Saat disembunyikan, menghapus pilihan kumpulan driver dari UI. |
node_type_id |
string | Saat disembunyikan, menghapus pilihan jenis node pekerja dari UI. |
num_workers |
nomor opsional | Saat disembunyikan, menghapus spesifikasi nomor pekerja dari UI. |
runtime_engine |
tali | Menentukan apakah kluster menggunakan Photon atau tidak. Nilai yang mungkin PHOTON atau STANDARD . |
single_user_name |
tali | Mengontrol pengguna atau grup mana yang dapat ditetapkan ke sumber daya komputasi. |
spark_conf.* |
teks opsional | Mengontrol nilai konfigurasi tertentu dengan menambahkan nama kunci konfigurasi, misalnya: spark_conf.spark.executor.memory . |
spark_env_vars.* |
teks opsional | Mengontrol nilai variabel lingkungan Spark tertentu dengan menambahkan variabel lingkungan, misalnya: spark_env_vars.<environment variable name> . |
spark_version |
tali | Nama versi gambar Spark seperti yang ditentukan melalui API (Databricks Runtime). Anda juga dapat menggunakan nilai kebijakan khusus yang secara dinamis memilih Databricks Runtime. Lihat nilai kebijakan khusus untuk pemilihan Databricks Runtime. |
workload_type.clients.jobs |
Boolean | Menentukan apakah sumber daya komputasi dapat digunakan untuk pekerjaan. Lihat Pencegahan penggunaan komputasi dalam pekerjaan. |
workload_type.clients.notebooks |
Boolean | Menentukan apakah sumber daya komputasi dapat digunakan dengan notebook. Lihat Pencegahan penggunaan komputasi dalam pekerjaan. |
Jalur atribut virtual
Tabel ini mencakup dua atribut sintetis tambahan yang didukung oleh kebijakan:
Nilai kebijakan khusus untuk pemilihan Databricks Runtime
Atribut spark_version
mendukung nilai khusus yang secara dinamis memetakan ke versi Databricks Runtime berdasarkan kumpulan versi Databricks Runtime yang didukung saat ini.
Nilai berikut dapat digunakan dalam atribut spark_version
:
-
auto:latest
: Memetakan ke versi terbaru GA Databricks Runtime. -
auto:latest-ml
: Memetakan ke versi ML Databricks Runtime terbaru. -
auto:latest-lts
: Memetakan ke versi Runtime Databricks terbaru yang memiliki dukungan jangka panjang (LTS). -
auto:latest-lts-ml
: Memetakan ke versi terbaru ML Databricks Runtime LTS. -
auto:prev-major
: Memetakan ke versi GA Databricks Runtime terbaru kedua. Misalnya, jikaauto:latest
adalah 14,2, makaauto:prev-major
adalah 13,3. -
auto:prev-major-ml
: Memetakan ke versi terbaru kedua dari ML Runtime GA Databricks. Misalnya, jikaauto:latest
adalah 14,2, makaauto:prev-major
adalah 13,3. -
auto:prev-lts
: Memetakan ke versi LTS Databricks Runtime terbaru yang kedua. Misalnya, jikaauto:latest-lts
adalah 13,3, makaauto:prev-lts
adalah 12,2. -
auto:prev-lts-ml
: Memetakan ke versi ML Databricks Runtime LTS terbaru kedua. Misalnya, jikaauto:latest-lts
adalah 13,3, makaauto:prev-lts
adalah 12,2.
Nota
Menggunakan nilai-nilai ini tidak membuat komputasi pembaruan otomatis saat versi runtime baru dirilis. Pengguna harus secara eksplisit mengedit komputasi agar versi Databricks Runtime berubah.
Jenis kebijakan yang didukung
Bagian ini mencakup referensi untuk setiap jenis kebijakan yang tersedia. Ada dua kategori jenis kebijakan: kebijakan tetap dan kebijakan pembatasan.
Kebijakan tetap mencegah konfigurasi pengguna pada atribut. Dua jenis kebijakan tetap adalah:
Membatasi kebijakan membatasi opsi pengguna untuk mengonfigurasi atribut. Membatasi kebijakan juga memungkinkan Anda mengatur nilai default dan membuat atribut opsional. Lihat Bidang kebijakan pembatasan tambahan.
Opsi Anda untuk membatasi kebijakan adalah:
- Kebijakan daftar izinkan
- kebijakan daftar blokir
- Kebijakan Regex
- Kebijakan Rentang
- Kebijakan Tanpa Batas
Kebijakan tetap
Kebijakan tetap membatasi atribut ke nilai yang ditentukan. Untuk nilai atribut selain numerik dan boolean, nilai harus diwakili oleh atau dikonversi ke string.
Dengan kebijakan tetap, Anda juga dapat menyembunyikan atribut dari UI dengan mengatur bidang hidden
ke true
.
interface FixedPolicy {
type: "fixed";
value: string | number | boolean;
hidden?: boolean;
}
Contoh kebijakan ini memperbaiki versi Databricks Runtime dan menyembunyikan bidang dari UI pengguna:
{
"spark_version": { "type": "fixed", "value": "auto:latest-lts", "hidden": true }
}
Kebijakan Terlarang
Kebijakan terlarang mencegah pengguna mengonfigurasi atribut. Kebijakan terlarang hanya kompatibel dengan atribut opsional.
interface ForbiddenPolicy {
type: "forbidden";
}
Kebijakan ini melarang menghubungkan pool ke komputasi untuk node pekerja. Pool juga dilarang pada node driver, karena driver_instance_pool_id
mewarisi kebijakan.
{
"instance_pool_id": { "type": "forbidden" }
}
kebijakan daftar izin
Kebijakan daftar izin menentukan daftar nilai yang dapat dipilih pengguna ketika mengonfigurasi atribut.
interface AllowlistPolicy {
type: "allowlist";
values: (string | number | boolean)[];
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
Contoh daftar izin ini memungkinkan pengguna untuk memilih antara dua versi Databricks Runtime:
{
"spark_version": { "type": "allowlist", "values": ["13.3.x-scala2.12", "12.2.x-scala2.12"] }
}
Kebijakan Daftar Blokir
Kebijakan daftar blokir mencantumkan nilai yang tidak diizinkan. Karena nilai harus sama persis, kebijakan ini mungkin tidak berfungsi seperti yang diharapkan ketika atribut bersifat lenient dalam bagaimana nilai diwakili (misalnya, memungkinkan spasi di depan dan di belakang).
interface BlocklistPolicy {
type: "blocklist";
values: (string | number | boolean)[];
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
Contoh ini memblokir pengguna untuk memilih 7.3.x-scala2.12
sebagai Databricks Runtime.
{
"spark_version": { "type": "blocklist", "values": ["7.3.x-scala2.12"] }
}
Kebijakan Regex
Kebijakan regex membatasi nilai yang tersedia untuk nilai yang cocok dengan regex. Untuk keamanan, pastikan regex Anda ditambatkan ke awal dan akhir dari nilai string.
interface RegexPolicy {
type: "regex";
pattern: string;
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
Contoh ini membatasi versi Databricks Runtime yang dapat dipilih pengguna dari:
{
"spark_version": { "type": "regex", "pattern": "13\\.[3456].*" }
}
Kebijakan Jangkauan
Kebijakan rentang membatasi nilai ke rentang tertentu menggunakan bidang minValue
dan maxValue
. Nilai harus berupa angka desimal.
Batas numerik harus dapat diwakili sebagai nilai titik mengambang ganda. Untuk menunjukkan kurangnya batas tertentu, Anda dapat menghilangkan minValue
atau maxValue
.
interface RangePolicy {
type: "range";
minValue?: number;
maxValue?: number;
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
Contoh ini membatasi jumlah maksimum pekerja hingga 10:
{
"num_workers": { "type": "range", "maxValue": 10 }
}
Kebijakan Tidak Terbatas
Kebijakan tidak terbatas digunakan untuk membuat atribut yang diperlukan atau untuk mengatur nilai default di UI.
interface UnlimitedPolicy {
type: "unlimited";
defaultValue?: string | number | boolean;
isOptional?: boolean;
}
Contoh ini menambahkan tag COST_BUCKET
ke komputasi:
{
"custom_tags.COST_BUCKET": { "type": "unlimited" }
}
Untuk mengatur nilai default untuk variabel konfigurasi Spark, tetapi juga memungkinkan menghilangkan (menghapus) variabel tersebut:
{
"spark_conf.spark.my.conf": { "type": "unlimited", "isOptional": true, "defaultValue": "my_value" }
}
Bidang kebijakan pembatasan tambahan
Untuk membatasi jenis kebijakan, Anda dapat menentukan dua bidang tambahan:
-
defaultValue
- Nilai yang secara otomatis terisi di UI pembuatan komputasi. -
isOptional
- Kebijakan pembatasan pada atribut secara otomatis membuatnya diperlukan. Untuk membuat atribut opsional, atur bidangisOptional
ketrue
.
Nota
Nilai default tidak secara otomatis diterapkan ke komputasi yang dibuat dengan API Kluster . Untuk menerapkan nilai default menggunakan API, tambahkan parameter apply_policy_default_values
ke definisi komputasi dan atur ke true
.
Contoh kebijakan ini menentukan nilai default id1
untuk kumpulan simpul pekerja, tetapi menjadikannya opsional. Saat membuat komputasi, Anda dapat memilih kumpulan yang berbeda atau memilih untuk tidak menggunakannya. Jika driver_instance_pool_id
tidak ditentukan dalam kebijakan atau saat membangun komputasi, kumpulan yang sama digunakan untuk simpul pekerja dan simpul pengendali.
{
"instance_pool_id": { "type": "unlimited", "isOptional": true, "defaultValue": "id1" }
}
Menulis kebijakan untuk atribut array
Anda dapat menentukan kebijakan untuk atribut array dengan dua cara:
- Batasan generik untuk semua elemen array. Batasan ini menggunakan simbol pengganti
*
dalam jalur kebijakan. - Batasan khusus untuk elemen array pada indeks tertentu. Pembatasan ini menggunakan angka pada jalur.
Misalnya, untuk atribut array init_scripts
, jalur generik dimulai dengan init_scripts.*
dan jalur tertentu dengan init_scripts.<n>
, di mana <n>
adalah indeks bilangan bulat dalam array (dimulai dengan 0).
Anda dapat menggabungkan batasan generik dan spesifik, dalam hal ini batasan generik berlaku untuk setiap elemen array yang tidak memiliki batasan tertentu. Dalam setiap kasus, hanya satu batasan kebijakan yang akan berlaku.
Bagian berikut menunjukkan contoh contoh umum yang menggunakan atribut array.
Memerlukan entri yang spesifik untuk inklusi
Anda tidak dapat memerlukan nilai tertentu tanpa menentukan urutan. Misalnya:
{
"init_scripts.0.volumes.destination": {
"type": "fixed",
"value": "<required-script-1>"
},
"init_scripts.1.volumes.destination": {
"type": "fixed",
"value": "<required-script-2>"
}
}
Memerlukan nilai tetap dari seluruh daftar
{
"init_scripts.0.volumes.destination": {
"type": "fixed",
"value": "<required-script-1>"
},
"init_scripts.*.volumes.destination": {
"type": "forbidden"
}
}
Melarang penggunaan sama sekali
{
"init_scripts.*.volumes.destination": {
"type": "forbidden"
}
}
Perbolehkan entri yang mengikuti pembatasan tertentu
{
"init_scripts.*.volumes.destination": {
"type": "regex",
"pattern": ".*<required-content>.*"
}
}
Memperbaiki sekumpulan skrip init tertentu
Dalam kasus jalur init_scripts
, array dapat berisi salah satu dari beberapa struktur dimana berbagai varian yang mungkin perlu ditangani tergantung pada kasus penggunaannya. Misalnya, untuk memerlukan serangkaian skrip init tertentu, dan melarang varian apa pun dari versi lain, Anda dapat menggunakan pola berikut:
{
"init_scripts.0.volumes.destination": {
"type": "fixed",
"value": "<volume-paths>"
},
"init_scripts.1.volumes.destination": {
"type": "fixed",
"value": "<volume-paths>"
},
"init_scripts.*.workspace.destination": {
"type": "forbidden"
},
"init_scripts.*.abfss.destination": {
"type": "forbidden"
},
"init_scripts.*.file.destination": {
"type": "forbidden"
}
}
Contoh kebijakan
Bagian ini mencakup contoh kebijakan yang dapat Anda gunakan sebagai referensi untuk membuat kebijakan Anda sendiri. Anda juga dapat menggunakan keluarga kebijakan yang disediakan Azure Databricks sebagai templat untuk kasus penggunaan kebijakan umum.
- kebijakan komputasi umum
- Mendefinisikan batas komputasi alur DLT
- kebijakan berukuran sedang sederhana
- kebijakan yang hanya berfokus pada pekerjaan
- kebijakan metastore eksternal
- Mencegah penggunaan komputasi untuk tugas
- Menghapus kebijakan penskalaan otomatis
- penerapan tag kustom
Kebijakan komputasi umum
Kebijakan komputasi tujuan umum dimaksudkan untuk memandu pengguna dan membatasi beberapa fungsionalitas, sambil memerlukan tag, membatasi jumlah maksimum instans, dan memberlakukan batas waktu.
{
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"spark_version": {
"type": "regex",
"pattern": "12\\.[0-9]+\\.x-scala.*"
},
"node_type_id": {
"type": "allowlist",
"values": ["Standard_L4s", "Standard_L8s", "Standard_L16s"],
"defaultValue": "Standard_L16s_v2"
},
"driver_node_type_id": {
"type": "fixed",
"value": "Standard_L16s_v2",
"hidden": true
},
"autoscale.min_workers": {
"type": "fixed",
"value": 1,
"hidden": true
},
"autoscale.max_workers": {
"type": "range",
"maxValue": 25,
"defaultValue": 5
},
"autotermination_minutes": {
"type": "fixed",
"value": 30,
"hidden": true
},
"custom_tags.team": {
"type": "fixed",
"value": "product"
}
}
Menentukan batas pada komputasi alur DLT
Nota
Saat menggunakan kebijakan untuk mengonfigurasi komputasi DLT, Databricks merekomendasikan penerapan satu kebijakan ke komputasi default
dan maintenance
.
Untuk mengonfigurasi kebijakan untuk komputasi pipeline, buat kebijakan dengan bidang cluster_type
disetel ke dlt
. Contoh berikut membuat kebijakan minimal untuk komputasi DLT:
{
"cluster_type": {
"type": "fixed",
"value": "dlt"
},
"num_workers": {
"type": "unlimited",
"defaultValue": 3,
"isOptional": true
},
"node_type_id": {
"type": "unlimited",
"isOptional": true
},
"spark_version": {
"type": "unlimited",
"hidden": true
}
}
Kebijakan berukuran sedang yang sederhana
Memungkinkan pengguna membuat komputasi berukuran sedang dengan konfigurasi minimal. Satu-satunya field yang wajib diisi saat pembuatan adalah nama komputasi; sisanya sudah diatur dan disembunyikan.
{
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"spark_conf.spark.databricks.cluster.profile": {
"type": "forbidden",
"hidden": true
},
"autoscale.min_workers": {
"type": "fixed",
"value": 1,
"hidden": true
},
"autoscale.max_workers": {
"type": "fixed",
"value": 10,
"hidden": true
},
"autotermination_minutes": {
"type": "fixed",
"value": 60,
"hidden": true
},
"node_type_id": {
"type": "fixed",
"value": "Standard_L8s_v2",
"hidden": true
},
"driver_node_type_id": {
"type": "fixed",
"value": "Standard_L8s_v2",
"hidden": true
},
"spark_version": {
"type": "fixed",
"value": "auto:latest-ml",
"hidden": true
},
"custom_tags.team": {
"type": "fixed",
"value": "product"
}
}
Kebijakan yang hanya berfokus pada pekerjaan
Memungkinkan pengguna membuat perhitungan tugas untuk menjalankan pekerjaan. Pengguna tidak dapat membuat komputasi semua tujuan menggunakan kebijakan ini.
{
"cluster_type": {
"type": "fixed",
"value": "job"
},
"dbus_per_hour": {
"type": "range",
"maxValue": 100
},
"instance_pool_id": {
"type": "forbidden",
"hidden": true
},
"num_workers": {
"type": "range",
"minValue": 1
},
"node_type_id": {
"type": "regex",
"pattern": "Standard_[DLS]*[1-6]{1,2}_v[2,3]"
},
"driver_node_type_id": {
"type": "regex",
"pattern": "Standard_[DLS]*[1-6]{1,2}_v[2,3]"
},
"spark_version": {
"type": "unlimited",
"defaultValue": "auto:latest-lts"
},
"custom_tags.team": {
"type": "fixed",
"value": "product"
}
}
Kebijakan metastore eksternal
Memungkinkan pengguna membuat komputasi dengan metastore yang sudah ditentukan oleh admin dan terlampir. Ini berguna untuk memungkinkan pengguna membuat komputasi mereka sendiri tanpa memerlukan konfigurasi tambahan.
{
"spark_conf.spark.hadoop.javax.jdo.option.ConnectionURL": {
"type": "fixed",
"value": "jdbc:sqlserver://<jdbc-url>"
},
"spark_conf.spark.hadoop.javax.jdo.option.ConnectionDriverName": {
"type": "fixed",
"value": "com.microsoft.sqlserver.jdbc.SQLServerDriver"
},
"spark_conf.spark.databricks.delta.preview.enabled": {
"type": "fixed",
"value": "true"
},
"spark_conf.spark.hadoop.javax.jdo.option.ConnectionUserName": {
"type": "fixed",
"value": "<metastore-user>"
},
"spark_conf.spark.hadoop.javax.jdo.option.ConnectionPassword": {
"type": "fixed",
"value": "<metastore-password>"
}
}
Memastikan sumber daya komputasi tidak digunakan dengan pekerjaan
Kebijakan ini mencegah pengguna menggunakan komputasi untuk menjalankan pekerjaan. Pengguna hanya akan dapat menggunakan komputasi dengan notebook.
{
"workload_type.clients.notebooks": {
"type": "fixed",
"value": true
},
"workload_type.clients.jobs": {
"type": "fixed",
"value": false
}
}
Menghapus kebijakan penskalakan otomatis
Kebijakan ini menonaktifkan penskalaan otomatis dan memungkinkan pengguna untuk mengatur jumlah pekerja dalam rentang tertentu.
{
"num_workers": {
"type": "range",
"maxValue": 25,
"minValue": 1,
"defaultValue": 5
}
}
Penerapan tag kustom
Untuk menambahkan aturan tag komputasi ke kebijakan, gunakan atribut custom_tags.<tag-name>
.
Misalnya, setiap pengguna yang menggunakan kebijakan ini perlu mengisi tag COST_CENTER
dengan 9999, 9921, atau 9531 agar komputasi diluncurkan:
{ "custom_tags.COST_CENTER": { "type": "allowlist", "values": ["9999", "9921", "9531"] } }