Snapshot Dataflow menyimpan status pipeline streaming, yang memungkinkan Anda memulai versi baru tugas Dataflow tanpa kehilangan status. Snapshot berguna untuk pencadangan dan pemulihan, pengujian dan roll back update ke pipeline streaming, dan skenario serupa lainnya.
Anda dapat membuat snapshot Dataflow dari tugas streaming yang sedang berjalan. Perhatikan bahwa setiap tugas baru yang Anda buat dari snapshot menggunakan Streaming Engine. Anda juga dapat menggunakan snapshot Dataflow untuk memigrasikan pipeline yang ada ke Streaming Engine yang lebih efisien dan skalabel dengan waktu non-operasional minimal.
Panduan ini menjelaskan cara membuat snapshot, mengelola snapshot, dan membuat tugas dari snapshot.
Sebelum memulai
- Sign in to your Google Cloud Platform 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore, and Cloud Resource Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Dataflow, Compute Engine, Cloud Logging, Cloud Storage, Google Cloud Storage JSON, BigQuery, Cloud Pub/Sub, Cloud Datastore, and Cloud Resource Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - Di konsol Google Cloud , buka halaman Tugas Dataflow.
Daftar tugas Dataflow akan muncul beserta statusnya. Jika tidak melihat tugas streaming, Anda perlu menjalankan tugas streaming baru. Untuk mengetahui contoh tugas streaming, lihat Panduan memulai Menggunakan Template.
- Pilih tugas.
- Di panel menu pada halaman Detail tugas, klik Buat snapshot.
- Pada dialog Buat snapshot, pilih salah satu opsi berikut:
- Tanpa sumber data: pilih opsi ini untuk membuat snapshot status tugas Dataflow Anda saja.
- Dengan sumber data: pilih opsi ini untuk membuat snapshot status tugas Dataflow Anda beserta snapshot sumber Pub/Sub Anda.
- Klik Buat.
JOB_ID: ID tugas streaming AndaDURATION: jangka waktu (dalam hari) sebelum snapshot berakhir, setelah itu tidak ada lagi tugas yang dapat dibuat dari snapshot. Flagsnapshot-ttlbersifat opsional, jadi jika tidak ditentukan, masa berlaku snapshot akan berakhir dalam 7 hari. Tentukan nilai dalam format berikut:5d. Durasi maksimum yang dapat Anda tentukan adalah 30 hari (30d).REGION: region tempat tugas streaming Anda berjalan- Snapshot Dataflow dikenai biaya untuk penggunaan disk.
- Snapshot dibuat di region yang sama dengan tugas.
- Jika lokasi worker tugas berbeda dengan region tugas, pembuatan snapshot akan gagal. Lihat panduan Region Dataflow.
- Anda hanya dapat mengambil snapshot tugas non-Streaming Engine jika tugas tersebut dimulai atau diperbarui setelah 1 Februari 2021.
- Snapshot Pub/Sub yang dibuat dengan snapshot Dataflow dikelola oleh layanan Pub/Sub dan dikenai biaya.
- Snapshot Pub/Sub akan berakhir paling lambat 7 hari sejak waktu pembuatannya. Masa aktif persisnya ditentukan saat pembuatan oleh backlog yang ada dalam langganan sumber. Secara khusus, masa aktif snapshot Pub/Sub adalah
7 days - (age of oldest unacked message in the subscription). Misalnya, pertimbangkan langganan dengan periode pesan terlama yang belum dikonfirmasi adalah 3 hari. Jika snapshot Pub/Sub dibuat dari langganan ini, snapshot tersebut, yang selalu merekam backlog berusia 3 hari ini selama snapshot ada, akan berakhir dalam 4 hari. Lihat referensi snapshot Pub/Sub. - Selama operasi snapshot, tugas Dataflow Anda akan dijeda dan dilanjutkan setelah snapshot siap. Waktu yang diperlukan bergantung pada ukuran status pipeline. Misalnya, waktu yang diperlukan untuk mengambil snapshot pada tugas Streaming Engine umumnya lebih singkat daripada tugas non-Streaming Engine.
- Anda dapat membatalkan tugas saat snapshot sedang berlangsung, yang kemudian membatalkan snapshot.
- Anda tidak dapat memperbarui atau menguras tugas saat snapshot sedang berlangsung. Anda harus menunggu hingga tugas dilanjutkan dari proses snapshot sebelum dapat memperbarui atau menghentikan tugas.
- Di konsol Google Cloud , buka halaman Snapshot Dataflow.
- Pilih snapshot, lalu klik Hapus.
- Di dialog Hapus snapshot, klik Hapus untuk mengonfirmasi.
SNAPSHOT_ID: ID snapshot AndaREGION: region tempat snapshot Anda berada- Di shell atau terminal Anda, buat tugas baru dari snapshot. Contoh:
mvn -Pdataflow-runner compile exec:java \ -Dexec.mainClass=MAIN_CLASS \ -Dexec.args="--project=PROJECT_ID \ --stagingLocation=gs://STORAGE_BUCKET/staging/ \ --inputFile=gs://apache-beam-samples/shakespeare/* \ --output=gs://STORAGE_BUCKET/output \ --runner=DataflowRunner \ --enableStreamingEngine \ --createFromSnapshot=SNAPSHOT_ID \ --region=REGION"
Ganti kode berikut:
MAIN_CLASSatauMODULE: Untuk pipeline Java, lokasi class utama yang berisi kode pipeline Anda. Untuk pipeline Python, lokasi modul yang berisi kode pipeline Anda. Misalnya, saat menggunakan contoh Wordcount, nilainya adalahorg.apache.beam.examples.WordCount.PROJECT_ID: Project ID Google Cloud AndaSTORAGE_BUCKET: bucket Cloud Storage yang Anda gunakan untuk aset tugas sementara dan output akhirSNAPSHOT_ID: ID snapshot dari snapshot yang ingin Anda gunakan untuk membuat tugas baruREGION: lokasi tempat Anda ingin menjalankan tugas Dataflow baru
- Di shell atau terminal Anda, buat tugas baru dari snapshot. Contoh:
python -m MODULE \ --project PROJECT_ID \ --temp_location gs://STORAGE_BUCKET/tmp/ \ --input gs://apache-beam-samples/shakespeare/* \ --output gs://STORAGE_BUCKET/output \ --runner DataflowRunner \ --enable_streaming_engine \ --create_from_snapshot=SNAPSHOT_ID \ --region REGION \ --streaming
Ganti kode berikut:
MAIN_CLASSatauMODULE: Untuk pipeline Java, lokasi class utama yang berisi kode pipeline Anda. Untuk pipeline Python, lokasi modul yang berisi kode pipeline Anda. Misalnya, saat menggunakan contoh Wordcount, nilainya adalahorg.apache.beam.examples.WordCount.PROJECT_ID: Project ID Google Cloud AndaSTORAGE_BUCKET: bucket Cloud Storage yang Anda gunakan untuk aset tugas sementara dan output akhirSNAPSHOT_ID: ID snapshot dari snapshot yang ingin Anda gunakan untuk membuat tugas baruREGION: lokasi tempat Anda ingin menjalankan tugas Dataflow baru
- Tugas yang dibuat dari snapshot harus berjalan di region yang sama dengan tempat snapshot disimpan.
Jika snapshot Dataflow menyertakan snapshot sumber Pub/Sub, tugas yang dibuat dari snapshot Dataflow akan otomatis
seekke snapshot Pub/Sub tersebut sebagai sumber. Anda harus menentukan topik Pub/Sub yang sama yang digunakan oleh tugas sumber saat membuat tugas dari snapshot Dataflow tersebut.Jika snapshot Dataflow tidak menyertakan snapshot sumber Pub/Sub dan tugas sumber menggunakan sumber Pub/Sub, Anda harus menentukan topik Pub/Sub saat membuat tugas dari snapshot Dataflow tersebut.
Tugas baru yang dibuat dari snapshot tetap tunduk pada pemeriksaan kompatibilitas update.
- Anda tidak dapat membuat tugas dari snapshot menggunakan template atau editor Dataflow SQL.
- Anda tidak dapat memperbarui atau menguras tugas saat snapshot sedang berlangsung. Anda harus menunggu hingga tugas dilanjutkan dari proses snapshot sebelum dapat memperbarui atau menghentikan tugas.
- Jangka waktu habis masa berlaku snapshot hanya dapat ditetapkan melalui Google Cloud CLI.
- Snapshot sink tidak didukung. Misalnya, Anda tidak dapat membuat snapshot BigQuery saat membuat snapshot Dataflow.
Membuat snapshot
Konsol
gcloud
Membuat snapshot:
gcloud dataflow snapshots create \
--job-id=JOB_ID \
--snapshot-ttl=DURATION \
--snapshot-sources=true \
--region=REGIONGanti kode berikut:
Flag snapshot-sources menentukan apakah akan mengambil snapshot sumber Pub/Sub bersama dengan snapshot Dataflow. Jika true, sumber Pub/Sub akan diambil snapshot secara otomatis dan ID snapshot Pub/Sub akan ditampilkan dalam respons output. Setelah menjalankan perintah create, periksa status snapshot dengan menjalankan perintah list atau describe.
Hal berikut berlaku saat membuat snapshot Dataflow:
Menggunakan halaman snapshot
Setelah membuat snapshot, Anda dapat menggunakan halaman Snapshot di konsolGoogle Cloud untuk melihat dan mengelola snapshot project Anda.
Mengklik snapshot akan membuka halaman Detail snapshot. Anda dapat melihat metadata tambahan tentang snapshot serta link ke tugas sumber dan snapshot Pub/Sub.

