Dengan template Dataflow, Anda dapat mengemas pipeline Dataflow untuk deployment. Siapa pun yang memiliki izin yang benar dapat menggunakan template untuk men-deploy pipeline yang dipaketkan. Anda dapat membuat template Dataflow kustom sendiri, dan Google menyediakan template bawaan untuk skenario umum.
Manfaat
Template memiliki beberapa keunggulan dibandingkan men-deploy pipeline langsung ke Dataflow:
- Template memisahkan desain pipeline dari deployment. Misalnya, developer dapat membuat template, dan data scientist dapat men-deploy template tersebut di lain waktu.
- Template dapat memiliki parameter yang memungkinkan Anda menyesuaikan pipeline saat men-deploy template.
- Anda dapat men-deploy template menggunakan konsol Google Cloud , Google Cloud CLI, atau panggilan REST API. Anda tidak memerlukan lingkungan pengembangan atau dependensi pipeline apa pun yang diinstal di komputer lokal Anda.
- Template adalah artefak kode yang dapat disimpan di repositori kontrol sumber dan digunakan dalam pipeline continuous integration (CI/CD).
Template yang disediakan Google
Google menyediakan berbagai template Dataflow open source bawaan yang dapat Anda gunakan untuk skenario umum. Untuk mengetahui informasi selengkapnya tentang template yang tersedia, lihat Template yang disediakan Google.
Membandingkan template Flex dan template klasik
Dataflow mendukung dua jenis template: template Flex, yang lebih baru, dan template klasik. Jika Anda membuat template Dataflow baru, sebaiknya buat sebagai template Flex.
Dengan template Flex, pipeline dipaketkan sebagai image Docker di
Artifact Registry, bersama dengan file spesifikasi template di Cloud Storage. Spesifikasi template berisi pointer ke image Docker. Saat Anda menjalankan template, layanan Dataflow akan memulai VM peluncur, mengambil image Docker, dan menjalankan pipeline. Grafik eksekusi dibuat secara dinamis berdasarkan parameter runtime yang disediakan oleh pengguna. Untuk menggunakan API guna meluncurkan tugas yang menggunakan template Flex, gunakan metode projects.locations.flexTemplates.launch.
Template klasik berisi serialisasi JSON dari grafik tugas Dataflow. Kode untuk pipeline harus menggabungkan parameter runtime apa pun dalam antarmuka ValueProvider. Antarmuka ini memungkinkan pengguna menentukan parameter value saat men-deploy template. Untuk menggunakan API dengan template klasik, lihat
projects.locations.templates
dokumentasi referensi API.
Template Flex memiliki keunggulan berikut dibandingkan template klasik:
- Tidak seperti template klasik, template Flex tidak memerlukan antarmuka
ValueProvideruntuk parameter input. Tidak semua sumber dan sink Dataflow mendukungValueProvider. - Meskipun template klasik memiliki grafik tugas statis, template Flex dapat membuat grafik tugas secara dinamis. Misalnya, template mungkin memilih konektor I/O yang berbeda berdasarkan parameter input.
- Template Flex dapat melakukan pra-pemrosesan pada virtual machine (VM) selama konstruksi pipeline. Misalnya, fungsi ini mungkin memvalidasi nilai parameter input.
Alur kerja template
Penggunaan template Dataflow melibatkan langkah-langkah tingkat tinggi berikut:
- Developer menyiapkan lingkungan pengembangan dan mengembangkan pipeline mereka. Lingkungan ini mencakup Apache Beam SDK dan dependensi lainnya.
- Bergantung pada jenis template (Flex atau klasik):
- Untuk template Flex, developer mengemas pipeline ke dalam image Docker, mengirim image ke Artifact Registry, dan mengupload file spesifikasi template ke Cloud Storage.
- Untuk template klasik, developer menjalankan pipeline, membuat file template, dan melakukan staging template ke Cloud Storage.
- Pengguna lain mengirimkan permintaan ke layanan Dataflow untuk menjalankan template.
- Dataflow membuat pipeline dari template. Pipeline dapat memerlukan waktu hingga lima hingga tujuh menit untuk mulai berjalan.
Memeriksa dan mengaudit tugas template
Saat Anda mengaudit tugas template Dataflow yang sedang berjalan atau historis
secara terprogram menggunakan REST API atau Google Cloud CLI, tampilan defaultnya
adalah tampilan ringkasan (JOB_VIEW_SUMMARY). Tampilan ringkasan
menghilangkan detail eksekusi pipeline, metadata template, dan opsi pipeline SDK.
Untuk mengambil detail template dan opsi lingkungan, Anda harus secara eksplisit
meminta tampilan tugas lengkap.
Untuk memeriksa detail template untuk tugas, gunakan salah satu metode berikut:
gcloud CLI
Untuk mengambil deskripsi tugas lengkap, termasuk detail template, jalankan perintah gcloud dataflow jobs describe dengan flag --full:
Sebelum menggunakan salah satu data perintah di bawah, lakukan penggantian berikut:
- REGION: region Dataflow tempat tugas berjalan.
- JOB_ID: ID tugas Dataflow.
Jalankan perintah berikut:
Linux, macOS, atau Cloud Shell
gcloud dataflow jobs describe JOB_ID --full --region=REGION
Windows (PowerShell)
gcloud dataflow jobs describe JOB_ID --full --region=REGION
Windows (cmd.exe)
gcloud dataflow jobs describe JOB_ID --full --region=REGION
Anda akan melihat respons seperti berikut:
environment:
sdkPipelineOptions:
options:
templateLocation: gs://BUCKET_NAME/templates/TEMPLATE_NAME
id: JOB_ID
name: JOB_NAME
type: JOB_TYPE_BATCH
REST
Untuk mengambil resource tugas lengkap termasuk detail template, kirim permintaan GET HTTP ke metode projects.locations.jobs.get dengan parameter kueri view=JOB_VIEW_ALL:
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- PROJECT_ID: Project ID Google Cloud Anda.
- REGION: region Dataflow tempat tugas berjalan.
- JOB_ID: ID tugas Dataflow.
Metode HTTP dan URL:
GET https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/jobs/JOB_ID?view=JOB_VIEW_ALL
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Jalankan perintah berikut:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/jobs/JOB_ID?view=JOB_VIEW_ALL"
PowerShell
Jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/REGION/jobs/JOB_ID?view=JOB_VIEW_ALL" | Select-Object -Expand Content
Anda akan melihat respons JSON seperti berikut:
{
"id": "JOB_ID",
"name": "JOB_NAME",
"type": "JOB_TYPE_BATCH",
"environment": {
"sdkPipelineOptions": {
"options": {
"templateLocation": "gs://BUCKET_NAME/templates/TEMPLATE_NAME"
}
}
}
}
Mengidentifikasi jenis template
Payload respons berbeda-beda, bergantung pada apakah tugas dibuat dari template yang disediakan Google atau template kustom:
- Template yang disediakan Google: Dataflow
otomatis melampirkan label yang telah ditetapkan ke resource tugas:
goog-dataflow-provided-template-name: nama template.goog-dataflow-provided-template-type: jenis template, baikflexataulegacy(klasik).goog-dataflow-provided-template-version: versi rilis template.
- Template kustom: Tugas template kustom tidak memiliki label
goog-dataflow-provided-*. Tugas template Flex dan template klasik mengisi opsitemplateLocationdienvironment.sdkPipelineOptions. Untuk menentukan jenis template untuk tugas kustom saat label tidak ada, periksa kolom berikut dalam respons tugas lengkap (JOB_VIEW_ALL):- Template klasik: Kolom
templateLocationmengarah langsung ke file JSON template yang di-stage di Cloud Storage. Misalnya, jalur tersebut menyerupaigs://BUCKET_NAME/templates/TEMPLATE_NAME. Tugas template klasik tidak memiliki konfigurasi image peluncur container. - Template Flex: Tugas template Flex dijalankan dari image container peluncur. Di bagian objek
environment, tugas template Flex berisi spesifikasi dan parameter container peluncur (sepertiflexResourceLimits). Selain itu, jalur Cloud StoragetemplateLocationyang di-stage dan dibuat selama peluncuran berisi ID pekerjaan.
- Template klasik: Kolom
Praktik terbaik: melampirkan label pengguna selama peluncuran
Karena membedakan jenis template kustom secara terprogram memerlukan
pengambilan dan penguraian opsi lingkungan JOB_VIEW_ALL lengkap,
sebaiknya Anda melampirkan label pengguna deskriptif saat
meluncurkan tugas template. Misalnya, lampirkan label seperti
template-type: flex atau template-type: classic.
Label pengguna ditampilkan dalam tampilan ringkasan default (JOB_VIEW_SUMMARY)
dan dalam operasi daftar tugas. Label pengguna memungkinkan Anda memfilter, menelusuri, dan mengaudit tugas template secara efisien di seluruh project tanpa mengambil payload eksekusi lengkap untuk setiap tugas.
Untuk melampirkan label saat meluncurkan template, gunakan metode berikut:
- Untuk template Flex di gcloud CLI, gunakan flag
--additional-user-labelsdalam perintahgcloud dataflow flex-template run. - Untuk template klasik di gcloud CLI, gunakan flag
--labelsdalam perintahgcloud dataflow jobs run. - Saat menggunakan REST API, sertakan key-value map
labelsdalam isi permintaan peluncuran.
Menetapkan izin IAM
Tugas Dataflow, termasuk tugas yang dijalankan dari template, menggunakan dua akun layanan IAM:
- Layanan Dataflow menggunakan akun layanan Dataflow untuk memanipulasi resource Google Cloud , seperti membuat VM.
- Worker VM Dataflow menggunakan akun layanan worker untuk mengakses file pipeline dan resource lainnya. Akun layanan ini memerlukan akses ke resource apa pun yang dirujuk oleh tugas pipeline, termasuk sumber dan sink yang digunakan template. Untuk mengetahui informasi selengkapnya, lihat Mengakses Google Cloud resource.
Pastikan kedua akun layanan ini memiliki peran yang sesuai. Untuk mengetahui informasi selengkapnya, lihat Keamanan dan izin Dataflow.
Jika organisasi Anda menggunakan kebijakan principal access boundary (PAB), principal (seperti pengguna atau akun layanan) mungkin diblokir agar tidak dapat melihat dan menjalankan template yang disediakan Google. Untuk mengetahui informasi dan solusi selengkapnya, lihat Mengakses template yang disediakan Google dengan kebijakan batas akses akun utama.
Persyaratan versi Apache Beam SDK
Untuk membuat template Anda sendiri, pastikan versi Apache Beam SDK Anda mendukung pembuatan template.
Java
Untuk membuat template dengan Apache Beam SDK 2.x untuk Java, Anda harus memiliki versi 2.0.0-beta3 atau yang lebih tinggi.
Python
Untuk membuat template dengan Apache Beam SDK 2.x untuk Python, Anda harus memiliki versi 2.0.0 atau yang lebih tinggi.
Untuk menjalankan template dengan Google Cloud CLI, Anda harus memiliki Google Cloud CLI versi 138.0.0 atau yang lebih tinggi.
Memperluas template
Anda dapat membuat template sendiri dengan memperluas template Dataflow open source. Misalnya, untuk template yang menggunakan durasi jendela tetap, data
yang tiba di luar jendela mungkin akan dihapus. Untuk menghindari perilaku ini, gunakan kode template sebagai dasar, dan ubah kode untuk memanggil operasi .withAllowedLateness.