Anda dapat membuat node Shell E-MapReduce (EMR) di DataWorks untuk memenuhi kebutuhan bisnis tertentu. Dengan mengedit skrip Shell kustom, Anda dapat memanfaatkan fitur-fitur tingkat lanjut seperti pemrosesan data, pemanggilan komponen Hadoop, dan pengelolaan file. Topik ini menjelaskan cara mengonfigurasi dan menggunakan node Shell EMR di DataWorks untuk mengedit serta menjalankan tugas Shell.
Prasyarat
Sebelum mengembangkan node, buat gambar kustom berdasarkan citra resmi
dataworks_emr_base_task_pod, lalu gunakan citra tersebut di Data Studio untuk menyesuaikan lingkungan komponen.Sebagai contoh, saat membuat gambar kustom, Anda dapat mengganti paket JAR Spark atau menyertakan
libraries,files, atauJAR packagestertentu.Anda telah membuat kluster Alibaba Cloud EMR dan mengaitkannya dengan DataWorks. Untuk informasi selengkapnya, lihat Data Studio (versi baru): Mengaitkan sumber daya komputasi EMR.
(Opsional) Jika Anda adalah Pengguna Resource Access Management (RAM), pastikan Anda telah ditambahkan ke ruang kerja untuk pengembangan tugas dan telah diberikan peran Developer atau Workspace Administrator. Peran Workspace Administrator memiliki izin yang luas; berikan peran ini dengan hati-hati. Untuk informasi selengkapnya tentang penambahan anggota, lihat Menambahkan anggota ke ruang kerja.
Jika Anda menggunakan akun Alibaba Cloud, Anda dapat melewati langkah ini.
Batasan
Jenis node ini hanya dapat dijalankan pada kelompok sumber daya arsitektur tanpa server (disarankan) atau grup sumber daya eksklusif untuk penjadwalan. Untuk menggunakan citra di Data Studio, Anda harus menggunakan kelompok sumber daya arsitektur tanpa server.
Jika Anda ingin mengelola metadata untuk DataLake atau kluster kustom di DataWorks, Anda harus terlebih dahulu mengonfigurasi EMR-HOOK di kluster tersebut. Untuk informasi selengkapnya tentang cara mengonfigurasi EMR-HOOK, lihat Mengonfigurasi EMR-HOOK untuk Hive.
CatatanJika EMR-HOOK tidak dikonfigurasi di kluster Anda, metadata tidak dapat ditampilkan secara real time, log audit tidak dapat dihasilkan, alur data tidak dapat ditampilkan, dan tugas administrasi terkait EMR tidak dapat dilakukan di DataWorks.
Untuk tugas yang dikirimkan menggunakan spark-submit, kami menyarankan agar Anda mengatur deploy-mode ke cluster, bukan client.
Node Shell EMR dijalankan pada kelompok sumber daya DataWorks untuk penjadwalan, bukan di kluster EMR. Anda dapat menggunakan beberapa perintah komponen EMR, tetapi tidak dapat langsung membaca informasi sumber daya dari EMR. Untuk mereferensikan sumber daya, Anda harus terlebih dahulu mengunggah sumber daya tersebut ke DataWorks. Untuk informasi selengkapnya, lihat Resource Management.
Node Shell EMR tidak mendukung menjalankan file Python. Anda dapat menggunakan node Shell untuk menjalankan file Python.
Prosedur
Pada halaman editor node Shell EMR, kembangkan node tersebut.
Kembangkan kode Shell
Anda dapat memilih salah satu metode berikut berdasarkan skenario Anda:
Metode 1: Unggah lalu referensikan sumber daya EMR JAR
DataWorks memungkinkan Anda mengunggah sumber daya dari mesin lokal ke Data Studio, lalu mereferensikan sumber daya tersebut. Jika Anda menggunakan kluster DataLake, Anda harus mengikuti langkah-langkah ini untuk mereferensikan sumber daya EMR JAR. Jika node Shell EMR bergantung pada sumber daya besar yang tidak dapat diunggah melalui halaman DataWorks, Anda dapat menyimpan sumber daya tersebut di Sistem File Terdistribusi Hadoop (HDFS) dan mereferensikannya dalam kode Anda.
Buat sumber daya EMR JAR.
Untuk informasi selengkapnya, lihat Resource Management. Simpan paket JAR yang dihasilkan dalam Persiapkan data awal dan paket JAR di direktori
emr/jarsuntuk sumber daya JAR, lalu klik Upload untuk mengunggah sumber daya JAR.Pilih Storage Path, Data Source, dan Resource Group.
Klik Save.

