Beberapa komponen open source default yang disertakan dengan Google Managed Service untuk Apache Spark, seperti Apache Hadoop dan Apache Spark, menyediakan antarmuka web. Antarmuka ini dapat digunakan untuk mengelola dan memantau resource dan fasilitas cluster, seperti pengelola resource YARN, Hadoop Distributed File System (HDFS), MapReduce, dan Spark. Gateway Komponen menyediakan akses yang aman ke endpoint web untuk komponen default dan opsional Managed Service untuk Apache Spark.
Cluster yang dibuat dengan versi image Managed Service untuk Apache Spark yang didukung dapat mengaktifkan akses ke antarmuka web komponen tanpa mengandalkan tunnel SSH atau mengubah aturan firewall untuk mengizinkan traffic masuk.
Pertimbangan
- Pengguna harus memiliki dataproc.clusters.use izin Identity and Access Management untuk mengakses antarmuka web komponen yang diaktifkan. Lihat Peran Managed Service untuk Apache Spark.
- Gateway Komponen dapat digunakan untuk mengakses REST API, seperti Apache Hadoop YARN dan Apache Livy, serta server histori.
- Saat Gateway Komponen diaktifkan, Managed Service untuk Apache Spark akan menambahkan layanan berikut ke node master pertama cluster:
- Apache Knox. Sertifikat SSL Gateway Knox default berlaku selama 13 bulan sejak tanggal pembuatan cluster. Jika masa berlakunya habis, semua URL antarmuka web Gateway Komponen akan menjadi tidak aktif. Untuk mendapatkan sertifikat baru, lihat Membuat ulang sertifikat SSL Gateway Komponen.
- Proxy Pembalik
- Gateway komponen tidak mengaktifkan akses langsung ke antarmuka
node:port, tetapi otomatis melakukan proxy pada subset layanan tertentu. Jika ingin mengakses layanan di node (node:port), gunakan proxy SOCKS SSH.
Membuat cluster dengan Gateway Komponen
Konsol
Gateway Komponen Managed Service untuk Apache Spark diaktifkan secara default saat Anda membuat cluster menggunakan Google Cloud konsol. Anda dapat menonaktifkan setelan ini dengan menghapus centang pada kotak Enable component gateway di bagian Components pada panel Set up cluster di halaman Managed Service untuk Apache Spark Create a Managed Service for Apache Spark cluster on Compute Engine.
Perintah gcloud
Jalankan perintah gcloud CLI gcloud dataproc clusters create secara lokal di jendela terminal atau di Cloud Shell.
gcloud dataproc clusters create cluster-name \ --enable-component-gateway \ --region=region \ other args ...
REST API
Tetapkan properti EndpointConfig.enableHttpPortAccess ke true sebagai bagian dari permintaan clusters.create.
Menggunakan URL Gateway Komponen untuk mengakses antarmuka web
Saat Gateway Komponen diaktifkan di cluster, Anda dapat terhubung ke antarmuka web komponen
yang berjalan di node master pertama cluster dengan mengklik link
yang disediakan di konsol Google Cloud . Gateway Komponen juga menetapkan
endpointConfig.httpPorts
dengan peta nama port ke URL. Sebagai alternatif untuk menggunakan konsol,
Anda dapat menggunakan alat command line gcloud
atau Managed Service untuk Apache Spark REST API untuk melihat informasi pemetaan ini,
lalu menyalin dan menempel URL ke browser untuk terhubung dengan UI komponen.
Konsol
Buka formulir Managed Service untuk Apache Spark Clusters di Google Cloud konsol, lalu pilih cluster Anda untuk membuka formulir Cluster details. Klik tab Web Interfaces untuk menampilkan daftar link Gateway Komponen ke antarmuka web komponen default dan opsional yang diinstal di cluster. Klik link untuk membuka antarmuka web yang berjalan di node master cluster di browser lokal Anda.
Perintah gcloud
Jalankan perintah gcloud CLI
gcloud dataproc clusters describe
secara lokal di jendela terminal atau di
Cloud Shell.
gcloud dataproc clusters describe cluster-name \ --region=region
Contoh Output
...
config:
endpointConfig:
enableHttpPortAccess: true
httpPorts:
HDFS NameNode:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/hdfs/
MapReduce Job History:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/jobhistory/
Spark HistoryServer:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/sparkhistory/
YARN ResourceManager:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/yarn/
YARN Application Timeline:
https://584bbf70-7a12-4120-b25c-31784c94dbb4-dot-dataproc.google.com/apphistory/
...
REST API
Panggil clusters.get untuk mendapatkan endpointConfig.httpPorts peta nama port ke URL.Menggunakan Gateway Komponen dengan VPC-SC
Gateway Komponen mendukung
Kontrol Layanan VPC.
Untuk penerapan perimeter layanan, permintaan ke antarmuka melalui Gateway Komponen diperlakukan sebagai bagian dari Managed Service untuk Apache Spark API surface, dan kebijakan akses apa pun yang mengontrol izin untuk dataproc.googleapis.com juga akan mengontrol akses ke UI Gateway Komponen.
Gateway Komponen juga mendukung konfigurasi VPC-SC yang mengandalkan
konektivitas Google pribadi
untuk cluster Managed Service untuk Apache Spark tanpa alamat IP eksternal, tetapi Anda harus mengonfigurasi jaringan secara manual
untuk mengizinkan akses dari VM master Managed Service untuk Apache Spark
ke *.dataproc.cloud.google.com melalui rentang IP virtual Google yang dibatasi
199.36.153.4/30
dengan melakukan hal berikut:
- Ikuti petunjuk untuk mengonfigurasi konektivitas Google pribadi untuk semua Google API.
- Konfigurasikan DNS dengan Cloud DNS atau konfigurasikan DNS secara lokal di node master Managed Service untuk Apache Spark untuk mengizinkan akses ke
*.dataproc.cloud.google.com.
Mengonfigurasi DNS dengan Cloud DNS
Buat zona Cloud DNS yang memetakan traffic yang ditujukan untuk *.dataproc.cloud.google.com ke rentang IP virtual Google API yang dibatasi.
Buat zona pribadi terkelola untuk jaringan VPC Anda.
gcloud dns managed-zones create ZONE_NAME \ --visibility=private \ --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME \ --description=DESCRIPTION \ --dns-name=dataproc.cloud.google.com \ --project=PROJECT_ID
ZONE_NAME adalah nama untuk zona yang Anda buat. Misalnya,
vpc. Nama zona ini akan digunakan di setiap langkah berikut.PROJECT_ID adalah ID project yang menghosting jaringan VPC Anda.
NETWORK_NAME adalah nama jaringan VPC Anda.
DESCRIPTION adalah deskripsi zona terkelola yang dapat dibaca manusia dan bersifat opsional.
Mulai transaksi.
gcloud dns record-sets transaction start --zone=ZONE_NAME
- ZONE_NAME adalah nama zona Anda.
Tambahkan data DNS.
gcloud dns record-sets transaction add --name=*.dataproc.cloud.google.com. \ --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \ --zone=ZONE_NAME \ --ttl=300- ZONE_NAME adalah nama zona Anda.
gcloud dns record-sets transaction add --name=dataproc.cloud.google.com. \ --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \ --zone=ZONE_NAME \ --ttl=300- ZONE_NAME adalah nama zona Anda.
Jalankan transaksi.
gcloud dns record-sets transaction execute --zone=ZONE_NAME --project=PROJECT_ID
ZONE_NAME adalah nama zona Anda.
PROJECT_ID adalah ID project yang menghosting jaringan VPC Anda.
Mengonfigurasi DNS secara lokal di node master Managed Service untuk Apache Spark dengan tindakan inisialisasi
Anda dapat mengonfigurasi DNS secara lokal di node master Managed Service untuk Apache Spark untuk mengizinkan konektivitas pribadi ke dataproc.cloud.google.com. Prosedur ini ditujukan untuk pengujian dan pengembangan jangka pendek. Prosedur ini tidak direkomendasikan untuk digunakan dalam beban kerja produksi.
Siapkan tindakan inisialisasi ke Cloud Storage.
cat <<EOF >component-gateway-vpc-sc-dns-init-action.sh #!/bin/bash readonly ROLE="$(/usr/share/google/get_metadata_value attributes/dataproc-role)" if [[ "${ROLE}" == 'Master' ]]; then readonly PROXY_ENDPOINT=$(grep "^dataproc.proxy.agent.endpoint=" \ "/etc/google-managed-spark/dataproc.properties" | \ tail -n 1 | cut -d '=' -f 2- | sed -r 's/\\([#!=:])/\1/g') readonly HOSTNAME=$(echo ${PROXY_ENDPOINT} | \ sed -n -E 's;^https://([^/?#]*).*;\1;p') echo "199.36.153.4 ${HOSTNAME} # Component Gateway VPC-SC" >> "/etc/hosts" fi EOF gcloud storage cp component-gateway-vpc-sc-dns-init-action.sh gs://BUCKET/- BUCKET adalah bucket Cloud Storage yang dapat diakses dari cluster Managed Service untuk Apache Spark.
Buat cluster Managed Service untuk Apache Spark dengan tindakan inisialisasi yang disiapkan dan Gateway Komponen diaktifkan.
gcloud dataproc clusters create cluster-name \ --region=region \ --initialization-actions=gs://BUCKET/component-gateway-vpc-sc-dns-init-action.sh \ --enable-component-gateway \ other args ...
- BUCKET adalah bucket Cloud Storage yang digunakan pada langkah 1.
Menggunakan HTTP API secara terprogram melalui Gateway Komponen
Gateway Komponen adalah proxy yang menggabungkan Apache Knox. Endpoint yang diekspos oleh
Apache Knox tersedia melalui
https://component-gateway-base-url/component-path.
Untuk mengautentikasi secara terprogram dengan Gateway Komponen, teruskan header
Proxy-Authorization dengan
token Bearer OAuth 2.0.
$ ACCESS_TOKEN="$(gcloud auth print-access-token)"
$ curl -H "Proxy-Authorization: Bearer ${ACCESS_TOKEN}" "https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/yarn/jmx"
{
"beans" : [ {
"name" : "Hadoop:service=ResourceManager,name=RpcActivityForPort8031",
"modelerType" : "RpcActivityForPort8031",
"tag.port" : "8031",
"tag.Context" : "rpc",
"tag.NumOpenConnectionsPerUser" : "{\"yarn\":2}",
"tag.Hostname" : "demo-cluster-m",
"ReceivedBytes" : 1928581096,
"SentBytes" : 316939850,
"RpcQueueTimeNumOps" : 7230574,
"RpcQueueTimeAvgTime" : 0.09090909090909091,
"RpcProcessingTimeNumOps" : 7230574,
"RpcProcessingTimeAvgTime" : 0.045454545454545456,
...
Gateway Komponen menghapus header Proxy-Authorization sebelum meneruskan permintaan ke Apache Knox.
Untuk menemukan URL dasar Gateway Komponen, jalankan: gcloud dataproc clusters describe:
$ gcloud dataproc clusters describe <var>cluster-name</var> \
--region=<var>region</var>
...
endpointConfig:
enableHttpPortAccess: true
httpPorts:
HDFS NameNode: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/hdfs/dfshealth.html
MapReduce Job History: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/jobhistory/
Spark History Server: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/sparkhistory/
Tez: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/apphistory/tez-ui/
YARN Application Timeline: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/apphistory/
YARN ResourceManager: https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/yarn/
...
URL dasar adalah bagian skema dan otoritas dari URL di bagian httpPorts. Dalam contoh ini, URL dasarnya adalah https://xxxxxxxxxxxxxxx-dot-us-central1.dataproc.googleusercontent.com/.
Membuat ulang sertifikat SSL Gateway Komponen
Sertifikat SSL Gateway Knox default Gateway Komponen berlaku selama:
5 tahun sejak tanggal pembuatan cluster Managed Service untuk Apache Spark di cluster yang dibuat dengan versi image 2.0.93, 2.1.41, 2.2.7, dan yang lebih baru.
13 bulan sejak tanggal pembuatan cluster Managed Service untuk Apache Spark di cluster yang dibuat menggunakan versi image sebelumnya.
Jika masa berlaku sertifikat habis, semua URL antarmuka web Gateway Komponen akan menjadi tidak aktif.
Jika organisasi Anda menyediakan sertifikat SSL, dapatkan sertifikat baru dari organisasi tersebut, lalu ganti sertifikat lama dengan sertifikat baru.
Jika Anda menggunakan sertifikat SSL yang ditandatangani sendiri, perbarui sertifikat tersebut sebagai berikut:
Gunakan SSH untuk terhubung ke node master cluster Managed Service untuk Apache Spark dengan akhiran
m-0nama.Temukan
gateway.jksdi jalur/var/lib/knox/security/keystores/gateway.jks.keytool -list -v -keystore /var/lib/knox/security/keystores/gateway.jks
Pindahkan file
gateway.jkske direktori cadangan.mv /var/lib/knox/security/keystores/gateway.jks /tmp/backup/gateway.jks
Buat sertifikat yang ditandatangani sendiri dengan memulai ulang layanan Knox.
systemctl restart knox
Verifikasi status Gateway Komponen dan Knox.
systemctl status google-dataproc-component-gateway systemctl status knox
Langkah berikutnya
- Membuat cluster dengan komponen Managed Service untuk Apache Spark.