Anda dapat membuat cluster Dataproc dengan image kustom yang berisi paket yang sudah diinstal sebelumnya. Halaman ini menunjukkan cara membuat image kustom dan menginstalnya di cluster Dataproc.
Pertimbangan dan batasan penggunaan
Masa aktif image kustom: Untuk memastikan bahwa cluster menerima update layanan dan perbaikan bug terbaru, pembuatan cluster dengan image kustom dibatasi hingga 365 hari sejak tanggal pembuatan image kustom. Perhatikan bahwa cluster yang ada yang dibuat dengan image kustom dapat berjalan tanpa batas waktu.
Anda mungkin perlu menggunakan otomatisasi jika ingin membuat cluster dengan image kustom tertentu selama lebih dari 365 hari. Untuk mengetahui informasi selengkapnya, lihat Membuat cluster dengan image kustom yang sudah tidak berlaku.
Khusus Linux: Petunjuk dalam dokumen ini hanya berlaku untuk sistem operasi Linux. Sistem operasi lain mungkin didukung dalam rilis Dataproc mendatang.
Image dasar yang didukung: Build image kustom harus dimulai dari image dasar Dataproc. Image dasar berikut didukung: Debian, Rocky Linux, dan Ubuntu.
- Ketersediaan image dasar: Image baru yang diumumkan dalam catatan rilis Dataproc tidak tersedia untuk digunakan sebagai dasar image kustom hingga satu minggu sejak tanggal pengumumannya.
Menggunakan komponen opsional:
Image dasar
2.2
dan yang lebih lama: Secara default, semua komponen opsional Dataproc (paket dan konfigurasi OS) diinstal pada image kustom. Anda dapat menyesuaikan versi dan konfigurasi paket OS.2.3
dan image dasar yang lebih baru: Hanya komponen opsional yang dipilih yang diinstal pada image kustom (lihat flag --optional-components).generate_custom_image.py
Terlepas dari image dasar yang digunakan untuk image kustom Anda, saat Anda membuat cluster, Anda harus mencantumkan atau memilih komponen opsional.
Contoh: Perintah pembuatan cluster Google Cloud CLI:
gcloud dataproc clusters create CLUSTER_NAME --image=CUSTOM_IMAGE_URI \ --optional-components=COMPONENT_NAME \ ... other flags
Jika nama komponen tidak ditentukan saat Anda membuat cluster, komponen opsional, termasuk paket dan konfigurasi OS kustom, akan dihapus.
Menggunakan image kustom yang dihosting: Jika Anda menggunakan image kustom yang dihosting di project lain, akun layanan Dataproc Service Agent di project Anda harus memiliki izin
compute.images.get
pada image di project host. Anda dapat memberikan izin ini dengan memberikan peranroles/compute.imageUser
pada image yang dihosting ke akun layanan Agen Layanan Dataproc project Anda (lihat Membagikan image kustom dalam organisasi).Menggunakan secret MOK (Machine Owner Key) booting aman: Untuk mengaktifkan booting aman dengan image kustom Dataproc, lakukan hal berikut:
Aktifkan Secret Manager API (
secretmanager.googleapis.com
. Dataproc membuat dan mengelola pasangan kunci menggunakan layanan Secret Manager.Tambahkan flag
--service-account="SERVICE_ACCOUNT"
ke perintahgenerate_custom_image.py
saat Anda membuat image kustom. Catatan: Anda harus memberikan peran Secret Manager Viewer (roles/secretmanager.viewer
) kepada akun layanan di project dan peran Secret Manager Accessor (roles/secretmanager.secretAccessor
) pada secret publik dan pribadi.Untuk mengetahui informasi selengkapnya dengan contoh, lihat file
README.md
dan file lainnya dalam direktori examples/secure-boot dari repositoriGoogleCloudDataproc/custom-images
di GitHub.Untuk menonaktifkan booting aman: Secara default, skrip image kustom Dataproc membuat dan mengelola pasangan kunci menggunakan Secret Manager saat dijalankan dari cluster Dataproc. Jika Anda tidak ingin menggunakan secure-boot dengan image kustom, sertakan
--trusted-cert=""
(nilai flag kosong) ke perintahgenerate_custom_image.py
saat Anda membuat image kustom.
Sebelum memulai
Pastikan untuk menyiapkan project Anda sebelum membuat image kustom.
Menyiapkan project
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API, Compute Engine API, and Cloud Storage APIs.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API, Compute Engine API, and Cloud Storage APIs.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Instal Python 3.11+
- Siapkan skrip penyesuaian yang menginstal paket kustom dan/atau
mengupdate konfigurasi, misalnya:
#! /usr/bin/bash apt-get -y update apt-get install python-dev apt-get install python-pip pip install numpy
- In the Google Cloud console, go to the Cloud Storage Buckets page.
- Click Create.
- On the Create a bucket page, enter your bucket information. To go to the next
step, click Continue.
-
In the Get started section, do the following:
- Enter a globally unique name that meets the bucket naming requirements.
- To add a
bucket label,
expand the Labels section ( ),
click add_box
Add label, and specify a
key
and avalue
for your label.
-
In the Choose where to store your data section, do the following:
- Select a Location type.
- Choose a location where your bucket's data is permanently stored from the Location type drop-down menu.
- If you select the dual-region location type, you can also choose to enable turbo replication by using the relevant checkbox.
- To set up cross-bucket replication, select
Add cross-bucket replication via Storage Transfer Service and
follow these steps:
Set up cross-bucket replication
- In the Bucket menu, select a bucket.
In the Replication settings section, click Configure to configure settings for the replication job.
The Configure cross-bucket replication pane appears.
- To filter objects to replicate by object name prefix, enter a prefix that you want to include or exclude objects from, then click Add a prefix.
- To set a storage class for the replicated objects, select a storage class from the Storage class menu. If you skip this step, the replicated objects will use the destination bucket's storage class by default.
- Click Done.
-
In the Choose how to store your data section, do the following:
- Select a default storage class for the bucket or Autoclass for automatic storage class management of your bucket's data.
- To enable hierarchical namespace, in the Optimize storage for data-intensive workloads section, select Enable hierarchical namespace on this bucket.
- In the Choose how to control access to objects section, select whether or not your bucket enforces public access prevention, and select an access control method for your bucket's objects.
-
In the Choose how to protect object data section, do the
following:
- Select any of the options under Data protection that you
want to set for your bucket.
- To enable soft delete, click the Soft delete policy (For data recovery) checkbox, and specify the number of days you want to retain objects after deletion.
- To set Object Versioning, click the Object versioning (For version control) checkbox, and specify the maximum number of versions per object and the number of days after which the noncurrent versions expire.
- To enable the retention policy on objects and buckets, click the Retention (For compliance) checkbox, and then do the following:
- To enable Object Retention Lock, click the Enable object retention checkbox.
- To enable Bucket Lock, click the Set bucket retention policy checkbox, and choose a unit of time and a length of time for your retention period.
- To choose how your object data will be encrypted, expand the Data encryption section (Data encryption method. ), and select a
- Select any of the options under Data protection that you
want to set for your bucket.
-
In the Get started section, do the following:
- Click Create.
--image-name
: nama output untuk image kustom Anda.--dataproc-version
: Versi image Dataproc yang akan digunakan dalam image kustom Anda. Tentukan versi dalam formatx.y.z-os
ataux.y.z-rc-os
, misalnya, "2.0.69-debian10".--customization-script
: jalur lokal ke skrip yang akan dijalankan alat untuk menginstal paket kustom atau melakukan penyesuaian lainnya. Skrip ini dijalankan sebagai skrip startup Linux hanya di VM sementara yang digunakan untuk membuat image kustom. Anda dapat menentukan skrip inisialisasi yang berbeda untuk tindakan inisialisasi lain yang ingin dilakukan saat Anda membuat cluster dengan image kustom.Image lintas project: Jika image kustom Anda digunakan untuk membuat cluster di project yang berbeda, error dapat terjadi karena cache perintah
gcloud
ataugsutil
yang disimpan dalam image. Anda dapat menghindari masalah ini dengan menyertakan perintah berikut dalam skrip penyesuaian untuk menghapus kredensial yang di-cache.rm -r /root/.gsutil /root/.config/gcloud
--zone
: zona Compute Engine tempatgenerate_custom_image.py
akan membuat VM sementara untuk digunakan dalam membuat image kustom Anda.--gcs-bucket
: URI, dalam formatgs://BUCKET_NAME
, yang mengarah ke bucket Cloud Storage Anda.generate_custom_image.py
menulis file log ke bucket ini.--family
: kelompok image untuk image kustom. Kelompok image digunakan untuk mengelompokkan image serupa, dan dapat digunakan saat membuat cluster sebagai penunjuk ke image terbaru dalam kelompok. Contoh,custom-2-2-debian12
.--no-smoke-test
: Ini adalah flag opsional yang menonaktifkan pengujian smoke pada image kustom yang baru dibuat. Pengujian singkat membuat cluster pengujian Dataproc dengan image yang baru di-build, menjalankan tugas kecil, lalu menghapus cluster di akhir pengujian. Pengujian ringan dijalankan secara default untuk memverifikasi bahwa image kustom yang baru dibuat dapat membuat cluster Dataproc yang berfungsi. Menonaktifkan langkah ini menggunakan flag--no-smoke-test
akan mempercepat proses pembuatan image kustom, tetapi penggunaannya tidak direkomendasikan.--subnet
: Subnetwork yang akan digunakan untuk membuat VM yang membangun image Dataproc kustom. Jika project Anda adalah bagian dari VPC bersama, Anda harus menentukan URL subnetwork lengkap dalam format berikut:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
.--optional-components
: Flag ini hanya tersedia saat menggunakan versi gambar dasar2.3
dan yang lebih baru. Daftar komponen opsional, seperti SOLR, RANGER, TRINO, DOCKER, FLINK, HIVE_WEBHCAT, ZEPPELIN, HUDI, ICEBERG, dan PIG (PIG tersedia sebagai komponen opsional dalam versi image2.3
dan yang lebih baru), untuk diinstal dalam image.Contoh: Perintah pembuatan cluster Google Cloud CLI:
gcloud dataproc clusters create CLUSTER_NAME --image=CUSTOM_IMAGE_URI \ --optional-components=COMPONENT_NAME \ ... other flags
Ekstrak label
goog-dataproc-version
dari image Dataproc dasar yang digunakan untuk membuat image kustom.gcloud compute images describe ${BASE_DATAPROC_IMAGE} \ --project cloud-dataproc \ --format="value(labels.goog-dataproc-version)"
Tetapkan label pada gambar kustom.
gcloud compute images add-labels IMAGE_NAME --labels=[KEY=VALUE,...]
- URI lengkap:
https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/images/`gs://`BUCKET_NAME`
- URI Parsial:
projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME
- Nama singkat: CUSTOM_IMAGE_NAME
- URI lengkap:
https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/images/family/CUSTOM_IMAGE_FAMILY_NAME/var>
- URI Parsial:
projects/PROJECT_ID/global/images/family/CUSTOM_IMAGE_FAMILY_NAME
- Buka halaman
Compute Engine→Images
di konsol Google Cloud , lalu klik nama image.
Anda dapat memasukkan kueri di kolom
filter images
untuk membatasi jumlah gambar yang ditampilkan. - Halaman Detail gambar akan terbuka. Klik
REST yang Setara.
- Respons REST mencantumkan informasi tambahan tentang gambar, termasuk
selfLink
, yang merupakan URI gambar.{ ... "name": "my-custom-image", "selfLink": "projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME", "sourceDisk": ..., ... }
- Buka halaman Buat cluster Dataproc. Panel Set up cluster dipilih.
- Di bagian Versi, klik Ubah. Pilih tab Custom Image, pilih image kustom yang akan digunakan untuk cluster Dataproc Anda, lalu klik Select. VM cluster akan disediakan dengan image kustom yang dipilih.
Di skrip penyesuaian gambar kustom Anda, buat file
dataproc.custom.properties
di/etc/google-dataproc
, lalu tetapkan nilai properti cluster dalam file.- Contoh file
dataproc.custom.properties
:
dataproc.conscrypt.provider.enable=VALUE dataproc.logging.stackdriver.enable=VALUE
- Contoh cuplikan pembuatan file skrip penyesuaian untuk mengganti dua properti cluster:
cat <<EOF >/etc/google-dataproc/dataproc.custom.properties dataproc.conscrypt.provider.enable=true dataproc.logging.stackdriver.enable=false EOF
- Contoh file
Mencoba membuat cluster Dataproc dengan image kustom yang sudah tidak berlaku atau image kustom yang akan berakhir dalam waktu 10 hari.
gcloud dataproc clusters create CLUSTER-NAME \ --image=CUSTOM-IMAGE-NAME \ --region=REGION \ ... other flags
gcloud CLI akan mengeluarkan pesan error yang mencakup nama properti
dataproc:dataproc.custom.image.expiration.token
cluster dan nilai token.Gunakan gcloud CLI untuk membuat cluster Dataproc lagi, dengan menambahkan TOKEN_VALUE yang disalin sebagai properti cluster.
gcloud dataproc clusters create CLUSTER-NAME \ --image=CUSTOM-IMAGE-NAME \ --properties=dataproc:dataproc.custom.image.expiration.token=TOKEN_VALUE \ --region=REGION \ ... other flags
Membuat bucket Cloud Storage di project Anda
Membuat gambar kustom
Anda menggunakan generate_custom_image.py, program Python, untuk membuat image kustom Dataproc.
Cara kerjanya
Program generate_custom_image.py
meluncurkan instance VM Compute Engine sementara dengan image dasar Dataproc yang ditentukan, lalu menjalankan skrip penyesuaian di dalam instance VM untuk menginstal paket kustom dan/atau mengupdate konfigurasi. Setelah skrip penyesuaian
selesai, skrip akan menonaktifkan instance VM dan membuat image kustom Dataproc
dari disk instance VM. VM sementara dihapus setelah
image kustom dibuat. Image kustom disimpan dan dapat digunakan untuk
membuat cluster Dataproc.
Program generate_custom_image.py
menggunakan gcloud CLI untuk menjalankan alur kerja multi-langkah di Compute Engine.
Menjalankan kode
Buat fork atau clone file di GitHub di Dataproc custom images.
Kemudian, jalankan skrip generate_custom_image.py
agar Dataproc membuat dan menyimpan image kustom Anda.
python3 generate_custom_image.py \ --image-name=CUSTOM_IMAGE_NAME \ [--family=CUSTOM_IMAGE_FAMILY_NAME] \ --dataproc-version=IMAGE_VERSION \ --customization-script=LOCAL_PATH \ --zone=ZONE \ --gcs-bucket=gs://BUCKET_NAME \ [--no-smoke-test]
Flag yang diperlukan
Untuk mengetahui daftar tanda opsional yang tersedia, lihat Argumen Opsional di GitHub.
Jika generate_custom_image.py
berhasil, imageURI
gambar kustom akan
ditampilkan dalam output jendela terminal (imageUri
lengkap ditampilkan dalam cetak tebal di bawah):
... managedCluster: clusterName: verify-image-20180614213641-8308a4cd config: gceClusterConfig: zoneUri: ZONE masterConfig: imageUri: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME ... INFO:__main__:Successfully built Dataproc custom image: CUSTOM_IMAGE_NAME INFO:__main__: ##################################################################### WARNING: DATAPROC CUSTOM IMAGE 'CUSTOM_IMAGE_NAME' WILL EXPIRE ON 2018-07-14 21:35:44.133000. #####################################################################
Label versi gambar kustom (penggunaan lanjutan)
Saat menggunakan alat image kustom standar Dataproc, alat tersebut menetapkan label goog-dataproc-version
pada image kustom yang dibuat. Label mencerminkan kemampuan fitur dan protokol yang digunakan oleh
Dataproc untuk mengelola software pada image.
Penggunaan lanjutan: Jika Anda menggunakan proses sendiri untuk membuat image Dataproc kustom, Anda harus menambahkan label goog-dataproc-version
secara manual ke image kustom Anda, sebagai berikut:
Menggunakan gambar kustom
Anda menentukan image kustom saat membuat cluster Dataproc. Image kustom disimpan di Cloud Compute Images, dan valid untuk membuat cluster Dataproc selama 365 hari sejak tanggal pembuatannya (lihat Membuat cluster dengan image kustom yang sudah habis masa berlakunya untuk menggunakan image kustom setelah tanggal habis masa berlakunya 365 hari).
URI gambar kustom
Anda meneruskan imageUri
image kustom ke operasi pembuatan cluster.
URI ini dapat ditentukan dengan salah satu dari tiga cara berikut:
Image kustom juga dapat ditentukan oleh URI kelompoknya, yang selalu memilih image terbaru dalam kelompok image.
Menemukan URI image kustom
Google Cloud CLI
Jalankan perintah berikut untuk mencantumkan nama image kustom Anda.
gcloud compute images list
Teruskan nama image kustom Anda ke perintah berikut untuk mencantumkan
URI (selfLink
) image kustom Anda.
gcloud compute images describe custom-image-name
Cuplikan output:
... name: CUSTOM_IMAGE_NAME selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME ...
Konsol
Membuat cluster dengan image kustom
Buat cluster dengan menggunakan gcloud CLI, Dataproc API, atau Google Cloud konsol.
gcloud CLI
Buat cluster Dataproc dengan image kustom menggunakan perintah
dataproc clusters create
dengan flag --image
.
gcloud dataproc clusters create CLUSTER-NAME \ --image=CUSTOM_IMAGE_URI \ --region=REGION \ ... other flags
REST API
Buat cluster dengan image kustom dengan menentukan URI image kustom
di kolom
InstanceGroupConfig.imageUri
pada objek masterConfig
, workerConfig
, dan, jika berlaku,
secondaryWorkerConfig
yang disertakan dalam permintaan
API cluster.create.
Contoh: Permintaan REST untuk membuat cluster Dataproc standar (satu node master, dua node pekerja) dengan image kustom.
POST /v1/projects/PROJECT_ID/regions/REGION/clusters/ { "clusterName": "CLUSTER_NAME", "config": { "masterConfig": { "imageUri": "projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME" }, "workerConfig": { "imageUri": "projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME" } } }
Konsol
Mengganti properti cluster Dataproc dengan image kustom
Anda dapat menggunakan image kustom untuk mengganti properti cluster yang ditetapkan selama pembuatan cluster. Jika Anda membuat cluster dengan image kustom, dan operasi pembuatan cluster menetapkan properti dengan nilai yang berbeda dari yang ditetapkan oleh image kustom Anda, nilai properti yang ditetapkan oleh image kustom Anda akan diutamakan.
Untuk menyetel properti cluster dengan image kustom Anda:
Membuat cluster dengan image kustom yang sudah tidak berlaku
Secara default, masa berlaku image kustom adalah 365 hari sejak tanggal pembuatan image. Anda dapat membuat cluster yang menggunakan image kustom yang sudah tidak berlaku dengan menyelesaikan langkah-langkah berikut.
dataproc:dataproc.custom.image.expiration.token=TOKEN_VALUE
Salin string TOKEN_VALUE ke papan klip.
Pembuatan cluster dengan image kustom akan berhasil.