Topik ini menjelaskan cara menggunakan node Shell EMR untuk mengonfigurasi, mengedit, dan menjalankan skrip Shell.
Prasyarat
Untuk menyesuaikan lingkungan komponen suatu node, buat custom image berdasarkan image resmi
dataworks_emr_base_task_pod. Untuk informasi selengkapnya, lihat Custom images dan gunakan image tersebut di Data Development.Sebagai contoh, Anda dapat mengganti paket JAR Spark atau menambahkan dependensi pada
libraries,files, atauJAR packagestertentu saat membuat custom image.Anda telah membuat kluster Alibaba Cloud E-MapReduce (EMR) dan mendaftarkannya ke DataWorks. Untuk informasi selengkapnya, lihat Data Studio: Mengaitkan resource komputasi EMR.
(Opsional, wajib bagi pengguna RAM) Tambahkan Pengguna Resource Access Management (RAM) yang bertanggung jawab atas pengembangan tugas ke Workspace dan berikan peran Developer atau Workspace Administrator. Peran Workspace Administrator memiliki izin yang luas, sehingga berikan dengan hati-hati. Untuk informasi selengkapnya tentang penambahan anggota, lihat Menambahkan anggota ke workspace.
Jika Anda menggunakan Akun Alibaba Cloud, Anda dapat melewati langkah ini.
Batasan
Jenis tugas ini hanya berjalan pada Serverless resource group (disarankan) atau exclusive resource group for scheduling. Jika Anda menggunakan image di Data Development, Anda harus menggunakan Serverless resource group.
Untuk mengelola metadata kluster Data Lake atau kluster kustom di DataWorks, Anda harus mengonfigurasi EMR-HOOK pada kluster tersebut. Untuk informasi selengkapnya tentang cara mengonfigurasi EMR-HOOK, lihat Mengonfigurasi EMR-HOOK untuk Hive.
CatatanJika EMR-HOOK tidak dikonfigurasi pada kluster, Anda tidak dapat melihat metadata secara real-time, menghasilkan log audit, menampilkan Data Lineage, atau melakukan tugas tata kelola data terkait EMR di DataWorks.
Untuk tugas
spark-submit, gunakan modeclusteruntukdeploy-modealih-alih modeclient.Node Shell EMR berjalan pada resource group penjadwalan DataWorks, bukan pada kluster EMR. Anda dapat menggunakan beberapa perintah komponen EMR, tetapi tidak dapat mengakses sumber daya pada kluster EMR secara langsung. Untuk mereferensikan suatu resource, Anda harus mengunggahnya terlebih dahulu ke DataWorks. Untuk informasi selengkapnya, lihat Resource management.
Node Shell EMR tidak mendukung menjalankan file Python. Gunakan Shell node untuk menjalankan skrip Python.
Prosedur
Pada editor node Shell EMR, ikuti langkah-langkah berikut:
Kembangkan skrip shell
Pilih salah satu metode berikut sesuai skenario Anda:
Metode 1: Referensi JAR yang diunggah
Anda dapat mengunggah resource dari mesin lokal ke DataWorks dan mereferensikannya dalam kode Anda. Jika Anda menggunakan kluster Data Lake, ikuti langkah-langkah berikut untuk mereferensikan resource JAR EMR. Jika ukuran resource terlalu besar untuk diunggah melalui UI, simpan di HDFS dan referensikan dari sana.
Buat resource JAR EMR.
Untuk informasi selengkapnya, lihat Resource management. Simpan paket JAR yang dihasilkan dalam Prepare source data and a JAR package ke direktori resource JAR
emr/jars. Klik Click to upload untuk mengunggah resource JAR.Pilih Storage Path, Data Source, dan Resource Group.
Klik Save.

