Konektor Cloud Storage

Library Java open source konektor Cloud Storage memungkinkan Anda menjalankan tugas Apache Hadoop atau Apache Spark langsung pada data di Cloud Storage.

Lightning Engine meningkatkan konektivitas ke Cloud Storage untuk mengoptimalkan performa mesin native-nya. Konektor Cloud Storage yang ditingkatkan meminimalkan operasi metadata untuk mengurangi biaya, sementara file output committer yang dioptimalkan meningkatkan performa dan keandalan untuk workload Spark. Lengkapi formulir Akses Awal untuk meminta akses awal ke fitur pratinjau pribadi ini.

Manfaat konektor Cloud Storage

  • Akses data langsung: Simpan data Anda di Cloud Storage dan akses secara langsung. Anda tidak perlu mentransfernya ke HDFS terlebih dahulu.
  • Kompatibilitas HDFS: Anda dapat mengakses data di Cloud Storage menggunakan awalan gs://, bukan hdfs://.
  • Interoperabilitas: Menyimpan data di Cloud Storage memungkinkan interoperabilitas yang lancar antara Spark, Hadoop, dan layanan Google.
  • Aksesibilitas data: Saat Anda menonaktifkan cluster Hadoop, tidak seperti HDFS, Anda tetap memiliki akses ke data Anda di Cloud Storage.
  • Ketersediaan data yang tinggi: Data yang disimpan di Cloud Storage sangat tersedia dan direplikasi secara global tanpa kehilangan performa.
  • Tidak ada overhead pengelolaan penyimpanan: Tidak seperti HDFS, Cloud Storage tidak memerlukan pemeliharaan rutin, seperti memeriksa sistem file, atau mengupgrade atau melakukan rollback ke versi sistem file sebelumnya.
  • Startup cepat: Di HDFS, tugas MapReduce tidak dapat dimulai hingga NameNode keluar dari mode aman, sebuah proses yang dapat memerlukan waktu dari beberapa detik hingga beberapa menit, bergantung pada ukuran dan status data Anda. Dengan Cloud Storage, Anda dapat memulai tugas segera setelah node tugas dimulai, sehingga menghasilkan penghematan biaya yang signifikan seiring waktu.

Penyiapan konektor di cluster Managed Service untuk Apache Spark

Konektor Cloud Storage diinstal secara default di semua node cluster Managed Service untuk Apache Spark di direktori /usr/local/share/google/managed-spark/lib/. Subbagian berikut menjelaskan langkah-langkah yang dapat Anda lakukan untuk menyelesaikan penyiapan konektor di cluster Managed Service untuk Apache Spark.

Akun layanan VM

Saat menjalankan konektor di node cluster Managed Service untuk Apache Spark dan VM Compute Engine lainnya, properti google.cloud.auth.service.account.enable ditetapkan ke false secara default, yang berarti Anda tidak perlu mengonfigurasi kredensial akun layanan VM untuk konektor—kredensial akun layanan VM disediakan oleh server metadata VM.

Akun layanan VM Managed Service untuk Apache Spark harus memiliki izin untuk mengakses bucket Cloud Storage Anda.

Jika Anda menggunakan akun layanan kustom dengan cluster tugas Spark 2.2+: Jika Anda memilih akun layanan kustom saat membuat cluster versi image Managed Service untuk Apache Spark 2.2+ yang menjadi tujuan pengiriman tugas Spark, dan jika tugas Spark Anda membaca dari atau menulis ke Cloud Storage, untuk menghindari masalah izin yang dapat menyebabkan kegagalan tugas, tambahkan konfigurasi berikut (ditampilkan dalam huruf tebal) ke kode pembuatan sesi Spark Anda:

spark = SparkSession.builder \
.appName(appName) \
.config("fs.gs.auth.type", "SERVICE_ACCOUNT_JSON_KEYFILE") \
.config("fs.gs.auth.service.account.json.keyfile", "path/to/your/keyfile.json") \
.getOrCreate()

Untuk memverifikasi bahwa izin telah ditetapkan dengan benar, pastikan akun layanan kustom memiliki izin storage.objects.get dan storage.objects.create:

  1. Lihat akses saat ini untuk mencantumkan peran yang diberikan ke akun layanan kustom.
  2. Temukan peran atau izin untuk mencari izin yang terkait dengan peran.

Versi konektor yang dipilih pengguna

