Dataproc di Google Compute Engine

1. Pengantar - Google Dataproc

Dataproc adalah layanan yang terkelola sepenuhnya dan sangat skalabel untuk menjalankan Apache Spark, Apache Flink, Presto, serta banyak alat dan framework open source lainnya. Gunakan Dataproc untuk modernisasi data lake, ETL / ELT, dan data science yang aman, dalam skala global. Dataproc juga terintegrasi sepenuhnya dengan beberapa layanan Google Cloud, termasuk BigQuery, Cloud Storage, Vertex AI, dan Dataplex.

Dataproc tersedia dalam tiga jenis:

  • Dataproc Serverless memungkinkan Anda menjalankan tugas PySpark tanpa perlu mengonfigurasi infrastruktur dan penskalaan otomatis. Dataproc Serverless mendukung workload dan sesi / notebook batch PySpark.
  • Dataproc di Google Compute Engine memungkinkan Anda mengelola cluster Hadoop YARN untuk beban kerja Spark berbasis YARN selain alat open source seperti Flink dan Presto. Anda dapat menyesuaikan cluster berbasis cloud dengan penskalaan vertikal atau horizontal sebanyak yang Anda inginkan, termasuk penskalaan otomatis.
  • Dataproc di Google Kubernetes Engine memungkinkan Anda mengonfigurasi cluster virtual Dataproc di infrastruktur GKE untuk mengirimkan tugas Spark, PySpark, SparkR, atau Spark SQL.

2. Membuat Cluster Dataproc di VPC Google Cloud

Pada langkah ini, Anda akan membuat cluster Dataproc di Google Cloud menggunakan konsol Google Cloud.

Sebagai langkah pertama, aktifkan Dataproc Service API di konsol. Setelah diaktifkan, telusuri "Dataproc" di kotak penelusuran, lalu klik Create Cluster.

Pilih Cluster di Compute Engine untuk menggunakan VM Google Compute Engine(GCE) sebagai infrastruktur dasar untuk menjalankan cluster Dataproc.

a961b2e8895e88da.jpeg

Anda sekarang berada di halaman Pembuatan Cluster.

9583c91204a09c12.jpeg

Di halaman ini:

  • Berikan nama unik untuk cluster.
  • Pilih region tertentu. Anda juga dapat memilih Zona, tetapi Dataproc menyediakan kemampuan untuk memilihnya secara otomatis untuk Anda. Untuk codelab ini, pilih "us-central1" dan "us-central1-c".
  • Pilih jenis cluster "Standard". Hal ini memastikan bahwa ada satu node master.
  • Di tab Configure nodes, konfirmasi bahwa jumlah pekerja yang dibuat adalah dua.
  • Di bagian Customize cluster, centang kotak di samping Enable Component Gateway. Hal ini memungkinkan akses ke antarmuka web di cluster, termasuk UI Spark, Yarn Node Manager, dan notebook Jupyter.
  • Di Optional Components, pilih Jupyter Notebook. Tindakan ini mengonfigurasi cluster dengan server notebook Jupyter.
  • Biarkan semuanya seperti apa adanya, lalu klik Create Cluster.

Tindakan ini akan mengaktifkan cluster Dataproc.

3. Luncurkan cluster dan lakukan SSH ke cluster tersebut

Setelah status cluster berubah menjadi Running, klik nama cluster dari konsol Dataproc.

7332f1c2cb25807d.jpeg

Klik tab VM Instance untuk melihat node master dan dua node worker cluster.

25be1578e00f669f.jpeg

Klik SSH di samping node master untuk login ke node master.

2810ffd97f315bdb.jpeg

Jalankan perintah hdfs untuk melihat struktur direktori.

hadoop_commands_example

sudo hadoop fs -ls /
sudo hadoop version
sudo hadoop fs -mkdir /test51 
sudo hadoop fs -ls /

4. Antarmuka Web dan Gateway Komponen

Dari konsol cluster Dataproc, klik nama cluster Anda, lalu klik tab WEB INTERFACES.

6398f71d6293d6ff.jpeg

Bagian ini menampilkan antarmuka web yang tersedia, termasuk Jupyter. Klik Jupyter untuk membuka notebook Jupyter. Anda dapat menggunakan ini untuk membuat notebook di PySpark yang disimpan di GCS. untuk menyimpan notebook Anda di Google Cloud Storage dan membuka notebook PySpark untuk digunakan dalam codelab ini.

5. Memantau dan Mengamati Tugas Spark

Setelah cluster Dataproc aktif dan berjalan, buat tugas batch PySpark dan kirimkan tugas ke cluster Dataproc.

Buat bucket Google Cloud Storage (GCS) untuk menyimpan skrip PySpark. Pastikan untuk membuat bucket di region yang sama dengan cluster Dataproc.

679fd2f76806f4e2.jpeg

Setelah bucket GCS dibuat, salin file berikut ke dalam bucket ini.

https://raw.githubusercontent.com/diptimanr/spark-on-gce/main/test-spark-1.py

Skrip ini membuat contoh DataFrame Spark dan menuliskannya sebagai tabel Hive.

hive_job.py

