Managed Service untuk Apache Spark

1. Pengantar - Managed Service untuk Apache Spark

Managed Service untuk Apache Spark adalah layanan yang terkelola sepenuhnya dan sangat skalabel untuk menjalankan Apache Spark, Apache Flink, Presto, dan banyak alat serta framework open source lainnya. Gunakan Managed Service untuk Apache Spark dalam modernisasi data lake, ETL / ELT, dan ilmu data yang aman, dalam skala planet. Managed Service untuk Apache Spark juga terintegrasi sepenuhnya dengan beberapa layanan Google Cloud, termasuk BigQuery, Cloud Storage, Gemini Enterprise Agent Engine, dan Knowledge Catalog.

Managed Service untuk Apache Spark tersedia dalam dua mode deployment:

  • Managed Apache Spark serverless memungkinkan Anda menjalankan tugas PySpark tanpa perlu mengonfigurasi infrastruktur dan penskalaan otomatis. Apache Spark terkelola mendukung workload batch dan sesi / notebook PySpark.
  • Cluster Apache Spark terkelola memungkinkan Anda mengelola cluster Hadoop YARN untuk workload 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.

2. Membuat Cluster Managed Apache Spark di VPC Google Cloud

Pada langkah ini, Anda akan membuat cluster Managed Apache Spark di Google Cloud menggunakan konsol Google Cloud.

Sebagai langkah pertama, aktifkan Managed Apache Spark Service API di konsol. Setelah diaktifkan, telusuri "Managed Apache Spark" 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 Managed Apache Spark.

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 Managed Apache Spark 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, pastikan jumlah pekerja yang dibuat adalah dua.
  • Di bagian Sesuaikan cluster, centang kotak di samping Aktifkan Component Gateway. Tindakan ini akan mengaktifkan 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 meluncurkan cluster Managed Apache Spark.

3. Luncurkan cluster dan lakukan SSH ke cluster

Setelah status cluster berubah menjadi Running, klik nama cluster dari konsol Managed Apache Spark.

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 Managed Apache Spark cluster, klik nama cluster Anda, lalu klik tab WEB INTERFACES.

6398f71d6293d6ff.jpeg

Ini akan 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 Managed Apache Spark siap dan berjalan, buat tugas batch PySpark dan kirimkan tugas ke cluster Managed Apache Spark.

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

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 Managed Apache Spark. Klik Jobs di menu navigasi kiri, lalu klik Submit Job

5767fc7c50b706d3.jpeg

BerikanID pekerjaan dan region. Pilih cluster Anda dan berikan lokasi GCS skrip Spark yang Anda salin. Tugas ini akan berjalan sebagai tugas batch Spark di Managed Apache Spark.

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

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 mempertahankan parameter lainnya sebagai default.

e242e50bc2519bf4.jpeg

Perhatikan cara HiveQL memilih semua catatan dan menampilkannya di konsol.

6. Penskalaan otomatis

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

Managed Apache Spark AutoscalingPolicies API 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 Managed Apache Spark 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 Managed Apache Spark :

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 Apache Spark Terkelola

Tindakan ini akan meluncurkan cluster Managed Apache Spark.

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

e39cc34245af3f01.jpeg

Saat membuat cluster Managed Apache Spark 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 Managed Apache Spark. Setelah cluster berhenti, klik Hapus untuk menghapus cluster.

Setelah cluster Managed Apache Spark dihapus, hapus bucket GCS tempat kode disalin.

Untuk membersihkan resource dan menghentikan penagihan yang tidak diinginkan, cluster Managed Apache Spark 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