Menghapus snapshot
Menghapus snapshot adalah cara untuk menghentikan proses snapshot dan melanjutkan tugas. Selain itu, menghapus snapshot Dataflow tidak akan otomatis menghapus snapshot Pub/Sub terkait.
Konsol
gcloud
Menghapus snapshot:
gcloud dataflow snapshots delete SNAPSHOT_ID \
--region=REGIONGanti kode berikut:
Untuk informasi selengkapnya, lihat referensi perintah delete.
Membuat tugas dari snapshot
Setelah membuat snapshot, Anda dapat memulihkan status tugas Dataflow dengan membuat tugas baru dari snapshot tersebut.
Java
Untuk membuat tugas baru dari snapshot, gunakan flag --createFromSnapshot dan --enableStreamingEngine.
Python
Snapshot Dataflow memerlukan Apache Beam SDK untuk Python, versi 2.29.0 atau yang lebih baru.
Untuk membuat tugas baru dari snapshot, gunakan flag --createFromSnapshot dan --enableStreamingEngine.
Hal berikut berlaku saat membuat tugas dari snapshot Dataflow:
Batasan umum
Batasan berikut berlaku untuk snapshot Dataflow:
Pemecahan masalah
Bagian ini memberikan petunjuk untuk memecahkan masalah umum yang ditemukan saat berinteraksi dengan snapshot Dataflow.
Sebelum menghubungi dukungan, pastikan Anda telah mengecualikan masalah yang terkait dengan batasan umum dan di bagian pemecahan masalah berikut.
Permintaan pembuatan snapshot ditolak
Setelah permintaan pembuatan snapshot dikirimkan, baik dari konsolGoogle Cloud maupun gcloud CLI, layanan Dataflow akan melakukan pemeriksaan prasyarat dan menampilkan pesan error. Permintaan pembuatan snapshot dapat ditolak karena berbagai alasan yang ditentukan dalam pesan error—misalnya, jika jenis tugas tidak didukung atau region tidak tersedia.
Jika permintaan ditolak karena tugas sudah terlalu lama, Anda harus memperbarui tugas sebelum meminta snapshot.
Pembuatan snapshot gagal
Pembuatan snapshot mungkin gagal karena beberapa alasan. Misalnya, tugas sumber dibatalkan atau project tidak memiliki izin yang benar untuk membuat snapshot Pub/Sub. Log job-message tugas berisi pesan error dari pembuatan snapshot. Jika pembuatan snapshot gagal, tugas sumber akan dilanjutkan.
Gagal membuat tugas dari snapshot
Saat membuat tugas dari snapshot, pastikan snapshot ada dan masih berlaku. Tugas baru harus berjalan di Streaming Engine.
Untuk masalah umum terkait pembuatan tugas, lihat panduan pemecahan masalah Dataflow. Khususnya, tugas baru yang dibuat dari snapshot tunduk pada pemeriksaan kompatibilitas update di mana tugas baru harus kompatibel dengan tugas sumber yang di-snapshot.
Tugas yang dibuat dari snapshot mengalami sedikit kemajuan
Log job-message tugas berisi pesan error untuk pembuatan tugas. Misalnya, Anda mungkin melihat bahwa tugas tidak dapat menemukan snapshot Pub/Sub. Dalam hal ini, pastikan snapshot Pub/Sub ada dan masih berlaku. Snapshot Pub/Sub akan berakhir masa berlakunya segera setelah pesan terlama dalam snapshot berusia lebih dari tujuh hari. Snapshot Pub/Sub yang sudah berakhir masa berlakunya mungkin dihapus secara otomatis oleh layanan Pub/Sub.
Untuk tugas yang dibuat dari snapshot Dataflow yang menyertakan snapshot sumber Pub/Sub, tugas baru mungkin memiliki backlog Pub/Sub yang besar untuk diproses. Penskalaan otomatis streaming dapat membantu tugas baru menyelesaikan backlog lebih cepat.
Tugas sumber yang di-snapshot mungkin sudah dalam status tidak responsif sebelum snapshot diambil. Memahami alasan tugas sumber tidak responsif dapat membantu menyelesaikan masalah tugas baru. Untuk tips proses debug tugas umum, lihat panduan pemecahan masalah Dataflow.