Referensikan sumber daya EMR JAR.
Buka node EMR Shell yang telah dibuat untuk membuka halaman editor kode.
Temukan sumber daya yang ingin Anda referensikan (misalnya,
onaliyun_mr_wordcount-1.0-SNAPSHOT.jar) di Resource Management pada panel navigasi sebelah kiri, klik kanan sumber daya tersebut, lalu pilih Reference Resources.Setelah Anda mereferensikan sumber daya, pernyataan referensi akan otomatis ditambahkan ke editor kode node EMR Shell. Kemudian, jalankan perintah berikut. Paket sumber daya, nama bucket, dan informasi path dalam perintah ini hanya untuk tujuan demonstrasi; gantilah dengan informasi aktual Anda.
##@resource_reference{"onaliyun_mr_wordcount-1.0-SNAPSHOT.jar"} onaliyun_mr_wordcount-1.0-SNAPSHOT.jar cn.apache.hadoop.onaliyun.examples.EmrWordCount oss://onaliyun-bucket-2/emr/datas/wordcount02/inputs oss://onaliyun-bucket-2/emr/datas/wordcount02/outputsCatatanKomentar tidak didukung saat Anda mengedit kode untuk node Shell EMR.
Metode 2: Langsung mereferensikan sumber daya OSS
Anda dapat langsung mereferensikan sumber daya Object Storage Service (OSS) dari sebuah node menggunakan pernyataan OSS REF. Saat Anda menjalankan node EMR, DataWorks secara otomatis memuat sumber daya OSS yang ditentukan dalam kode ke mesin lokal Anda. Metode ini sering digunakan dalam skenario di mana tugas EMR memerlukan dependensi JAR atau bergantung pada skrip. Format referensi adalah sebagai berikut:
ossref://{endpoint}/{bucket}/{object}endpoint: Titik akhir yang digunakan untuk mengakses OSS. Jika Anda mengosongkan parameter ini, Anda hanya dapat menggunakan bucket OSS yang berada di wilayah yang sama dengan kluster EMR.
Bucket: Kontainer yang digunakan untuk menyimpan objek di OSS. Setiap Bucket memiliki nama unik. Anda dapat masuk ke Konsol OSS untuk melihat semua Buckets di bawah akun saat ini.
object: Objek spesifik (nama file atau path) yang disimpan di Bucket.
Contoh
Konfigurasikan parameter penjadwalan untuk node Shell EMR
Anda dapat mengembangkan kode tugas di editor Shell dan mendefinisikan variabel dalam format ${variable_name}. Kemudian, pada tab Schedule di sisi kanan halaman editor node, tetapkan nilai variabel di bagian Scheduling Parameters. Hal ini memungkinkan parameter dilewatkan secara dinamis saat node dijadwalkan untuk dijalankan. Untuk informasi selengkapnya tentang cara menggunakan parameter penjadwalan, lihat Format parameter penjadwalan yang didukung. Kode berikut memberikan contoh.
DD=`date`; echo "hello world, $DD" ## You can use scheduling parameters. echo ${var};CatatanJika Anda menggunakan kluster DataLake, perintah-perintah berikut juga didukung:
Perintah Shell: Perintah Shell di direktori
/usr/bindan/bin, seperti ls dan echo.Komponen Yarn: hadoop, hdfs, dan yarn.
Komponen Spark: spark-submit.
Komponen Sqoop: sqoop-export, sqoop-import, dan sqoop-import-all-tables.
Saat menggunakan komponen ini, Anda harus menambahkan alamat IP kelompok sumber daya ke daftar putih RDS.
Jalankan tugas Shell
Pada tab Debug, konfigurasikan Compute Resource dan Resource Group.
CatatanAnda juga dapat mengonfigurasi CUs For Scheduling berdasarkan sumber daya yang diperlukan untuk eksekusi tugas. Nilai default-nya adalah
0.25CUs.Anda dapat mengonfigurasi informasi Image sesuai kebutuhan.
Untuk mengakses sumber data melalui jaringan publik atau di VPC, Anda harus menggunakan kelompok sumber daya untuk penjadwalan yang telah lulus uji konektivitas dengan sumber data tersebut. Untuk informasi selengkapnya, lihat Solusi konektivitas jaringan.
Pada bilah alat, klik Run untuk menjalankan tugas Shell.
Untuk menjalankan tugas node secara berkala, Anda dapat mengonfigurasi properti penjadwalan untuk node sesuai kebutuhan. Untuk informasi selengkapnya, lihat Mengonfigurasi properti penjadwalan untuk node.
CatatanUntuk menyesuaikan lingkungan komponen, Anda dapat membuat gambar kustom berdasarkan citra resmi
dataworks_emr_base_task_poddan gunakan citra tersebut di Data Studio.Sebagai contoh, saat membuat gambar kustom, Anda dapat mengganti paket JAR Spark atau menyertakan
libraries,files, atauJAR packagestertentu.Setelah mengonfigurasi tugas node, deploy node tersebut. Untuk informasi selengkapnya, lihat Deploy node dan alur kerja.
Setelah tugas dipublikasikan, Anda dapat melihat status berjalan tugas yang dipicu otomatis di Operation Center. Untuk informasi selengkapnya, lihat Memulai Operation Center.
Referensi
Untuk mempelajari cara menjalankan skrip Python pada node Shell EMR menggunakan perintah Python 2 atau Python 3, lihat Menjalankan skrip Python pada node Shell.
Untuk mempelajari cara menggunakan alat ossutil pada node Shell EMR, lihat Menggunakan ossutil pada node Shell.