Dengan Template Fleksibel Dataflow, Anda dapat mengemas pipeline Dataflow untuk deployment. Tutorial ini menunjukkan cara membuat Template Dataflow Flex, lalu menjalankan tugas Dataflow menggunakan template tersebut.
Tujuan
- Buat Template Dataflow Flex.
- Gunakan template untuk menjalankan tugas Dataflow.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Dataflow, Compute Engine, Logging, Cloud Storage, Cloud Storage JSON, Resource Manager, Artifact Registry, and Cloud Build:
gcloud services enable dataflow compute_component logging storage_component storage_api cloudresourcemanager.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com
-
Buat kredensial autentikasi lokal untuk Akun Google Anda:
gcloud auth application-default login
-
Berikan peran ke Akun Google Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
roles/iam.serviceAccountUser
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
- Ganti
PROJECT_ID
dengan project ID Anda. - Ganti
EMAIL_ADDRESS
dengan alamat email Anda. - Ganti
ROLE
dengan setiap peran individual.
- Ganti
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Dataflow, Compute Engine, Logging, Cloud Storage, Cloud Storage JSON, Resource Manager, Artifact Registry, and Cloud Build:
gcloud services enable dataflow compute_component logging storage_component storage_api cloudresourcemanager.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com
-
Buat kredensial autentikasi lokal untuk Akun Google Anda:
gcloud auth application-default login
-
Berikan peran ke Akun Google Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
roles/iam.serviceAccountUser
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
- Ganti
PROJECT_ID
dengan project ID Anda. - Ganti
EMAIL_ADDRESS
dengan alamat email Anda. - Ganti
ROLE
dengan setiap peran individual.
- Ganti
Berikan peran ke akun layanan default Compute Engine Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
roles/dataflow.admin
roles/dataflow.worker
roles/storage.objectAdmin
roles/artifactregistry.reader
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" --role=SERVICE_ACCOUNT_ROLE
Ganti kode berikut:
PROJECT_ID
: project ID AndaPROJECT_NUMBER
nomor project AndaSERVICE_ACCOUNT_ROLE
: setiap peran individual
Menyiapkan lingkungan
Instal SDK dan persyaratan apa pun untuk lingkungan pengembangan Anda.
Java
Download dan instal Java Development Kit (JDK) versi 11. Pastikan variabel lingkungan
JAVA_HOME
telah ditetapkan dan mengarah ke penginstalan JDK Anda.Download dan instal Apache Maven dengan mengikuti panduan penginstalan Maven untuk sistem operasi khusus Anda.
Python
Instal Apache Beam SDK untuk Python.
Go
Gunakan Panduan download dan instal Go untuk mendownload dan menginstal Go untuk sistem operasi tertentu Anda. Untuk mempelajari lingkungan runtime Go mana yang didukung oleh Apache Beam, lihat Dukungan runtime Apache Beam.
Download contoh kode.
Java
Clone
java-docs-samples
repository.git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Lihat contoh kode untuk tutorial ini.
cd java-docs-samples/dataflow/flex-templates/getting_started
Build project Java menjadi file Uber JAR.
mvn clean package
File Uber JAR ini memiliki semua dependensi yang tersemat di dalamnya. Anda dapat menjalankan file ini sebagai aplikasi mandiri tanpa dependensi eksternal di library lain.
Python
Clone
python-docs-samples
repository.git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Lihat contoh kode untuk tutorial ini.
cd python-docs-samples/dataflow/flex-templates/getting_started
Go
Clone
golang-samples
repository.git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Lihat contoh kode untuk tutorial ini.
cd golang-samples/dataflow/flex-templates/wordcount
Kompilasi biner Go.
GOOS=linux GOARCH=amd64 go build -o wordcount .
Membuat bucket Cloud Storage
Gunakan perintah gcloud storage buckets create
untuk membuat bucket Cloud Storage:
gcloud storage buckets create gs://BUCKET_NAME
Ganti BUCKET_NAME
dengan nama untuk bucket Cloud Storage Anda. Nama bucket Cloud Storage harus unik secara global dan memenuhi persyaratan penamaan bucket.
Membuat repositori Artifact Registry
Buat repositori Artifact Registry tempat Anda akan mengirim image container Docker untuk template.
Gunakan perintah
gcloud artifacts repositories create
untuk membuat repositori Artifact Registry baru.gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=LOCATION
Ganti kode berikut:
- REPOSITORY: nama untuk repositori Anda. Nama repositori harus unik untuk setiap lokasi repositori dalam project.
- LOCATION: lokasi regional atau multi-regional untuk repositori.
Gunakan perintah
gcloud auth configure-docker
untuk mengonfigurasi Docker guna mengautentikasi permintaan untuk Artifact Registry. Perintah ini akan memperbarui konfigurasi Docker, sehingga Anda dapat terhubung dengan Artifact Registry untuk mengirim image.gcloud auth configure-docker LOCATION-docker.pkg.dev
Flex Templates juga dapat menggunakan gambar yang disimpan di registry pribadi. Untuk mengetahui informasi selengkapnya, lihat Menggunakan image dari registry pribadi.
Membangun Template Flex
Pada langkah ini, Anda menggunakan
perintah gcloud dataflow flex-template build
untuk membuat Template Flex.
Template Flex terdiri dari komponen berikut:
- Image container Docker yang mengemas kode pipeline Anda.
File spesifikasi template. File ini adalah dokumen JSON yang berisi lokasi image container plus metadata tentang template, seperti parameter pipeline.
Java
gcloud dataflow flex-template build gs://BUCKET_NAME/getting_started-java.json \ --image-gcr-path "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/getting-started-java:latest" \ --sdk-language "JAVA" \ --flex-template-base-image JAVA11 \ --metadata-file "metadata.json" \ --jar "target/flex-template-getting-started-1.0.jar" \ --env FLEX_TEMPLATE_JAVA_MAIN_CLASS="com.example.dataflow.FlexTemplateGettingStarted"
Ganti kode berikut:
- BUCKET_NAME: nama bucket Cloud Storage yang Anda buat sebelumnya
- LOCATION: lokasi
- PROJECT_ID: project ID Google Cloud
- REPOSITORY: nama repositori Artifact Registry yang Anda buat sebelumnya
Python
gcloud dataflow flex-template build gs://BUCKET_NAME/getting_started-py.json \ --image-gcr-path "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/getting-started-python:latest" \ --sdk-language "PYTHON" \ --flex-template-base-image "PYTHON3" \ --metadata-file "metadata.json" \ --py-path "." \ --env "FLEX_TEMPLATE_PYTHON_PY_FILE=getting_started.py" \ --env "FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE=requirements.txt"
Ganti kode berikut:
- BUCKET_NAME: nama bucket Cloud Storage yang Anda buat sebelumnya
- LOCATION: lokasi
- PROJECT_ID: project ID Google Cloud
- REPOSITORY: nama repositori Artifact Registry yang Anda buat sebelumnya
Go
Gunakan perintah
gcloud builds submit
untuk mem-build image Docker menggunakan Dockerfile dengan Cloud Build. Perintah ini akan membuat file dan mengirim file ke repositori Artifact Registry.gcloud builds submit --tag LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/dataflow/wordcount-go:latest .
Ganti kode berikut:
- LOCATION: lokasi
- PROJECT_ID: project ID Google Cloud
- REPOSITORY: nama repositori Artifact Registry yang Anda buat sebelumnya
Gunakan perintah
gcloud dataflow flex-template build
untuk membuat Template Flex bernamawordcount-go.json
di bucket Cloud Storage Anda.gcloud dataflow flex-template build gs://BUCKET_NAME/samples/dataflow/templates/wordcount-go.json \ --image "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/dataflow/wordcount-go:latest" \ --sdk-language "GO" \ --metadata-file "metadata.json"
Ganti BUCKET_NAME dengan nama bucket Cloud Storage yang Anda buat sebelumnya.
Jalankan Template Flex
Pada langkah ini, Anda menggunakan template untuk menjalankan tugas Dataflow.
Java
Gunakan perintah
gcloud dataflow flex-template run
untuk menjalankan tugas Dataflow yang menggunakan Template Flex.gcloud dataflow flex-template run "getting-started-`date +%Y%m%d-%H%M%S`" \ --template-file-gcs-location "gs://BUCKET_NAME/getting_started-java.json" \ --parameters output="gs://BUCKET_NAME/output-" \ --region "REGION"
Ganti kode berikut:
- BUCKET_NAME: nama bucket Cloud Storage yang Anda buat sebelumnya
- REGION: Region
Untuk melihat status tugas Dataflow di konsol Google Cloud, buka halaman Tugas Dataflow.
Jika tugas berhasil berjalan, tugas akan menulis output ke file bernama gs://BUCKET_NAME/output--00000-of-00001.txt
di bucket Cloud Storage Anda.
Python
Gunakan perintah
gcloud dataflow flex-template run
untuk menjalankan tugas Dataflow yang menggunakan Template Flex.gcloud dataflow flex-template run "getting-started-`date +%Y%m%d-%H%M%S`" \ --template-file-gcs-location "gs://BUCKET_NAME/getting_started-py.json" \ --parameters output="gs://BUCKET_NAME/output-" \ --region "REGION"
Ganti kode berikut:
- BUCKET_NAME: nama bucket Cloud Storage yang Anda buat sebelumnya
- REGION: Region
Untuk melihat status tugas Dataflow di konsol Google Cloud, buka halaman Tugas Dataflow.
Jika tugas berhasil berjalan, tugas akan menulis output ke file bernama gs://BUCKET_NAME/output--00000-of-00001.txt
di bucket Cloud Storage Anda.
Go
Gunakan perintah
gcloud dataflow flex-template run
untuk menjalankan tugas Dataflow yang menggunakan Template Flex.gcloud dataflow flex-template run "wordcount-go-`date +%Y%m%d-%H%M%S`" \ --template-file-gcs-location "gs://BUCKET_NAME/samples/dataflow/templates/wordcount-go.json" \ --parameters output="gs://BUCKET_NAME/samples/dataflow/templates/counts.txt" \ --region "REGION"
Ganti kode berikut:
- BUCKET_NAME: nama bucket Cloud Storage yang Anda buat sebelumnya
- REGION: Region
Untuk melihat status tugas Dataflow di konsol Google Cloud, buka halaman Tugas Dataflow.
Jika tugas berhasil berjalan, tugas akan menulis output ke file bernama gs://BUCKET_NAME/samples/dataflow/templates/count.txt
di bucket Cloud Storage Anda.
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
Menghapus project Google Cloud:
gcloud projects delete PROJECT_ID
Menghapus resource satu per satu
-
Menghapus bucket Cloud Storage dan semua objek di dalam bucket.
gcloud storage rm gs://BUCKET_NAME --recursive
-
Hapus repositori Artifact Registry.
gcloud artifacts repositories delete REPOSITORY \ --location=LOCATION
-
Cabut peran yang Anda berikan ke akun layanan default Compute Engine. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
roles/dataflow.admin
roles/dataflow.worker
roles/storage.objectAdmin
roles/artifactregistry.reader
gcloud projects remove-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=SERVICE_ACCOUNT_ROLE
-
Opsional: Cabut kredensial autentikasi yang Anda buat, dan hapus file kredensial lokal.
gcloud auth application-default revoke
-
Opsional: Cabut kredensial dari gcloud CLI.
gcloud auth revoke
Langkah selanjutnya
- Pelajari cara mengonfigurasi Template Flex.
- Lihat daftar template yang disediakan Google.