All Products
Search
Document Center

DataWorks:Node EMR Shell

Last Updated:Jun 23, 2026

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, atau JAR packages tertentu.

  • 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.

    Catatan

    Jika 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, atur deploy-mode ke cluster. Mode client tidak 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

  1. 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.

    1. Buat sumber daya EMR JAR.

      1. 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.

      2. Pilih Storage Path, Data Sources, dan Resource Group.

      3. Klik Save.

      Untuk Storage Path, pilih HDFS.

    2. Referensikan sumber daya EMR JAR.

      1. Buka node EMR Shell yang telah dibuat dan buka halaman editor kode.

      2. 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.

      3. 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/outputs
      Catatan

      Komentar 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

    1. Unggah file contoh ke bucket OSS. Dalam contoh ini, kami menggunakan file emr_shell_test.sh dengan isi sebagai berikut:

      #!/bin/sh
      echo "Hello, DataWorks!"
    2. Referensikan langsung sumber daya OSS di node EMR Shell.

      sh ossref://oss-cn-shanghai.aliyuncs.com/test-oss-of-dataworks/emr_shell_test.sh
      Catatan

      Dalam perintah ini, oss-cn-shanghai.aliyuncs.com adalah endpoint, test-oss-of-dataworks adalah nama bucket, dan emr_shell_test.sh adalah nama file object.

      Perintah tersebut menghasilkan output berikut dari file emr_shell_test.sh:

      ...
      >>> [2024-10-24 15:46:01][INFO   ][CommandExecutor       ]: Process ready to execute. command: sh ./emr_shell_test.sh
      >>> [2024-10-24 15:46:01][INFO   ][CommandExecutor       ]: Command state update to RUNNING
      >>> [2024-10-24 15:46:01][INFO   ][CommandExecutor       ]: Process start to execute...
      Process Output>>> Hello, DataWorks!
      ...

    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};
    Catatan

    Jika Anda menggunakan kluster DataLake, alat baris perintah berikut juga didukung.

    • Perintah Shell: Perintah Shell di /usr/bin dan /bin, seperti ls dan echo.

    • Komponen YARN: hadoop, hdfs, dan yarn.

    • 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

    1. 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.

    2. Pada bilah alat, klik Run untuk menjalankan tugas Shell.

  2. Untuk menjalankan tugas node secara berkala, konfigurasikan properti penjadwalannya. Untuk informasi selengkapnya, lihat Configure scheduling properties for a node.

    Catatan

    Jika Anda perlu menyesuaikan lingkungan komponen, Anda dapat membuat custom image berdasarkan image resmi dataworks_emr_base_task_pod dan use the image in Data Development.

    Contohnya, saat membuat custom image, Anda dapat mengganti paket JAR Spark atau menambahkan dependensi pada libraries, files, atau JAR packages tertentu.

  3. Setelah mengonfigurasi node, deploy node tersebut. Untuk informasi selengkapnya, lihat Deploy nodes and workflows.

  4. 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