Versi konektor Cloud Storage default yang digunakan dalam image terbaru yang diinstal di cluster Managed Service untuk Apache Spark tercantum di halaman versi image. Jika aplikasi Anda bergantung pada versi konektor non-default yang di-deploy di cluster, Anda dapat melakukan salah satu tindakan berikut untuk menggunakan versi konektor yang dipilih:

  • Buat cluster dengan flag --metadata=GCS_CONNECTOR_VERSION=x.y.z, yang mengupdate konektor yang digunakan oleh aplikasi yang berjalan di cluster ke versi konektor yang ditentukan.
  • Sertakan dan pindahkan class konektor dan dependensi konektor untuk versi yang Anda gunakan ke dalam jar aplikasi Anda. Relokasi diperlukan untuk menghindari konflik antara versi konektor yang Anda deploy dan versi konektor default yang diinstal di cluster Managed Service untuk Apache Spark. Lihat juga contoh relokasi dependensi Maven.

Penyiapan konektor di cluster non-Managed Service untuk Apache Spark

Anda dapat melakukan langkah-langkah berikut untuk menyiapkan konektor Cloud Storage di cluster non-Managed Service untuk Apache Spark, seperti cluster Apache Hadoop atau Spark yang Anda gunakan untuk memindahkan data HDFS lokal ke Cloud Storage.

  1. Download konektor.

  2. Instal konektor.

    Ikuti petunjuk GitHub untuk menginstal, mengonfigurasi, dan menguji konektor Cloud Storage.

Penggunaan konektor

Anda dapat menggunakan konektor untuk mengakses data Cloud Storage dengan cara berikut:

Penggunaan Java

Konektor Cloud Storage memerlukan Java 8.

Berikut adalah contoh bagian pengelolaan dependensi POM Maven untuk konektor Cloud Storage. Untuk informasi tambahan, lihat Pengelolaan Dependensi.

<dependency>
    <groupId>com.google.cloud.bigdataoss</groupId>
    <artifactId>gcs-connector</artifactId>
    <version>hadoopX-X.X.XCONNECTOR VERSION</version>
    <scope>provided</scope>
</dependency>

Untuk versi berbayang:

<dependency>
    <groupId>com.google.cloud.bigdataoss</groupId>
    <artifactId>gcs-connector</artifactId>
    <version>hadoopX-X.X.XCONNECTOR VERSION</version>
    <scope>provided</scope>
    <classifier>shaded</classifier>
</dependency>

Dukungan konektor

Konektor Cloud Storage didukung oleh Google Cloud untuk digunakan dengan produk dan kasus penggunaanGoogle Cloud . Jika digunakan dengan Managed Service untuk Apache Spark, fitur ini didukung pada tingkat yang sama dengan Managed Service untuk Apache Spark. Untuk mengetahui informasi selengkapnya, lihat Mendapatkan dukungan.

Terhubung ke Cloud Storage menggunakan gRPC

Secara default, konektor Cloud Storage di Managed Service untuk Apache Spark menggunakan Cloud Storage JSON API. Bagian ini menunjukkan cara mengaktifkan konektor Cloud Storage untuk menggunakan gRPC.

Pertimbangan penggunaan

Penggunaan konektor Cloud Storage dengan gRPC mencakup pertimbangan berikut:

  • Lokasi bucket regional: gRPC dapat meningkatkan latensi baca hanya jika VM Compute Engine dan bucket Cloud Storage berada di region Compute Engine yang sama.
  • Tugas yang memerlukan banyak operasi baca: gRPC dapat menawarkan latensi baca yang lebih baik untuk operasi baca yang berjalan lama, dan dapat membantu workload yang memerlukan banyak operasi baca. Hal ini tidak direkomendasikan untuk aplikasi yang membuat saluran gRPC, menjalankan komputasi singkat, lalu menutup saluran.
  • Permintaan yang tidak diautentikasi: gRPC tidak mendukung permintaan yang tidak diautentikasi.

Persyaratan

Persyaratan berikut berlaku saat menggunakan gRPC dengan konektor Cloud Storage:

  • Jaringan VPC cluster Managed Service untuk Apache Spark Anda harus mendukung konektivitas langsung. Artinya, rute dan aturan firewall jaringan harus mengizinkan traffic egress untuk menjangkau 34.126.0.0/18 dan 2001:4860:8040::/42.

  • Saat membuat cluster Managed Service untuk Apache Spark, Anda harus menggunakan konektor Cloud Storage versi 2.2.23 atau yang lebih baru dengan versi image 2.1.56+ atau konektor Cloud Storage versi v3.0.0 atau yang lebih baru dengan versi image 2.2.0+. Versi konektor Cloud Storage yang diinstal pada setiap versi image Managed Service untuk Apache Spark tercantum di halaman versi image Managed Service untuk Apache Spark.

  • Anda atau administrator organisasi Anda harus memberikan peran Identity and Access Management yang mencakup izin yang diperlukan untuk menyiapkan dan membuat permintaan gRPC ke konektor Cloud Storage. Peran ini dapat mencakup hal berikut:

    • Peran pengguna: Peran Dataproc Editor diberikan kepada pengguna agar mereka dapat membuat cluster dan mengirimkan tugas
    • Peran akun layanan: Peran Storage Object User yang diberikan ke akun layanan VM Managed Service untuk Apache Spark untuk mengizinkan aplikasi yang berjalan di VM cluster melihat, membaca, membuat, dan menulis objek Cloud Storage.

