Alur kerja menggunakan fungsi Cloud Run

Sebelum memulai

Jika Anda belum melakukannya, siapkan Google Cloud project dan dua (2) bucket Cloud Storage.

Menyiapkan project

  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. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Dataproc, Compute Engine, Cloud Storage, and Cloud Run functions APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Instal Google Cloud CLI.

  6. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  7. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  8. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Dataproc, Compute Engine, Cloud Storage, and Cloud Run functions APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. Instal Google Cloud CLI.

  12. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  13. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init

Buat atau gunakan dua bucket Cloud Storage di project Anda

Anda memerlukan dua bucket Cloud Storage di project Anda: satu untuk file input dan satu lagi untuk output.

  1. Di konsol Google Cloud , buka halaman Buckets Cloud Storage.

    Buka Buckets

  2. Klik Create.
  3. Di halaman Buat bucket, masukkan informasi bucket Anda. Untuk melanjutkan ke langkah berikutnya, klik Lanjutkan.
    1. Di bagian Mulai, lakukan tindakan berikut:
      • Masukkan nama yang unik secara global yang memenuhi persyaratan penamaan bucket.
      • Untuk menambahkan label bucket, luaskan bagian Label (), klik Tambahkan label, lalu tentukan key dan value untuk label Anda.
    2. Di bagian Pilih tempat untuk menyimpan data Anda, lakukan tindakan berikut:
      1. Pilih Jenis lokasi.
      2. Pilih lokasi tempat data bucket Anda disimpan secara permanen dari menu drop-down Location type.
        • Jika memilih jenis lokasi dual-region, Anda juga dapat memilih untuk mengaktifkan replikasi turbo dengan menggunakan kotak centang yang relevan.
      3. Untuk menyiapkan replikasi lintas bucket, pilih Add cross-bucket replication via Storage Transfer Service dan ikuti langkah-langkah berikut:

        Menyiapkan replikasi lintas bucket

        1. Di menu Bucket, pilih bucket.
        2. Di bagian Setelan replikasi, klik Konfigurasi untuk mengonfigurasi setelan bagi tugas replikasi.

          Panel Konfigurasi replikasi lintas bucket akan muncul.

          • Untuk memfilter objek yang akan direplikasi menurut awalan nama objek, masukkan awalan yang ingin Anda sertakan atau kecualikan objeknya, lalu klik Tambahkan awalan.
          • Untuk menetapkan kelas penyimpanan bagi objek yang direplikasi, pilih kelas penyimpanan dari menu Kelas penyimpanan. Jika Anda melewati langkah ini, objek yang direplikasi akan menggunakan kelas penyimpanan bucket tujuan secara default.
          • Klik Done.
    3. Di bagian Choose how to store your data, lakukan tindakan berikut:
      1. Pilih kelas penyimpanan default untuk bucket atau Autoclass untuk pengelolaan kelas penyimpanan otomatis untuk data bucket Anda.
      2. Untuk mengaktifkan namespace hierarkis, di bagian Optimalkan penyimpanan untuk beban kerja intensif data, pilih Aktifkan namespace hierarkis di bucket ini.
    4. Di bagian Pilih cara mengontrol akses ke objek, pilih apakah bucket Anda menerapkan pencegahan akses publik atau tidak, lalu pilih metode kontrol akses untuk objek bucket Anda.
    5. Di bagian Pilih cara melindungi data objek, lakukan tindakan berikut:
      • Pilih salah satu opsi di bagian Perlindungan data yang ingin Anda tetapkan untuk bucket Anda.
        • Untuk mengaktifkan penghapusan sementara, klik kotak centang Kebijakan penghapusan sementara (Untuk pemulihan data), dan tentukan jumlah hari Anda ingin mempertahankan objek setelah penghapusan.
        • Untuk menyetel Pembuatan Versi Objek, klik kotak centang Pembuatan versi objek (Untuk kontrol versi), dan tentukan jumlah maksimum versi per objek dan jumlah hari setelah versi lama berakhir.
        • Untuk mengaktifkan kebijakan retensi pada objek dan bucket, klik kotak centang Retensi (Untuk kepatuhan), lalu lakukan hal berikut:
          • Untuk mengaktifkan Penguncian Retensi Objek, centang kotak Aktifkan retensi objek.
          • Untuk mengaktifkan Bucket Lock, centang kotak Setel kebijakan retensi bucket, lalu pilih satuan waktu dan durasi untuk periode retensi data Anda.
      • Untuk memilih cara mengenkripsi data objek Anda, luaskan bagian Enkripsi data (), lalu pilih metode Enkripsi data.
  4. Klik Create.

