Dataproc di Google Compute Engine

1. Pengantar - Google Dataproc

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

Dataproc tersedia dalam tiga varian:

  • Dataproc Serverless dapat digunakan untuk 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 workload Spark berbasis YARN selain di alat open source seperti Flink dan Presto. Anda dapat menyesuaikan cluster berbasis cloud dengan penskalaan vertikal atau horizontal sebanyak yang diinginkan, 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 API layanan Dataproc di konsol. Setelah diaktifkan, telusuri "Dataproc" di kotak penelusuran, lalu klik Create Cluster.

Pilih Cluster on 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 wilayah tertentu. Anda juga dapat memilih Zona, tetapi Dataproc memberikan kemampuan untuk otomatis memilih Zona untuk Anda. Untuk codelab ini, pilih "us-central1" dan "us-central1-c"..
  • Pilih "Standar" jenis cluster tertentu. Hal ini memastikan bahwa hanya ada satu node master.
  • Pada tab Configure nodes, konfirmasi bahwa jumlah worker yang dibuat akan dua.
  • Di bagian Sesuaikan cluster, centang kotak di samping Aktifkan Gateway Komponen. Hal ini memungkinkan akses ke antarmuka web di cluster, termasuk UI Spark, Yarn Node Manager, dan notebook Jupyter.
  • Di Optional Components, pilih Jupyter Notebook. Ini mengonfigurasi cluster dengan server notebook Jupyter.
  • Biarkan yang lainnya apa adanya, lalu klik Create Cluster.

Tindakan ini akan menjalankan cluster Dataproc.

3. Luncurkan cluster dan SSH ke dalamnya

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

7332f1c2cb25807d.jpeg

Klik tab VM Instance untuk melihat node master dan dua worker node 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 INTERFACES WEB.

6398f71d6293d6ff.jpeg

Ini menunjukkan antarmuka web yang tersedia, termasuk Jupyter. Klik Jupyter untuk membuka notebook Jupyter. Anda dapat menggunakannya 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 kirim 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 sampel Spark DataFrame dan menulisnya 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 .....")

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

5767fc7c50b706d3.jpeg

Berikan ID Pekerjaan dan wilayah. Pilih cluster dan berikan lokasi GCS untuk skrip Spark yang Anda salin. Tugas ini akan dijalankan sebagai tugas batch Spark di Dataproc.

Di bagian Properti, tambahkan kunci spark.submit.deployMode dan nilai client untuk memastikan bahwa driver berjalan di node master Dataproc, bukan di node pekerja. Klik Kirim 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 bawah tab Monitoring.

bdec2f3ae1055f9.jpeg

Sekarang setelah tabel Hive dibuat, kirimkan tugas kueri Hive lain untuk memilih isi tabel dan ditampilkan di konsol.

Buat tugas lain dengan properti berikut:

c16f02d1b3afaa27.jpeg

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

Kirim tugas, dengan tetap mempertahankan parameter lainnya sebagai default.

e242e50bc2519bf4.jpeg

Perhatikan bagaimana HiveQL memilih semua kumpulan data dan ditampilkan di konsol.

6. Penskalaan otomatis

Autoscaling adalah tugas memperkirakan waktu yang "tepat" jumlah worker node cluster untuk suatu workload.

Dataproc AutoscalingPolicies API menyediakan mekanisme untuk mengotomatiskan pengelolaan resource cluster dan mengaktifkan penskalaan otomatis VM worker cluster. Kebijakan Penskalaan Otomatis adalah konfigurasi yang dapat digunakan kembali yang menjelaskan cara pekerja cluster yang menggunakan kebijakan penskalaan otomatis harus melakukan penskalaan. Kebijakan ini menentukan batas penskalaan, frekuensi, dan agresivitas untuk memberikan kontrol mendetail atas resource cluster selama masa aktif 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 menjalankan cluster Dataproc.

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

e39cc34245af3f01.jpeg

Saat membuat cluster Dataproc dari konsol, kami 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 Delete 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 Delete untuk menghapus cluster.

Pada dialog konfirmasi, klik Delete untuk menghapus cluster.

52065de928ab52e7.jpeg