Anda dapat mengirimkan tugas ke cluster Dataproc yang ada melalui HTTP atau permintaan terprogram jobs.submit Dataproc API, menggunakan alat command line gcloud
Google Cloud CLI di jendela terminal lokal atau di Cloud Shell, atau dari Konsol Google Cloud yang dibuka di browser lokal. Anda juga dapat SSH ke instance master di cluster, lalu menjalankan tugas langsung dari instance tanpa menggunakan layanan Dataproc.
Cara mengirimkan pekerjaan
Konsol
Buka halaman Kirim tugas Dataproc di Konsol Google Cloud pada browser Anda.
Contoh tugas Spark
Untuk mengirimkan contoh tugas Spark, isi kolom di halaman Submit a job, sebagai berikut:
- Pilih nama Cluster dari daftar cluster.
- Tetapkan Job type ke
Spark
. - Tetapkan Class utama atau jar ke
org.apache.spark.examples.SparkPi
. - Tetapkan Arguments ke argumen tunggal
1000
. - Tambahkan
file:///usr/lib/spark/examples/jars/spark-examples.jar
ke file Jar:file:///
menunjukkan skema LocalFileSystem Hadoop. Dataproc menginstal/usr/lib/spark/examples/jars/spark-examples.jar
pada 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 (hdfs://path-to-jar.jar
) ke salah satu jar Anda.
Klik Submit untuk memulai tugas. Setelah pekerjaan dimulai, pekerjaan akan ditambahkan ke daftar Pekerjaan.
Klik ID Pekerjaan untuk membuka halaman Pekerjaan, tempat Anda dapat melihat output driver tugas. Karena tugas ini menghasilkan baris output panjang yang
melebihi lebar jendela browser, Anda dapat mencentang kotak Penggabungan baris untuk menampilkan semua
teks output dalam tampilan agar dapat menampilkan hasil yang dihitung untuk pi
.
Anda dapat melihat output driver tugas dari command line menggunakan perintah
gcloud dataproc jobswait
yang ditunjukkan di bawah (untuk mengetahui informasi selengkapnya, baca
Melihat output tugas–GCLOUD COMMAND).
Salin dan tempel ID project 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 ini 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 Dataproc, jalankan perintah gcloud dataproc jobs submit gcloud CLI 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
- Mencantumkan
hello-world.py
yang dapat diakses secara publik yang terletak di Cloud Storage. Daftar File:gsutil 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 Dataproc.
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 pada node master cluster Dataproc.
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 perkiraan nilai pi
menggunakan jobs.submit API Dataproc.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- project-id: Project ID Google Cloud
- 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
Python
Go
Node.js
Mengirim tugas langsung di cluster
Jika Anda ingin menjalankan tugas langsung di cluster tanpa menggunakan layanan Dataproc, 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:
- Buka shell Spark.
- Jalankan tugas Spark sederhana untuk menghitung jumlah baris dalam file "hello-world" Python (tujuh baris) yang terletak di file Cloud Storage yang dapat diakses secara 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 Dataproc
Sebaiknya jalankan skrip bash sebagai tugas Dataproc, baik karena mesin yang Anda gunakan tidak didukung sebagai jenis tugas Dataproc level teratas atau karena Anda perlu melakukan penyiapan atau penghitungan argumen tambahan sebelum meluncurkan tugas menggunakan hadoop
atau spark-submit
dari skrip.
Contoh Babi
Misalkan Anda menyalin skrip hello.sh bash ke Cloud Storage:
gsutil cp hello.sh gs://${BUCKET}/hello.sh
Karena perintah pig fs
menggunakan jalur Hadoop, salin skrip dari Cloud Storage ke tujuan yang ditentukan sebagai file:///
untuk memastikan skrip tersebut berada di sistem file lokal, bukan HDFS. Perintah sh
berikutnya
mereferensikan sistem file lokal secara otomatis 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 tugas Dataproc mengirimkan argumen --jars
ke tahapan file menjadi 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'