from pyspark.sql import SparkSession
from datetime import datetime, date
from pyspark.sql import Row

spark = SparkSession.builder.master("local").enableHiveSupport().getOrCreate()

df = spark.createDataFrame([ (1, 2., 'string1', date(2000, 1, 1), datetime(2000, 1, 1, 12, 0)),
        (2, 3., 'string2', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)), (3, 4., 'string3', date(2000, 3, 1), datetime(2000, 1, 3, 12, 0))
    ], schema='a long, b double, c string, d date, e timestamp')
print("..... Writing data .....")
df.write.mode("overwrite").saveAsTable("test_table_1")
print("..... Complete .....")

Kirimkan skrip ini sebagai tugas batch Spark di Dataproc. Klik Jobs di menu navigasi kiri, lalu klik Submit Job

5767fc7c50b706d3.jpeg

Berikan Job ID dan region. Pilih cluster Anda dan berikan lokasi GCS skrip Spark yang Anda salin. Tugas ini akan berjalan sebagai tugas batch Spark di Dataproc.

Di bagian Properties, tambahkan kunci spark.submit.deployMode dan nilai client untuk memastikan bahwa driver berjalan di node master Dataproc, bukan di node pekerja. Klik Submit untuk mengirimkan tugas batch ke Dataproc.

a7ca90f5132faa31.jpeg

Skrip Spark akan membuat Dataframe dan menulis ke tabel Hive test_table_1.

Setelah tugas berhasil dijalankan, Anda dapat melihat pernyataan cetak konsol di tab Monitoring.

bdec2f3ae1055f9.jpeg

Setelah tabel Hive dibuat, kirimkan tugas kueri Hive lain untuk memilih konten tabel dan menampilkannya di konsol.

Buat tugas lain dengan properti berikut:

c16f02d1b3afaa27.jpeg

Perhatikan bahwa Job Type disetel ke Hive dan jenis sumber kueri adalah Query Text, yang berarti kita akan menulis seluruh pernyataan HiveQL dalam kotak teks Query Text.

Kirimkan tugas, dengan tetap menggunakan nilai default untuk parameter lainnya.

e242e50bc2519bf4.jpeg

Perhatikan cara HiveQL memilih semua catatan dan menampilkannya di konsol.

6. Penskalaan otomatis

Penskalaan otomatis adalah tugas memperkirakan jumlah node worker cluster yang "tepat" untuk workload.

AutoscalingPolicies API Dataproc menyediakan mekanisme untuk mengotomatiskan pengelolaan resource cluster serta memungkinkan penskalaan otomatis worker VM cluster. Kebijakan Penskalaan Otomatis adalah konfigurasi yang dapat digunakan kembali yang menjelaskan cara menskalakan worker cluster menggunakan kebijakan penskalaan otomatis. Fitur ini menentukan batas, frekuensi, dan agresivitas penskalaan untuk memberikan kontrol terperinci atas resource cluster selama masa berlaku cluster.

Kebijakan penskalaan otomatis Dataproc ditulis menggunakan file YAML dan file YAML ini diteruskan dalam perintah CLI untuk membuat cluster atau dipilih dari bucket GCS saat cluster dibuat dari Konsol Cloud.

Berikut adalah contoh kebijakan penskalaan otomatis Dataproc :

policy.yaml

workerConfig:
  minInstances: 10
  maxInstances: 10
secondaryWorkerConfig:
  maxInstances: 50
basicAlgorithm:
  cooldownPeriod: 4m
  yarnConfig:
    scaleUpFactor: 0.05
    scaleDownFactor: 1.0
    gracefulDecommissionTimeout: 1h

7. Mengonfigurasi Komponen Opsional Dataproc

Tindakan ini akan mengaktifkan cluster Dataproc.

Saat Anda membuat cluster Dataproc, komponen ekosistem Apache Hadoop standar akan otomatis diinstal di cluster (lihat Daftar Versi Dataproc). Anda dapat menginstal komponen tambahan, yang disebut Komponen Opsional di cluster saat membuat cluster.

e39cc34245af3f01.jpeg

Saat membuat cluster Dataproc dari konsol, kita telah mengaktifkan komponen opsional dan memilih Jupyter Notebook sebagai komponen opsional.

8. Membersihkan resource

Untuk membersihkan cluster, klik Stop setelah memilih cluster dari konsol Dataproc. Setelah cluster berhenti, klik Hapus untuk menghapus cluster.

Setelah cluster Dataproc dihapus, hapus bucket GCS tempat kode disalin.

Untuk membersihkan resource dan menghentikan penagihan yang tidak diinginkan, cluster Dataproc harus dihentikan terlebih dahulu, lalu dihapus.

Sebelum menghentikan dan menghapus cluster, pastikan semua data yang ditulis ke penyimpanan HDFS disalin ke GCS untuk penyimpanan yang tahan lama.

Untuk menghentikan cluster, klik Stop.

52065de928ab52e7.jpeg

Setelah cluster berhenti, klik Hapus untuk menghapus cluster.

Pada dialog konfirmasi, klik Hapus untuk menghapus cluster.

52065de928ab52e7.jpeg