Mengaktifkan gRPC di konektor Cloud Storage

Anda dapat mengaktifkan gRPC di konektor Cloud Storage pada level cluster atau tugas. Setelah diaktifkan di cluster, permintaan baca konektor Cloud Storage akan menggunakan gRPC. Jika diaktifkan pada tugas, bukan di tingkat cluster, permintaan baca konektor Cloud Storage akan menggunakan gRPC hanya untuk tugas tersebut.

Mengaktifkan cluster

Untuk mengaktifkan gRPC di konektor Cloud Storage pada level cluster, tetapkan properti core:fs.gs.client.type=STORAGE_CLIENT saat Anda membuat cluster Managed Service untuk Apache Spark. Setelah gRPC diaktifkan di level cluster, permintaan baca konektor Cloud Storage yang dibuat oleh tugas yang berjalan di cluster akan menggunakan gRPC.

Contoh gcloud CLI:

gcloud dataproc clusters create CLUSTER_NAME \
    --project=PROJECT_ID \
    --region=REGION \
    --properties=core:fs.gs.client.type=STORAGE_CLIENT

Ganti kode berikut:

  • CLUSTER_NAME: Tentukan nama untuk cluster Anda.
  • PROJECT_NAME: Project ID dari project tempat cluster berada. Project ID tercantum di bagian Project info di Dashboard konsol Google Cloud .
  • REGION: Tentukan region Compute Engine tempat cluster akan berada.

Mengaktifkan tugas

Untuk mengaktifkan gRPC di konektor Cloud Storage untuk tugas tertentu, sertakan --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT saat Anda mengirimkan tugas.

Contoh: Menjalankan tugas di cluster yang ada yang menggunakan gRPC untuk membaca dari Cloud Storage.

  1. Buat skrip PySpark /tmp/line-count.py lokal yang menggunakan gRPC untuk membaca file teks Cloud Storage dan menampilkan jumlah baris dalam file tersebut.

    cat <<EOF >"/tmp/line-count.py"
    #!/usr/bin/python
    import sys
    from pyspark.sql import SparkSession
    path = sys.argv[1]
    spark = SparkSession.builder.getOrCreate()
    rdd = spark.read.text(path)
    lines_counter = rdd.count()
    print("There are {} lines in file: {}".format(lines_counter,path))
    EOF
    
  2. Buat file teks /tmp/line-count-sample.txt lokal.

    cat <<EOF >"/tmp/line-count-sample.txt"
    Line 1
    Line 2
    line 3
    EOF
    
  3. Upload /tmp/line-count.py dan /tmp/line-count-sample.txt lokal ke bucket Anda di Cloud Storage.

    gcloud storage cp /tmp/line-count* gs://BUCKET
    
  4. Jalankan tugas line-count.py di cluster Anda. Tetapkan --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT untuk mengaktifkan gRPC untuk permintaan baca konektor Cloud Storage.

    gcloud dataproc jobs submit pyspark gs://BUCKET/line-count.py \
    --cluster=CLUSTER_NAME \
    --project=PROJECT_ID  \
    --region=REGION \
    --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT \
    -- gs://BUCKET/line-count-sample.txt
    

    Ganti kode berikut:

    • CLUSTER_NAME: Nama cluster yang ada.
    • PROJECT_NAME: Project ID Anda. Project ID tercantum di bagian Project info di Dashboard konsol Google Cloud .
    • REGION: Region Compute Engine tempat cluster berada.
    • BUCKET: Bucket Cloud Storage Anda.

Membuat metrik sisi klien gRPC

Anda dapat mengonfigurasi konektor Cloud Storage untuk membuat metrik terkait gRPC di Cloud Monitoring. Metrik terkait gRPC dapat membantu Anda melakukan hal berikut:

  • Memantau dan mengoptimalkan performa permintaan gRPC ke Cloud Storage
  • Memecahkan masalah dan men-debug masalah
  • Mendapatkan insight tentang penggunaan dan perilaku aplikasi

Untuk mengetahui informasi tentang cara mengonfigurasi konektor Cloud Storage untuk membuat metrik terkait gRPC, lihat Menggunakan metrik sisi klien gRPC.

Resource