Anda dapat mengirimkan tugas ke cluster Managed Service untuk Apache Spark yang ada
melalui permintaan HTTP atau terprogram jobs.submit API, menggunakan alat command line Google Cloud CLI gcloud
di jendela terminal lokal atau di
Cloud Shell, atau dari Google Cloud konsol yang dibuka di browser lokal. Anda
juga dapat melakukan SSH ke instance master
di cluster, lalu menjalankan tugas langsung dari instance tanpa
menggunakan Managed Service untuk Apache Spark.
Cara mengirimkan tugas
Konsol
Buka halaman Managed Service untuk Apache Spark Submit a job di Google Cloud konsol di browser Anda.
Contoh tugas Spark
Untuk mengirimkan contoh tugas Spark, isi kolom di halaman Submit a job, sebagai berikut:
- Pilih nama Cluster Anda dari daftar cluster.
- Tetapkan jenis pekerjaan ke
Spark. - Tetapkan Main class or jar ke
org.apache.spark.examples.SparkPi. - Tetapkan Arguments ke satu argumen
1000. - Tambahkan
file:///usr/lib/spark/examples/jars/spark-examples.jarke Jar files:file:///menunjukkan skema Hadoop LocalFileSystem. Managed Service untuk Apache Spark menginstal/usr/lib/spark/examples/jars/spark-examples.jardi node master cluster saat membuat cluster.- Atau, Anda dapat menentukan jalur Cloud Storage
(
gs://your-bucket/your-jarfile.jar) atau jalur Hadoop Distributed File System path (hdfs://path-to-jar.jar) ke salah satu jar Anda.
Klik Submit untuk memulai tugas. Setelah tugas dimulai, tugas tersebut akan ditambahkan ke daftar Tugas.
Klik ID pekerjaan untuk membuka halaman Jobs, tempat Anda dapat melihat output driver tugas. Karena tugas ini menghasilkan baris output panjang yang melebihi lebar jendela browser, Anda dapat mencentang kotak Line wrapping untuk menampilkan semua teks output dalam tampilan guna menampilkan hasil perhitungan untuk pi.
Anda dapat melihat output driver tugas dari command line menggunakan perintah
gcloud dataproc jobs wait
yang ditampilkan di bawah (untuk mengetahui informasi selengkapnya, lihat
Melihat output tugas–PERINTAH GCLOUD).
Salin dan tempel project ID Anda sebagai nilai untuk tanda --project dan ID pekerjaan Anda (ditampilkan di daftar Tugas) sebagai argumen akhir.
gcloud dataproc jobs wait job-id \ --project=project-id \ --region=region
Berikut adalah cuplikan dari output driver untuk contoh tugas SparkPi yang dikirimkan di atas:
... 2015-06-25 23:27:23,810 INFO [dag-scheduler-event-loop] scheduler.DAGScheduler (Logging.scala:logInfo(59)) - Stage 0 (reduce at SparkPi.scala:35) finished in 21.169 s 2015-06-25 23:27:23,810 INFO [task-result-getter-3] cluster.YarnScheduler (Logging.scala:logInfo(59)) - Removed TaskSet 0.0, whose tasks have all completed, from pool 2015-06-25 23:27:23,819 INFO [main] scheduler.DAGScheduler (Logging.scala:logInfo(59)) - Job 0 finished: reduce at SparkPi.scala:35, took 21.674931 s Pi is roughly 3.14189648 ... Job [c556b47a-4b46-4a94-9ba2-2dcee31167b2] finished successfully. driverOutputUri: gs://sample-staging-bucket/google-cloud-dataproc-metainfo/cfeaa033-749e-48b9-... ...
gcloud
Untuk mengirimkan tugas ke cluster Managed Service untuk Apache Spark, jalankan perintah gcloud CLI gcloud dataproc jobs submit secara lokal di jendela terminal atau di Cloud Shell.
gcloud dataproc jobs submit job-command \ --cluster=cluster-name \ --region=region \ other dataproc-flags \ -- job-args
- Cantumkan
hello-world.pyyang dapat diakses publik dan terletak di Cloud Storage. Daftar File:gcloud storage cat gs://dataproc-examples/pyspark/hello-world/hello-world.py
#!/usr/bin/python import pyspark sc = pyspark.SparkContext() rdd = sc.parallelize(['Hello,', 'world!']) words = sorted(rdd.collect()) print(words)
- Kirim tugas Pyspark ke Managed Service untuk Apache Spark.
Output terminal:gcloud dataproc jobs submit pyspark \ gs://dataproc-examples/pyspark/hello-world/hello-world.py \ --cluster=cluster-name \ --region=region
Waiting for job output... … ['Hello,', 'world!'] Job finished successfully.
- Jalankan contoh SparkPi yang telah diinstal sebelumnya di node master cluster Managed Service untuk Apache Spark.
Output terminal:gcloud dataproc jobs submit spark \ --cluster=cluster-name \ --region=region \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ -- 1000
Job [54825071-ae28-4c5b-85a5-58fae6a597d6] submitted. Waiting for job output… … Pi is roughly 3.14177148 … Job finished successfully. …
REST
Bagian ini menunjukkan cara mengirimkan tugas Spark untuk menghitung nilai perkiraan
pi menggunakan Managed Service untuk Apache Spark
jobs.submit API.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- project-id: Google Cloud project ID
- region: region cluster
- clusterName: nama cluster
Metode HTTP dan URL:
POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/jobs:submit
Meminta isi JSON:
{
"job": {
"placement": {
"clusterName": "cluster-name"
},
"sparkJob": {
"args": [
"1000"
],
"mainClass": "org.apache.spark.examples.SparkPi",
"jarFileUris": [
"file:///usr/lib/spark/examples/jars/spark-examples.jar"
]
}
}
}
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{
"reference": {
"projectId": "project-id",
"jobId": "job-id"
},
"placement": {
"clusterName": "cluster-name",
"clusterUuid": "cluster-Uuid"
},
"sparkJob": {
"mainClass": "org.apache.spark.examples.SparkPi",
"args": [
"1000"
],
"jarFileUris": [
"file:///usr/lib/spark/examples/jars/spark-examples.jar"
]
},
"status": {
"state": "PENDING",
"stateStartTime": "2020-10-07T20:16:21.759Z"
},
"jobUuid": "job-Uuid"
}
Java
- Menginstal library klien
- Menyiapkan kredensial default aplikasi
- Menjalankan kode
Python
- Menginstal library klien
- Menyiapkan kredensial default aplikasi
- Menjalankan kode
Go
- Menginstal library klien
- Menyiapkan kredensial default aplikasi
- Menjalankan kode
Node.js
- Menginstal library klien
- Menyiapkan kredensial default aplikasi
- Menjalankan kode
Mengirimkan tugas langsung di cluster Anda
Jika ingin menjalankan tugas langsung di cluster tanpa menggunakan Managed Service untuk Apache Spark, lakukan SSH ke node master cluster, lalu jalankan tugas di node master.
Setelah membuat koneksi SSH ke instance master VM, jalankan perintah di jendela terminal pada node master cluster untuk:
- Membuka shell Spark.
- Menjalankan tugas Spark sederhana untuk menghitung jumlah baris dalam file Python "hello-world" (tujuh baris) yang terletak di file Cloud Storage yang dapat diakses publik.
Keluar dari shell.
user@cluster-name-m:~$ spark-shell ... scala> sc.textFile("gs://dataproc-examples" + "/pyspark/hello-world/hello-world.py").count ... res0: Long = 7 scala> :quit
Menjalankan tugas bash di Managed Service untuk Apache Spark
Anda mungkin ingin menjalankan skrip bash sebagai tugas Managed Service untuk Apache Spark, baik karena mesin yang Anda gunakan tidak didukung sebagai jenis tugas Managed Service untuk Apache Spark tingkat atas atau karena Anda perlu melakukan penyiapan atau perhitungan argumen tambahan sebelum meluncurkan tugas menggunakan hadoop atau spark-submit dari skrip Anda.
Contoh Pig
Misalkan Anda menyalin skrip bash hello.sh ke Cloud Storage:
gcloud storage cp hello.sh gs://${BUCKET}/hello.shKarena perintah pig fs menggunakan jalur Hadoop, salin skrip dari Cloud Storage ke tujuan yang ditentukan sebagai file:/// untuk memastikan skrip berada di sistem file lokal, bukan HDFS. Perintah sh berikutnya akan otomatis mereferensikan sistem file lokal dan tidak memerlukan awalan file:///.
gcloud dataproc jobs submit pig --cluster=${CLUSTER} --region=${REGION} \
-e='fs -cp -f gs://${BUCKET}/hello.sh file:///tmp/hello.sh; sh chmod 750 /tmp/hello.sh; sh /tmp/hello.sh'Atau, karena argumen --jars Managed Service untuk Apache Spark jobs submit menempatkan file ke dalam direktori sementara yang dibuat selama masa aktif tugas, Anda dapat menentukan skrip shell Cloud Storage sebagai argumen --jars:
gcloud dataproc jobs submit pig --cluster=${CLUSTER} --region=${REGION} \
--jars=gs://${BUCKET}/hello.sh \
-e='sh chmod 750 ${PWD}/hello.sh; sh ${PWD}/hello.sh'Perhatikan bahwa argumen --jars juga dapat merujuk ke skrip lokal:
gcloud dataproc jobs submit pig --cluster=${CLUSTER} --region=${REGION} \
--jars=hello.sh \
-e='sh chmod 750 ${PWD}/hello.sh; sh ${PWD}/hello.sh'