Apache Spark adalah mesin analitik data besar yang serbaguna, berkinerja tinggi, dan mudah digunakan untuk menjalankan analitik kompleks dalam memori serta membangun aplikasi analitik data berskala besar dengan latensi rendah. DataWorks menyediakan node EMR Spark untuk mengembangkan tugas Spark dan menerapkan penjadwalan periodik. Topik ini menjelaskan cara membuat node EMR Spark dan menunjukkan fitur-fiturnya melalui contoh terperinci.
Prasyarat
-
Untuk menyesuaikan lingkungan komponen sebelum memulai pengembangan node, Anda dapat membuat custom image berdasarkan image resmi
dataworks_emr_base_task_poddan menggunakan image tersebut di DataStudio.Misalnya, Anda dapat mengganti paket JAR Spark atau menambahkan dependensi terhadap
libraries,files, atauJAR packagestertentu saat membuat custom image. -
Kluster EMR harus didaftarkan ke DataWorks. Untuk informasi selengkapnya, lihat DataStudio (versi lama): Bind an EMR computing resource.
-
(Opsional) Jika Anda menggunakan RAM user untuk pengembangan tugas, akun tersebut harus ditambahkan ke ruang kerja yang sesuai dan diberikan peran Development atau Workspace Administrator. Peran Workspace Manager memberikan izin yang luas. Berikan peran ini dengan hati-hati. Untuk informasi selengkapnya, lihat Add members to a workspace.
-
Grup sumber daya harus dibeli dan dikonfigurasi, termasuk binding ruang kerja dan pengaturan jaringannya. Untuk informasi selengkapnya, lihat Use a Serverless resource group.
-
Alur bisnis harus dibuat. DataStudio mengorganisasi operasi pengembangan ke dalam alur bisnis, sehingga Anda tidak dapat membuat node tanpa alur tersebut. Untuk informasi selengkapnya, lihat Create a business flow.
-
Jika tugas pengembangan Anda memerlukan lingkungan khusus, Anda dapat menggunakan fitur custom image yang disediakan oleh DataWorks untuk membangun custom image yang berisi komponen yang diperlukan untuk eksekusi tugas. Untuk informasi selengkapnya, lihat Custom image.
Batasan
-
Anda hanya dapat menjalankan tugas jenis ini pada serverless resource group (disarankan) atau grup sumber daya eksklusif untuk penjadwalan. Jika Anda perlu menggunakan image dalam pengembangan data, Anda harus menggunakan serverless resource group.
-
Untuk kluster DataLake atau kluster kustom, Anda harus mengonfigurasi EMR-HOOK pada kluster untuk mengelola metadata di DataWorks. Jika EMR-HOOK tidak dikonfigurasi, Anda tidak dapat melihat metadata secara real-time, menghasilkan log audit, menampilkan alur data, atau melakukan tugas tata kelola terkait EMR di DataWorks. Untuk informasi selengkapnya, lihat Configure EMR-HOOK for Spark SQL.
-
Kluster EMR Serverless Spark mendukung penampilan alur data, sedangkan kluster EMR on ACK Spark tidak.
-
Kluster EMR on ACK Spark dan kluster EMR Serverless Spark mendukung referensi terhadap sumber daya OSS menggunakan
ossrefdan mengunggah sumber daya ke OSS, tetapi tidak mendukung pengunggahan sumber daya ke HDFS. -
Kluster DataLake dan kluster kustom mendukung referensi terhadap sumber daya OSS menggunakan
ossref, mengunggah sumber daya ke OSS, serta mengunggah sumber daya ke HDFS.
Catatan
Jika Anda telah mengaktifkan kontrol akses Ranger untuk Spark di kluster EMR yang terkait dengan ruang kerja saat ini:
-
Tugas Spark yang menggunakan image default secara otomatis mendukung fitur ini.
-
Untuk menjalankan tugas Spark dengan custom image, ajukan tiket ke dukungan teknis untuk meminta peningkatan image.
Persiapan: Kembangkan JAR pekerjaan Spark
Sebelum Anda dapat menjadwalkan pekerjaan EMR Spark dengan DataWorks, Anda harus terlebih dahulu mengembangkan pekerjaan tersebut di EMR, mengompilasinya, dan menghasilkan paket JAR. Untuk informasi selengkapnya tentang pengembangan pekerjaan EMR Spark, lihat Spark overview.
Anda kemudian akan mengunggah paket JAR ke DataWorks untuk menjadwalkan pekerjaan EMR Spark secara periodik.
I. Buat node EMR Spark
Login ke Konsol DataWorks. Di wilayah target, klik di panel navigasi kiri. Pilih ruang kerja dari daftar drop-down dan klik Go to Data Development.
-
Buat node EMR Spark.
-
Klik kanan alur bisnis target dan pilih .
CatatanAnda juga dapat mengarahkan kursor ke Create dan memilih .
-
Di kotak dialog Create Node, masukkan Name dan pilih Engine Instance, Node Type, dan Path. Klik Confirm untuk membuka editor node EMR Spark.
CatatanNama node dapat berisi huruf kapital, huruf kecil, karakter Tionghoa, angka, garis bawah (
_), dan titik (.).
-
2. Kembangkan pekerjaan Spark
Untuk membuka editor kode, klik dua kali node EMR Spark. Anda kemudian dapat memilih metode berdasarkan skenario Anda.
-
(Direkomendasikan) Unggah sumber daya dari mesin lokal Anda ke DataStudio, lalu referensikan sumber daya tersebut. Untuk informasi selengkapnya, lihat Metode 1: Unggah sumber daya sebelum mereferensikan sumber daya JAR EMR.
-
Referensikan sumber daya OSS menggunakan metode OSS REF. Untuk informasi selengkapnya, lihat Metode 2: Referensikan langsung sumber daya OSS.
Metode 1: Unggah dan referensikan sumber daya JAR EMR
Di DataWorks, Anda dapat mengunggah sumber daya dari komputer lokal ke DataStudio lalu mereferensikannya. Setelah mengompilasi pekerjaan EMR Spark menjadi paket JAR, pilih metode penyimpanan berdasarkan ukurannya.
Anda dapat mengunggah dan meng-commit paket JAR sebagai sumber daya EMR DataWorks. Atau, Anda dapat menyimpannya di HDFS kluster EMR. Kluster EMR on ACK Spark dan kluster EMR Serverless Spark tidak mendukung unggah sumber daya ke HDFS.
Paket JAR lebih kecil dari 500 MB
-
Buat sumber daya EMR JAR.
Metode ini memungkinkan manajemen sumber daya visual di konsol DataWorks. Setelah membuat sumber daya, commit sumber daya tersebut. Untuk informasi selengkapnya, lihat Create and use EMR resources.
Di kotak dialog Create Resource, atur Engine Type ke EMR dan pilih Engine Instance. Atur Resource Type ke EMR JAR, tentukan Path, dan pilih Upload as EMR Resource. Pilih jenis Storage Path, yaitu OSS One-click Authorization atau HDFS. Atur File Source ke Local dan klik Upload untuk mengunggah file. Tentukan Name untuk sumber daya tersebut. Nama sumber daya JAR harus diakhiri dengan
.jar. Lalu, klik Create.CatatanPertama kali Anda membuat sumber daya EMR yang akan disimpan di OSS, Anda harus memberikan otorisasi akses seperti diminta.
-
Referensikan sumber daya EMR JAR.
-
Klik dua kali node EMR Spark untuk membuka editor kodenya.
-
Di pohon navigasi kiri, pilih . Temukan sumber daya EMR JAR Anda, klik kanan, lalu pilih Insert Resource Path.
-
Setelah mereferensikan sumber daya, sistem secara otomatis menambahkan potongan kode referensi ke editor node. Potongan kode berikut merupakan contohnya.
##@resource_reference{"spark-examples_2.12-1.0.0-SNAPSHOT-shaded.jar"} spark-examples_2.12-1.0.0-SNAPSHOT-shaded.jarKehadiran potongan kode ini menunjukkan bahwa sumber daya telah direferensikan. Dalam kode di atas, spark-examples_2.12-1.0.0-SNAPSHOT-shaded.jar adalah nama sumber daya EMR JAR yang diunggah.
-
Modifikasi kode node EMR Spark dan tambahkan perintah spark-submit. Kode berikut merupakan contohnya.
CatatanEditor kode untuk node EMR Spark tidak mendukung komentar. Modifikasi kode pekerjaan berdasarkan contoh berikut. Jangan tambahkan komentar; jika tidak, akan terjadi error saat node dijalankan.
##@resource_reference{"spark-examples_2.11-2.4.0.jar"} spark-submit --class org.apache.spark.examples.SparkPi --master yarn spark-examples_2.11-2.4.0.jar 100Tabel berikut menjelaskan parameter-parameternya.
-
org.apache.spark.examples.SparkPi: kelas utama pekerjaan dalam paket JAR yang dikompilasi.
-
spark-examples_2.11-2.4.0.jar: nama sumber daya EMR JAR yang Anda unggah.
-
Anda dapat membiarkan parameter lain seperti pada contoh di atas. Anda juga dapat menjalankan perintah berikut untuk melihat bantuan untuk
spark submitdan memodifikasi perintahspark submitsesuai kebutuhan.Catatan-
Jika ingin menggunakan parameter sederhana dari perintah
spark-submitdi node Spark, Anda harus menambahkan parameter tersebut ke dalam kode. Contoh:--executor-memory 2G. -
Node Spark hanya mendukung pengiriman pekerjaan dalam mode kluster YARN.
-
Untuk pekerjaan yang dikirim menggunakan perintah
spark-submit, atur parameter deploy mode ke cluster, bukan client.
spark-submit --helpspark-submit --help Process Output>>> Process Output>>> Options: Process Output>>> --master MASTER_URL spark://host:port, mesos://host:port, yarn, Process Output>>> k8s://https://host:port, or local (Default: local[*]). Process Output>>> --deploy-mode DEPLOY_MODE Whether to launch the driver program locally ("client") or Process Output>>> on one of the worker machines inside the cluster ("cluster") Process Output>>> (Default: client). Process Output>>> --class CLASS_NAME Your application's main class (for Java / Scala apps). Process Output>>> --name NAME A name of your application. Process Output>>> --jars JARS Comma-separated list of jars to include on the driver Process Output>>> and executor classpaths. Process Output>>> --packages Comma-separated list of maven coordinates of jars to include Process Output>>> on the driver and executor classpaths. Will search the local Process Output>>> maven repo, then maven central and any additional remote Process Output>>> repositories given by --repositories. The format for the Process Output>>> coordinates should be groupId:artifactId:version. Process Output>>> --exclude-packages Comma-separated list of groupId:artifactId, to exclude while Process Output>>> resolving the dependencies provided in --packages to avoid Process Output>>> dependency conflicts. Process Output>>> --repositories Comma-separated list of additional remote repositories to Process Output>>> search for the maven coordinates given with --packages. Process Output>>> --py-files PY_FILES Comma-separated list of .zip, .egg, or .py files to place Process Output>>> on the PYTHONPATH for Python apps. Process Output>>> --files FILES Comma-separated list of files to be placed in the working Process Output>>> directory of each executor. File paths of these files -
-
-
Paket JAR 500 MB atau lebih besar
-
Buat sumber daya EMR JAR.
Jika paket JAR berukuran 500 MB atau lebih besar, Anda tidak dapat mengunggahnya dari komputer lokal sebagai sumber daya DataWorks. Simpan paket JAR di HDFS kluster EMR Anda dan catat jalur penyimpanannya. Anda kemudian dapat menggunakan jalur tersebut untuk mereferensikan paket saat menjadwalkan pekerjaan Spark.
-
Referensikan sumber daya EMR JAR.
Jika paket JAR disimpan di HDFS, referensikan langsung dengan menentukan jalurnya dalam kode node EMR Spark.
-
Klik dua kali node EMR Spark yang telah dibuat untuk membuka editor node.
-
Tulis perintah spark-submit. Kode berikut merupakan contohnya.
spark-submit --master yarn --deploy-mode cluster --name SparkPi --driver-memory 4G --driver-cores 1 --num-executors 5 --executor-memory 4G --executor-cores 1 --class org.apache.spark.examples.JavaSparkPi hdfs:///tmp/jars/spark-examples_2.11-2.4.8.jar 100Tabel berikut menjelaskan parameter-parameternya.
-
hdfs:///tmp/jars/spark-examples_2.11-2.4.8.jar: jalur paket JAR di HDFS.
-
org.apache.spark.examples.JavaSparkPi: kelas utama pekerjaan dalam paket JAR yang dikompilasi.
-
Parameter lainnya adalah parameter kluster EMR dan harus dimodifikasi sesuai kebutuhan bisnis Anda. Anda juga dapat menjalankan perintah berikut untuk melihat informasi bantuan perintah spark-submit dan memodifikasi perintah tersebut sesuai kebutuhan.
Penting-
Jika ingin menggunakan parameter sederhana dari perintah Spark-submit di node Spark, Anda harus menambahkan parameter tersebut ke dalam kode. Contoh:
--executor-memory 2G. -
Node Spark hanya mendukung pengiriman pekerjaan dalam mode kluster YARN.
-
Untuk pekerjaan yang dikirim menggunakan perintah spark-submit, atur parameter deploy mode ke cluster, bukan client.
spark-submit --help -
-
-
Metode 2: Referensikan langsung sumber daya OSS
(Opsional) Parameter lanjutan
Anda dapat mengonfigurasi parameter khusus Spark di bagian Advanced Settings node. Untuk informasi selengkapnya tentang properti Spark, lihat Spark Configuration. Parameter lanjutan yang dapat Anda konfigurasi berbeda-beda untuk jenis kluster EMR yang berbeda, seperti yang ditunjukkan pada tabel berikut.
Kluster DataLake atau kustom: EMR on ECS
|
Parameter |
Deskripsi |
|
queue |
Antrian penjadwalan tempat pekerjaan dikirimkan. Nilai default: default. Jika Anda mengonfigurasi YARN resource queue tingkat ruang kerja saat mendaftarkan kluster EMR ke ruang kerja DataWorks, aturan berikut berlaku:
Untuk informasi selengkapnya tentang EMR YARN, lihat Basic queue configurations. Untuk informasi selengkapnya tentang cara mengonfigurasi antrian saat mendaftarkan kluster EMR, lihat Set the global YARN resource queue. |
|
priority |
Prioritas. Nilai default: 1. |
|
FLOW_SKIP_SQL_ANALYZE |
Metode yang digunakan untuk menjalankan pernyataan SQL. Nilai yang valid:
Catatan
Parameter ini hanya dapat digunakan untuk pengujian di Data Development. |
|
Others |
|
Kluster EMR Serverless Spark
Untuk informasi selengkapnya tentang cara mengonfigurasi parameter, lihat Configure parameters for a Spark job.
|
Parameter |
Deskripsi |
|
queue |
Antrian penjadwalan tempat pekerjaan dikirimkan. Nilai default: dev_queue. |
|
priority |
Prioritas. Nilai default: 1. |
|
FLOW_SKIP_SQL_ANALYZE |
Metode yang digunakan untuk menjalankan pernyataan SQL. Nilai yang valid:
Catatan
Parameter ini hanya dapat digunakan untuk pengujian di Data Development. |
|
SERVERLESS_RELEASE_VERSION |
Versi mesin Spark. Secara default, Default Engine Version yang dikonfigurasi untuk kluster di bagian Cluster Management pada halaman Management Center digunakan. Anda dapat mengonfigurasi parameter ini untuk menentukan versi mesin yang berbeda untuk pekerjaan yang berbeda. |
|
SERVERLESS_QUEUE_NAME |
Antrian sumber daya yang ingin Anda tentukan. Secara default, Default Resource Queue yang dikonfigurasi untuk kluster di bagian Cluster Management pada halaman Management Center digunakan. Jika ingin mengisolasi dan mengelola sumber daya, Anda dapat menambahkan antrian. Untuk informasi selengkapnya, lihat Manage resource queues. |
|
Others |
|
Kluster Spark: EMR on ACK
|
Parameter |
Deskripsi |
|
queue |
Parameter ini tidak didukung. |
|
priority |
Parameter ini tidak didukung. |
|
FLOW_SKIP_SQL_ANALYZE |
Metode yang digunakan untuk menjalankan pernyataan SQL. Nilai yang valid:
Catatan
Parameter ini hanya dapat digunakan untuk pengujian di Data Development. |
|
Others |
|
Kluster Hadoop: EMR on ECS
|
Parameter |
Deskripsi |
|
queue |
Antrian penjadwalan tempat pekerjaan dikirimkan. Nilai default: default. Jika Anda mengonfigurasi YARN resource queue tingkat ruang kerja saat mendaftarkan kluster EMR ke ruang kerja DataWorks, aturan berikut berlaku:
Untuk informasi selengkapnya tentang EMR YARN, lihat Basic queue configurations. Untuk informasi selengkapnya tentang cara mengonfigurasi antrian saat mendaftarkan kluster EMR, lihat Set the global YARN resource queue. |
|
priority |
Prioritas. Nilai default: 1. |
|
FLOW_SKIP_SQL_ANALYZE |
Metode yang digunakan untuk menjalankan pernyataan SQL. Nilai yang valid:
Catatan
Parameter ini hanya dapat digunakan untuk pengujian di Data Development. |
|
USE_GATEWAY |
Menentukan apakah pekerjaan dikirimkan dari node saat ini melalui kluster Gateway. Nilai yang valid:
Catatan
Jika kluster tempat node saat ini berada tidak terkait dengan kluster Gateway dan Anda mengatur parameter ini ke |
|
Others |
|
Pekerjaan SQL
-
Pada bilah alat, klik ikon
. Di kotak dialog Parameter, pilih grup sumber daya penjadwalan yang telah dibuat dan klik Running.Catatan-
Untuk mengakses sumber daya komputasi yang ditempatkan di jaringan publik atau VPC, Anda harus menggunakan grup sumber daya penjadwalan yang dapat terhubung ke sumber daya komputasi tersebut. Untuk informasi selengkapnya, lihat Solutions for network connections.
-
Jika ingin mengubah grup sumber daya yang digunakan untuk menjalankan pekerjaan, klik ikon Run with Parameters
dan pilih grup sumber daya yang ingin digunakan. -
Saat mengkueri data menggunakan node EMR Spark, hasilnya dibatasi hingga maksimal 10.000 record dan ukuran total 10 MB.
-
-
Klik ikon
untuk menyimpan pernyataan SQL Anda. -
(Opsional) Lakukan pengujian asap.
Jika ingin menjalankan pengujian asap di lingkungan Development, Anda dapat melakukannya saat melakukan commit ke node eksekusi atau setelah node tersebut di-commit. Untuk informasi selengkapnya, lihat Run a smoke test.
Langkah 3: Konfigurasi penjadwalan node
Jika Anda ingin sistem menjalankan tugas pada node secara periodik, Anda dapat mengklik Properties di panel navigasi kanan pada tab konfigurasi node untuk mengonfigurasi properti penjadwalan tugas sesuai kebutuhan bisnis Anda. Untuk informasi selengkapnya, lihat Overview.
-
Anda harus mengonfigurasi properti Rerun attribute dan Parent Nodes untuk node sebelum dapat mengirimkannya.
-
Jika perlu menyesuaikan lingkungan komponen, Anda dapat membuat custom image berdasarkan image resmi
dataworks_emr_base_task_poddan menggunakannya di DataStudio.Misalnya, Anda dapat mengganti paket JAR Spark atau menyertakan
libraries,files, atauJAR packagestertentu saat membuat custom image.
Langkah 4: Deploy node
Setelah tugas pada node dikonfigurasi, Anda harus melakukan commit dan deploy tugas tersebut. Setelah tugas di-commit dan di-deploy, sistem akan menjalankan tugas tersebut secara berkala berdasarkan konfigurasi penjadwalan.
-
Klik ikon
di bilah alat atas untuk menyimpan tugas. -
Klik ikon
di bilah alat atas untuk melakukan commit tugas. Di kotak dialog Submit, konfigurasikan parameter Change description. Lalu, tentukan apakah akan meninjau kode tugas setelah melakukan commit berdasarkan kebutuhan bisnis Anda.
Catatan-
Anda harus mengonfigurasi parameter Rerun dan Parent Nodes di tab Properties sebelum melakukan commit tugas.
-
Anda dapat menggunakan fitur tinjauan kode untuk memastikan kualitas kode tugas dan mencegah error eksekusi tugas yang disebabkan oleh kode tugas yang tidak valid. Jika Anda mengaktifkan fitur tinjauan kode, kode tugas yang di-commit hanya dapat di-deploy setelah kode tugas tersebut lolos tinjauan kode. Untuk informasi selengkapnya, lihat Code review.
-
Jika Anda menggunakan ruang kerja dalam mode standar, Anda harus melakukan deploy tugas di lingkungan produksi setelah melakukan commit tugas. Untuk melakukan deploy tugas pada node, klik Deploy di pojok kanan atas tab konfigurasi node. Untuk informasi selengkapnya, lihat Deploy nodes.
Operasi lainnya
Setelah tugas di-commit dan di-deploy, tugas tersebut akan dijalankan secara periodik berdasarkan konfigurasi penjadwalan. Anda dapat mengklik Operation Center di pojok kanan atas tab konfigurasi node yang sesuai untuk membuka Operation Center dan melihat status penjadwalan tugas. Untuk informasi selengkapnya, lihat Manage scheduled tasks.
FAQ
-
T: Bagaimana cara mengatasi timeout koneksi node?
J: Pastikan grup sumber daya dan kluster dapat saling terhubung melalui jaringan. Buka daftar sumber daya komputasi dan klik Inisialisasi Sumber Daya. Di kotak dialog yang muncul, klik Re-initialize. Verifikasi bahwa inisialisasi berhasil.
dan pilih grup sumber daya penjadwalan Anda untuk menjalankan node EMR Spark. Setelah pekerjaan selesai, catat