Referensikan resource JAR EMR.
Buka editor kode node EMR Shell.
Pada Resource Management di panel navigasi sebelah kiri, temukan resource yang ingin Anda referensikan (misalnya,
onaliyun_mr_wordcount-1.0-SNAPSHOT.jar), klik kanan, lalu pilih Reference Resource.Setelah Anda mereferensikan resource tersebut, pesan sukses akan muncul di editor kode node. Kemudian, jalankan perintah contoh berikut, ganti nama paket resource, bucket, dan path dengan nilai 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 di editor node Shell EMR.
Metode 2: Referensi resource OSS
Anda dapat langsung mereferensikan resource OSS menggunakan OSS REF. Saat Anda menjalankan node EMR, DataWorks secara otomatis mengunduh resource OSS yang ditentukan dalam kode ke lingkungan lokal. Metode ini sering digunakan dalam skenario di mana tugas EMR memerlukan dependensi JAR atau bergantung pada skrip. Format referensinya adalah sebagai berikut:
ossref://{endpoint}/{bucket}/{object}endpoint: Titik akhir publik layanan OSS. Jika Anda menghilangkan parameter ini, bucket OSS harus berada di wilayah yang sama dengan kluster EMR.
Bucket: Kontainer di OSS untuk menyimpan objek. Setiap Bucket memiliki nama unik. Anda dapat melihat semua bucket di akun Anda di Konsol OSS.
object: Objek spesifik, seperti nama file atau path, yang disimpan dalam Bucket.
Contoh
Konfigurasikan parameter penjadwalan
Di editor Shell, Anda dapat mendefinisikan variabel dalam kode menggunakan format `${Variable_Name}`. Anda kemudian dapat memberikan nilai ke variabel tersebut di bagian Scheduling Parameter di bawah Scheduling Configuration di sisi kanan editor node. Hal ini memungkinkan Anda untuk secara dinamis pass parameter ke kode Anda dalam eksekusi terjadwal. Untuk informasi selengkapnya tentang penggunaan parameter penjadwalan, lihat Sources and expressions of scheduling parameters. Kode berikut memberikan contoh:
DD=`date`; echo "hello world, $DD" ## You can use scheduling parameters. echo ${var};CatatanJika Anda menggunakan kluster Data Lake, alat baris perintah berikut juga didukung.
Perintah Shell: Perintah Shell di direktori
/usr/bindan/bin, sepertilsdanecho.Komponen Yarn:
hadoop,hdfs, danyarn.Komponen Spark:
spark-submit.Komponen Sqoop:
sqoop-export,sqoop-import,sqoop-import-all-tables, dan sebagainya.
Saat menggunakan komponen-komponen ini, tambahkan alamat IP resource group ke daftar izin (allowlist) instans ApsaraDB RDS Anda.
Jalankan tugas shell
Pada Run Configuration, konfigurasikan compute resource dan Resource Group.
CatatanAnda juga dapat mengonfigurasi Scheduling CUs berdasarkan resource yang dibutuhkan tugas. Nilai default-nya adalah
0.25.Anda dapat mengonfigurasi image sesuai kebutuhan tugas Anda.
Untuk mengakses sumber data melalui internet publik atau di VPC, Anda harus menggunakan resource group penjadwalan yang dapat terhubung ke sumber data tersebut. Untuk informasi selengkapnya, lihat Network connectivity solutions.
Pada bilah alat, klik Run.
Untuk menjalankan tugas node secara terjadwal, konfigurasikan properti penjadwalannya. Untuk informasi selengkapnya tentang konfigurasi tersebut, lihat Node scheduling configuration.
CatatanUntuk menyesuaikan lingkungan komponen, buat
dataworks_emr_base_task_podkustom berdasarkan image resmi dan Custom images, serta gunakan image tersebut di Data Development.Sebagai contoh, Anda dapat mengganti paket JAR Spark atau menambahkan dependensi pada
libraries,files, ataujar packagestertentu saat membuat custom image.Setelah mengonfigurasi tugas node, Anda harus melakukan deployment-nya. Untuk informasi selengkapnya, lihat Node and workflow deployment.
Setelah tugas dideploy, Anda dapat melihat status eksekusi tugas periodik di Operation Center. Untuk informasi selengkapnya, lihat Getting started with Operation Center.
Topik terkait
Untuk mempelajari cara menggunakan perintah Python 2 atau Python 3 guna menjalankan skrip Python di node Shell EMR, lihat Use a Shell node to run Python scripts.
Untuk mempelajari cara menggunakan OSSUtils di node Shell EMR, lihat Use ossutil in Shell nodes to access OSS.