Buat template workflow

Untuk membuat dan menentukan template alur kerja, salin dan jalankan perintah berikut di jendela terminal lokal atau di Cloud Shell.

  1. Buat template alur kerja.
      gcloud dataproc workflow-templates create wordcount-template \
          --region=us-central1
      
  2. Tambahkan tugas penghitungan jumlah kata ke template alur kerja.
    1. Tentukan output-bucket-name Anda sebelum menjalankan perintah (fungsi Anda akan menyediakan bucket input). Setelah Anda memasukkan output-bucket-name, argumen bucket output akan terbaca sebagai berikut: gs://your-output-bucket/wordcount-output".
    2. ID langkah "count" diperlukan, dan mengidentifikasi tugas Hadoop yang ditambahkan.
                gcloud dataproc workflow-templates add-job hadoop \
                    --workflow-template=wordcount-template \
                    --step-id=count \
                    --jar=file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar \
                    --region=us-central1 \
                    -- wordcount gs://input-bucket gs://output-bucket-name/wordcount-output
              
  3. Gunakan cluster terkelola, node tunggal untuk menjalankan alur kerja. Managed Service for Apache Spark akan membuat cluster, menjalankan alur kerja di cluster tersebut, lalu menghapus cluster saat alur kerja selesai.
        gcloud dataproc workflow-templates set-managed-cluster wordcount-template \
            --cluster-name=wordcount \
            --single-node \
            --region=us-central1
        
  4. Klik nama wordcount-template di halaman Managed Service for Apache Spark Workflows di konsol Google Cloud untuk membuka halaman Workflow template details. Konfirmasi atribut wordcount-template. Halaman detail template alur kerja

Membuat parameter template alur kerja

Parameterkan variabel bucket input untuk diteruskan ke template alur kerja.

  1. Ekspor template alur kerja ke file teks wordcount.yaml untuk parameterisasi.
    gcloud dataproc workflow-templates export wordcount-template \
        --destination=wordcount.yaml \
        --region=us-central1
    
  2. Dengan menggunakan editor teks, buka wordcount.yaml, lalu tambahkan blok parameters ke akhir file YAML sehingga INPUT_BUCKET_URI Cloud Storage dapat diteruskan sebagai args[1] ke biner wordcount saat alur kerja dipicu.

    Contoh file YAML yang diekspor ditampilkan di bawah. Anda dapat menggunakan salah satu dari dua pendekatan berikut untuk memperbarui template:

    1. Salin lalu tempel seluruh file untuk menggantikan wordcount.yaml yang diekspor setelah mengganti your-output_bucket dengan nama bucket output Anda, ATAU
    2. Salin, lalu tempel hanya bagian parameters ke bagian akhir file wordcount.yaml yang diekspor.
    .
    jobs:
    - hadoopJob:
        args:
        - wordcount
        - gs://input-bucket
        - gs://your-output-bucket/wordcount-output
        mainJarFileUri: file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar
      stepId: count
    placement:
      managedCluster:
        clusterName: wordcount
        config:
          softwareConfig:
            properties:
              dataproc:dataproc.allow.zero.workers: 'true'
    parameters:
    - name: INPUT_BUCKET_URI
      description: wordcount input bucket URI
      fields:
      - jobs['count'].hadoopJob.args[1]
    
  3. Impor file teks wordcount.yaml yang diparameterkan. Ketik 'Y'a saat diminta untuk menimpa template.
    gcloud dataproc workflow-templates import  wordcount-template \
        --source=wordcount.yaml \
        --region=us-central1
    

