Membangun dan menjalankan Template Flex


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. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

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

  1. 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.
  2. Menginstal Google Cloud CLI.
  3. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  4. 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.

  5. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  6. 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
  7. Buat kredensial autentikasi lokal untuk Akun Google Anda:

    gcloud auth application-default login
  8. 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.
  9. Menginstal Google Cloud CLI.
  10. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  11. 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.

  12. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  13. 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
  14. Buat kredensial autentikasi lokal untuk Akun Google Anda:

    gcloud auth application-default login
  15. 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.
  16. 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 Anda
    • PROJECT_NUMBER nomor project Anda
    • SERVICE_ACCOUNT_ROLE: setiap peran individual

Menyiapkan lingkungan

Instal SDK dan persyaratan apa pun untuk lingkungan pengembangan Anda.

Java

  1. Download dan instal Java Development Kit (JDK) versi 11. Pastikan variabel lingkungan JAVA_HOME telah ditetapkan dan mengarah ke penginstalan JDK Anda.

  2. 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

  1. Clone java-docs-samples repository.

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
    
  2. Lihat contoh kode untuk tutorial ini.

    cd java-docs-samples/dataflow/flex-templates/getting_started
    
  3. 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

  1. Clone python-docs-samples repository.

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    
  2. Lihat contoh kode untuk tutorial ini.

    cd python-docs-samples/dataflow/flex-templates/getting_started
    

Go

  1. Clone golang-samples repository.

    git clone https://github.com/GoogleCloudPlatform/golang-samples.git
    
  2. Lihat contoh kode untuk tutorial ini.

    cd golang-samples/dataflow/flex-templates/wordcount
    
  3. 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.

  1. 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.
  2. 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

  1. 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
  2. Gunakan perintah gcloud dataflow flex-template build untuk membuat Template Flex bernama wordcount-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

  1. 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
  2. Untuk melihat status tugas Dataflow di konsol Google Cloud, buka halaman Tugas Dataflow.

    Buka Tugas

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

  1. 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
  2. Untuk melihat status tugas Dataflow di konsol Google Cloud, buka halaman Tugas Dataflow.

    Buka Tugas

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

  1. 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
  2. Untuk melihat status tugas Dataflow di konsol Google Cloud, buka halaman Tugas Dataflow.

    Buka Tugas

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

  1. Menghapus bucket Cloud Storage dan semua objek di dalam bucket.
    gcloud storage rm gs://BUCKET_NAME --recursive
  2. Hapus repositori Artifact Registry.
    gcloud artifacts repositories delete REPOSITORY \
        --location=LOCATION
  3. 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
  4. Opsional: Cabut kredensial autentikasi yang Anda buat, dan hapus file kredensial lokal.

    gcloud auth application-default revoke
  5. Opsional: Cabut kredensial dari gcloud CLI.

    gcloud auth revoke

Langkah selanjutnya