Anda dapat membuat node EMR Shell di DataWorks untuk menjalankan skrip Shell kustom guna melakukan operasi lanjutan, seperti pemrosesan data, memanggil komponen Hadoop, dan mengelola file. Topik ini menjelaskan cara mengonfigurasi, mengembangkan, dan menjalankan tugas Shell di node EMR Shell.
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.Sebagai contoh, Anda dapat mengganti paket JAR Spark atau menyertakan
libraries,files, atauJAR packagestertentu saat membuat custom image. -
Kluster EMR telah didaftarkan ke DataWorks. Untuk informasi selengkapnya, lihat DataStudio (versi lama): Bind an EMR compute resource.
-
(Opsional, untuk pengguna RAM) Pengguna RAM untuk pengembangan tugas harus menjadi anggota ruang kerja dan memiliki peran Development atau Workspace Administrator. Peran Workspace Administrator memiliki izin yang luas, jadi berikan dengan hati-hati. Untuk informasi selengkapnya, lihat Add members to a workspace and assign roles to them.
-
Grup sumber daya serverless telah dibeli dan dikonfigurasi. Konfigurasi mencakup mengikat grup sumber daya ke ruang kerja dan menyiapkan jaringan. Untuk informasi selengkapnya, lihat Use a serverless resource group.
-
Alur kerja telah dibuat di DataStudio.
Di DataStudio, seluruh pengembangan node diorganisir ke dalam alur kerja. Oleh karena itu, Anda harus membuat alur kerja sebelum membuat node. Untuk informasi selengkapnya, lihat Create a workflow.
-
Jika Anda menjalankan skrip Python pada grup sumber daya DataWorks dan kode Anda memerlukan paket pihak ketiga, Anda harus menyiapkan lingkungan paket pada grup sumber daya tersebut. Metodenya bervariasi tergantung jenis grup sumber daya yang digunakan:
-
grup sumber daya serverless (disarankan): Instal paket pihak ketiga menggunakan manajemen image. Untuk informasi selengkapnya, lihat Custom images.
-
exclusive resource group for scheduling: Instal paket pihak ketiga menggunakan O&M Assistant. Untuk informasi selengkapnya, lihat O&M Assistant.
-
Batasan
-
Anda hanya dapat menjalankan tugas jenis ini pada serverless resource group (disarankan) atau exclusive resource group for scheduling. Jika Anda perlu menggunakan image dalam pengembangan data, Anda harus menggunakan serverless resource group.
-
Untuk mengelola metadata DataLake atau kluster kustom di DataWorks, Anda harus mengonfigurasi EMR-HOOK pada kluster tersebut. Tanpa EMR-HOOK, DataWorks tidak dapat menampilkan metadata secara real-time, menghasilkan log audit, menampilkan alur data, atau menjalankan tugas tata kelola terkait EMR. Untuk informasi selengkapnya tentang cara mengonfigurasi EMR-HOOK, lihat Configure EMR-HOOK for Hive.
-
Untuk tugas yang dikirim menggunakan spark-submit, kami menyarankan menggunakan
cluster modeuntuk parameter deploy-mode, bukanclient mode. -
Node EMR Shell berjalan pada grup sumber daya penjadwalan DataWorks, bukan pada 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 mengunggahnya terlebih dahulu ke DataWorks. Untuk informasi selengkapnya, lihat Upload EMR resources.
-
Node EMR Shell tidak mendukung menjalankan file Python. Gunakan Shell node sebagai gantinya.
Langkah 1: Buat node EMR Shell
Login ke DataWorks console. Di wilayah target, klik di panel navigasi kiri. Pilih ruang kerja dari daftar drop-down dan klik Go to Data Development.
-
Buat node EMR Shell.
-
Klik kanan alur kerja target dan pilih .
CatatanAtau, arahkan kursor ke Create dan pilih .
-
Pada kotak dialog Create Node, masukkan Name dan pilih Engine Instance, Node Type, dan Path. Klik OK untuk membuka editor node EMR Shell.
CatatanNama node dapat berisi huruf kapital, huruf kecil, karakter Tionghoa, angka, garis bawah (_), dan titik (.).
-
Langkah 2: Kembangkan tugas EMR Shell
Pada halaman editor node EMR Shell, klik ganda node yang telah Anda buat. Lalu, pilih salah satu opsi berikut sesuai skenario Anda:
-
(Disarankan) Unggah sumber daya dari komputer lokal ke DataStudio, lalu referensikan dalam kode Anda. Untuk informasi selengkapnya, lihat Opsi 1: Unggah sumber daya lalu referensikan sumber daya JAR EMR.
-
Referensikan sumber daya OSS menggunakan fitur OSS REF. Untuk informasi selengkapnya, lihat Opsi 2: Referensikan langsung sumber daya OSS.
Opsi 1: Unggah dan referensikan sumber daya JAR EMR
Anda dapat mengunggah sumber daya dari komputer lokal ke DataStudio, lalu mereferensikannya. Jika Anda menggunakan kluster DataLake, Anda dapat mengikuti langkah-langkah berikut untuk mereferensikan sumber daya JAR EMR. Jika node EMR Shell bergantung pada sumber daya besar, Anda tidak dapat mengunggah sumber daya tersebut melalui halaman DataWorks. Dalam kasus ini, Anda dapat menyimpan sumber daya di HDFS dan mereferensikannya dalam kode Anda.
-
Buat sumber daya JAR EMR.
Untuk informasi selengkapnya, lihat Create and use EMR resources. Dalam contoh ini, paket JAR yang dihasilkan dalam Prepare initial data and a JAR package disimpan di direktori emr/jars. Saat pertama kali menggunakan fitur ini, Anda harus mengklik Authorize, lalu klik Click Upload untuk mengunggah sumber daya JAR.
-
Referensikan sumber daya JAR EMR.
-
Buka node EMR Shell yang telah dibuat dan buka editor kode.
-
Di bawah node , temukan Insert Resource Path target (misalnya,
onaliyun_mr_wordcount-1.0-SNAPSHOT.jar), lalu klik kanan dan pilih Insert Resource Path. -
Mereferensikan sumber daya akan menambahkan pernyataan dalam format
##@resource_reference{""}ke editor kode node EMR Shell. Pernyataan ini menunjukkan bahwa sumber daya direferensikan. Kemudian, jalankan perintah berikut. Nama paket sumber daya, nama bucket, dan informasi path dalam perintah berikut hanya untuk 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/outputsCatatanAnda tidak dapat menambahkan komentar ke kode node EMR Shell.
-
Opsi 2: Referensikan sumber daya OSS
Konfigurasikan parameter penjadwalan
Definisikan variabel dalam kode Anda menggunakan format ${variable_name}. Anda kemudian dapat memberikan nilai ke variabel tersebut di bagian Scheduling > Scheduling Parameter di panel kanan untuk meneruskan parameter dinamis saat waktu proses. Untuk informasi selengkapnya, lihat Supported formats for scheduling parameters. Kode berikut memberikan contoh:
DD=`date`;
echo "hello world, $DD"
## You can use this with scheduling parameters.
echo ${var};
Jika Anda menggunakan kluster DataLake, alat baris 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.
Untuk menggunakan komponen Sqoop dengan ApsaraDB RDS, Anda harus menambahkan alamat IP grup sumber daya ke Daftar putih RDS ApsaraDB RDS.
Jalankan tugas EMR Shell
-
Di 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 melalui internet atau VPC, Anda harus menggunakan grup sumber daya penjadwalan yang telah lulus uji konektivitas untuk sumber daya komputasi tersebut. Untuk informasi selengkapnya, lihat Network connectivity solutions.
-
Jika Anda perlu mengubah grup sumber daya untuk eksekusi tugas berikutnya, Anda dapat mengklik ikon Run with Parameters
dan memilih grup sumber daya penjadwalan yang berbeda.
-
-
Klik ikon
untuk menyimpan skrip Shell. -
(Opsional) Lakukan pengujian asap.
Jika Anda ingin melakukan pengujian asap di lingkungan pengembangan, Anda dapat menjalankannya sebelum atau setelah mengirimkan node. Untuk informasi selengkapnya, lihat Perform smoke testing.
Langkah 3: Konfigurasikan properti penjadwalan
Jika Anda ingin sistem menjalankan tugas pada node secara berkala, 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 Anda perlu menyesuaikan lingkungan komponen, Anda dapat membuat custom image berdasarkan image resmi
dataworks_emr_base_task_poddan menggunakannya di DataStudio.Sebagai contoh, Anda dapat mengganti paket JAR Spark atau menyertakan
libraries,files, atauJAR packagestertentu saat membuat custom image.
Langkah 4: Terapkan tugas
Setelah tugas pada node dikonfigurasi, Anda harus melakukan commit dan deploy tugas tersebut. Setelah Anda melakukan commit dan deploy tugas, 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. Pada 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 pada 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 dikomit hanya dapat dideploy setelah kode tugas tersebut lolos tinjauan kode. Untuk informasi selengkapnya, lihat Code review.
-
Jika Anda menggunakan ruang kerja dalam mode standar, Anda harus mendeploy tugas di lingkungan produksi setelah melakukan commit tugas. Untuk mendeploy tugas pada node, klik Deploy di pojok kanan atas tab konfigurasi node. Untuk informasi selengkapnya, lihat Deploy nodes.
Operasi lainnya
Setelah Anda melakukan commit dan deploy tugas, tugas tersebut akan dijalankan secara berkala 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 tersebut. Untuk informasi selengkapnya, lihat Manage scheduled tasks.
Topik terkait
Untuk mempelajari cara menggunakan perintah Python 2 atau Python 3 untuk menjalankan skrip Python di node EMR Shell, lihat Run a Python script in a Shell-type node.
Untuk mempelajari cara menggunakan tool OSSUtils di node EMR Shell, lihat Use ossutil to access OSS in a Shell-type node.