Anda dapat membuat node EMR Shell di DataWorks untuk menjalankan skrip Shell kustom guna melakukan operasi lanjutan, seperti pemrosesan data, memanggil komponen Hadoop, dan manajemen file. Topik ini menjelaskan cara mengonfigurasi dan menggunakan node EMR Shell untuk mengedit serta menjalankan tugas Shell.
Prasyarat
-
Sebelum memulai pengembangan node, jika Anda memerlukan lingkungan komponen kustom, buat custom image berdasarkan image resmi
dataworks_emr_base_task_pod, lalu gunakan di Data Studio. Untuk informasi selengkapnya, lihat Create a custom image dan Use images in data development.Contohnya, saat membuat custom image, Anda dapat mengganti paket JAR Spark atau menambahkan dependensi pada
libraries,files, atauJAR packagestertentu. -
Buat kluster Alibaba Cloud EMR dan daftarkan ke DataWorks. Untuk informasi selengkapnya, lihat New Data Studio: Attach an EMR compute resource.
-
(Opsional, untuk pengguna RAM) Pengguna Resource Access Management (RAM) untuk pengembangan tugas harus ditambahkan ke ruang kerja dan diberi peran Development atau Workspace Administrator (peran ini mencakup izin yang luas dan harus diberikan dengan hati-hati). Untuk informasi selengkapnya, lihat Add workspace members.
Jika Anda menggunakan akun root, lewati langkah ini.
Batasan
-
Node EMR Shell hanya dapat berjalan pada serverless resource group (disarankan) atau exclusive resource group for scheduling. Penggunaan custom image untuk pengembangan data memerlukan serverless resource group.
-
Untuk mengelola metadata kluster DataLake atau kluster kustom di DataWorks, Anda harus terlebih dahulu mengonfigurasi EMR-HOOK pada kluster tersebut. Untuk informasi selengkapnya, lihat Configure EMR-HOOK for Hive.
CatatanJika EMR-HOOK tidak dikonfigurasi pada kluster, Anda tidak dapat melihat metadata secara real time, menghasilkan log audit, menampilkan alur data, atau menjalankan tugas governance terkait EMR di DataWorks.
-
Untuk tugas yang dikirim dengan
spark-submit, aturdeploy-modekecluster. Modeclienttidak disarankan. -
Node EMR Shell berjalan pada kelompok sumber daya penjadwalan DataWorks, bukan pada kluster EMR. Anda dapat menggunakan beberapa perintah komponen EMR, tetapi tidak dapat langsung membaca status sumber daya dari kluster EMR. Oleh karena itu, Anda harus terlebih dahulu mengunggah semua sumber daya yang diperlukan ke DataWorks. Untuk informasi selengkapnya, lihat Resource Management.
-
Node EMR Shell tidak mendukung menjalankan file Python. Gunakan Shell node untuk menjalankannya.
Prosedur
-
Pada editor node EMR Shell, lakukan operasi berikut.
Kembangkan kode Shell
Anda dapat memilih opsi berdasarkan kebutuhan spesifik Anda:
Opsi 1: Unggah dan referensikan EMR JAR
Anda dapat mengunggah sumber daya dari mesin lokal ke Data Studio, lalu mereferensikannya. Jika Anda menggunakan kluster DataLake, ikuti langkah-langkah berikut untuk mereferensikan sumber daya EMR JAR. Jika sumber daya yang dibutuhkan oleh node EMR Shell terlalu besar untuk diunggah melalui antarmuka DataWorks, Anda dapat menyimpan sumber daya tersebut di HDFS dan mereferensikannya dalam kode Anda.
-
Buat sumber daya EMR JAR.
-
Untuk informasi selengkapnya, lihat Resource Management. Simpan paket JAR yang dihasilkan dalam Prepare initial data and a JAR package ke direktori sumber daya JAR
emr/jars. Klik Click Upload. -
Pilih Storage Path, Data Sources, dan Resource Group.
-
Klik Save.
Untuk Storage Path, pilih HDFS.
-
-
Referensikan sumber daya EMR JAR.
-
Buka node EMR Shell yang telah dibuat dan buka halaman editor kode.
-
Pada panel navigasi kiri, temukan sumber daya yang ingin Anda referensikan di bawah Resource Management (misalnya,
onaliyun_mr_wordcount-1.0-SNAPSHOT.jar). Klik kanan sumber daya tersebut dan pilih Insert Resource Path. -
Setelah Anda memilih referensi, pesan sukses akan muncul pada halaman pengeditan kode node EMR Shell. Hal ini menandakan bahwa sumber daya kode berhasil direferensikan. Anda kemudian harus menjalankan perintah berikut. Nama paket sumber daya, nama Bucket, dan informasi path dalam perintah berikut hanyalah contoh. Anda harus menggantinya 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 di node EMR Shell.
-
Opsi 2: Referensikan langsung sumber daya OSS
Anda dapat langsung mereferensikan sumber daya OSS dengan menggunakan OSS REF. Saat menjalankan node EMR, DataWorks secara otomatis memuat sumber daya OSS dari kode Anda ke mesin lokal.
ossref://{endpoint}/{bucket}/{object}-
Endpoint: Titik akhir akses publik untuk OSS. Jika Anda mengosongkan parameter ini, bucket OSS harus berada di wilayah yang sama dengan kluster EMR.
-
bucket: Nama bucket, yaitu kontainer yang menyimpan objek di OSS. Setiap bucket memiliki nama unik. Anda dapat login ke OSS console untuk melihat semua buckets di bawah akun saat ini.
-
object: Objek spesifik, seperti nama file atau path, yang disimpan di dalam bucket.
Contoh
Konfigurasikan parameter penjadwalan EMR Shell
Saat mengembangkan kode tugas di editor Shell, Anda dapat mendefinisikan variabel menggunakan format ${variable_name}. Kemudian, berikan nilai variabel tersebut di bagian Scheduling Parameters di bawah Scheduling Settings pada panel kanan editor node. Hal ini memungkinkan Anda untuk pass parameter secara dinamis selama eksekusi terjadwal. Untuk informasi selengkapnya tentang parameter penjadwalan, lihat Sources and expressions of scheduling parameters. Contoh kode berikut menunjukkan penggunaannya:
DD=`date`; echo "hello world, $DD" ## Can be used with scheduling parameters echo ${var};CatatanJika Anda menggunakan kluster DataLake, alat baris perintah berikut juga didukung.
-
Perintah Shell: Perintah Shell di
/usr/bindan/bin, seperti ls dan echo. -
Komponen YARN:
hadoop,hdfs, danyarn. -
Komponen Spark:
spark-submit. -
Komponen Sqoop:
sqoop-export,sqoop-import,sqoop-import-all-tables, dan lainnya.
Jika Anda menggunakan komponen-komponen ini untuk mengakses instans RDS, Anda harus menambahkan alamat IP kelompok sumber daya ke daftar izin (allowlist) RDS.
Jalankan tugas Shell
-
Pada bagian Run Configuration, konfigurasikan Compute Resource dan Resource Group.
Catatan-
Anda juga dapat mengatur CUs for Scheduling berdasarkan sumber daya yang dibutuhkan untuk eksekusi tugas. CU default adalah
0.25. -
Anda dapat memilih Image sesuai kebutuhan tugas Anda.
-
Untuk mengakses sumber data di jaringan publik atau lingkungan VPC, Anda harus menggunakan kelompok sumber daya penjadwalan yang dapat terhubung ke sumber data tersebut. Untuk informasi selengkapnya, lihat Network connectivity solutions.
-
-
Pada bilah alat, klik Run untuk menjalankan tugas Shell.
-
-
Untuk menjalankan tugas node secara berkala, konfigurasikan properti penjadwalannya. Untuk informasi selengkapnya, lihat Configure scheduling properties for a node.
CatatanJika Anda perlu menyesuaikan lingkungan komponen, Anda dapat membuat custom image berdasarkan image resmi
dataworks_emr_base_task_poddan use the image in Data Development.Contohnya, saat membuat custom image, Anda dapat mengganti paket JAR Spark atau menambahkan dependensi pada
libraries,files, atauJAR packagestertentu. -
Setelah mengonfigurasi node, deploy node tersebut. Untuk informasi selengkapnya, lihat Deploy nodes and workflows.
-
Setelah tugas di-deploy, Anda dapat melihat status eksekusinya di Operation Center. Untuk informasi selengkapnya, lihat Get started with Operation Center.
FAQ
T: Pemetaan hosts telah dikonfigurasi pada kelompok sumber daya penjadwalan lama, tetapi node EMR Shell tetap melaporkan kegagalan resolusi. Bagaimana cara mengatasinya?
J: Anda harus menggunakan kelompok sumber daya yang telah dikonfigurasi untuk melakukan inisialisasi ulang kluster EMR agar skrip EMR Shell dapat mengenali pemetaan hosts yang baru ditambahkan. Buka halaman daftar sumber daya komputasi, klik Initialize Resources, lalu klik Re-initialize pada kotak dialog untuk memastikan inisialisasi berhasil.
Dokumentasi terkait
-
Untuk informasi tentang penggunaan perintah Python 2 atau Python 3 guna menjalankan skrip Python di node EMR Shell, lihat Run Python scripts on Shell-type nodes.
-
Untuk informasi tentang penggunaan tool ossutil di node EMR Shell, lihat Use ossutil on Shell-type nodes.