Membuat Cloud Function

  1. Buka halaman Cloud Run functions di konsolGoogle Cloud , lalu klik CREATE FUNCTION.

  2. Di halaman Create function, masukkan atau pilih informasi berikut:

    1. Nama: jumlah kata
    2. Memori yang dialokasikan: Pertahankan pilihan default.
    3. Pemicu:
      • Cloud Storage
      • Jenis Peristiwa: Selesaikan/Buat
      • Bucket: Pilih bucket input Anda (lihat Membuat bucket Cloud Storage di project Anda). Saat file ditambahkan ke bucket ini, fungsi akan memicu alur kerja. Alur kerja akan menjalankan aplikasi wordcount, yang akan memproses semua file teks dalam bucket.
    4. Kode sumber:

      • Editor inline
      • Runtime: Node.js 8
      • Tab INDEX.JS: Ganti cuplikan kode default dengan kode berikut, lalu edit baris const projectId untuk memberikan -your-project-id- (tanpa "-" di awal atau akhir).
      const dataproc = require('@google-cloud/dataproc').v1;
      
      exports.startWorkflow = (data) => {
       const projectId = '-your-project-id-'
       const region = 'us-central1'
       const workflowTemplate = 'wordcount-template'
      
      const client = new dataproc.WorkflowTemplateServiceClient({
         apiEndpoint: `${region}-dataproc.googleapis.com`,
      });
      
      const file = data;
      console.log("Event: ", file);
      
      const inputBucketUri = `gs://${file.bucket}/${file.name}`;
      
      const request = {
        name: client.projectRegionWorkflowTemplatePath(projectId, region, workflowTemplate),
        parameters: {"INPUT_BUCKET_URI": inputBucketUri}
      };
      
      client.instantiateWorkflowTemplate(request)
        .then(responses => {
          console.log("Launched Dataproc Workflow:", responses[1]);
        })
        .catch(err => {
          console.error(err);
        });
      };
      
      • Tab PACKAGE.JSON: Ganti cuplikan kode default dengan kode berikut.
      {
        "name": "dataproc-workflow",
        "version": "1.0.0",
        "dependencies":{ "@google-cloud/dataproc": ">=1.0.0"}
      }
      
      • Fungsi yang akan dieksekusi: Masukkan: "startWorkflow".
    5. Klik BUAT.

Menguji fungsi

  1. Salin file publik rose.txt ke bucket Anda untuk memicu fungsi. Masukkan your-input-bucket-name (bucket yang digunakan untuk memicu fungsi Anda) dalam perintah.

    gcloud storage cp gs://pub/shakespeare/rose.txt gs://your-input-bucket-name
    

  2. Tunggu 30 detik, lalu jalankan perintah berikut untuk memverifikasi bahwa fungsi berhasil diselesaikan.

    gcloud functions logs read wordcount
    
    ...
    Function execution took 1348 ms, finished with status: 'ok'
    

  3. Untuk melihat log fungsi dari halaman daftar Functions di konsol Google Cloud , klik nama fungsi wordcount, lalu klik LIHAT LOG di halaman Function details.

  4. Anda dapat melihat folder wordcount-output di bucket output dari halaman Storage browser di konsolGoogle Cloud .

  5. Setelah alur kerja selesai, detail tugas akan tetap ada di konsolGoogle Cloud . Klik tugas count... yang tercantum di halaman Tugas Managed Service for Apache Spark untuk melihat detail tugas alur kerja.

Pembersihan

Alur kerja dalam tutorial ini menghapus cluster terkelolanya saat alur kerja selesai. Untuk menghindari biaya berulang, Anda dapat menghapus resource lain yang terkait dengan tutorial ini.

Menghapus project

  1. Di Konsol Google Cloud , buka halaman Manage resources.

    Buka Kelola resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Menghapus bucket Cloud Storage

  1. Di konsol Google Cloud , buka halaman Buckets Cloud Storage.

    Buka Buckets

  2. Klik kotak centang untuk bucket yang ingin Anda dihapus.
  3. Untuk menghapus bucket, klik Hapus, lalu ikuti petunjuk.

Menghapus template alur kerja Anda

gcloud dataproc workflow-templates delete wordcount-template \
    --region=us-central1

Menghapus Cloud Function

Buka halaman Cloud Run functions di konsol Google Cloud , pilih kotak di sebelah kiri fungsi wordcount, lalu klik Delete.

Langkah berikutnya