全部产品
Search
文档中心

DataWorks:Node Shell EMR

更新时间:Feb 05, 2026

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

    Catatan

    Jika 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 mode cluster untuk deploy-mode alih-alih mode client.

  • 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

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

    1. Buat resource JAR EMR.

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

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

      3. Klik Save.

      image

    2. Referensikan resource JAR EMR.

      1. Buka editor kode node EMR Shell.

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

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

      Komentar 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

    1. Unggah file contoh ke bucket OSS. Topik ini menggunakan emr_shell_test.sh sebagai contoh. Isi file contohnya adalah sebagai berikut:

      #!/bin/sh
      echo "Hello, DataWorks!"
    2. Langsung referensikan resource OSS di node Shell EMR.

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

      oss-cn-shanghai.aliyuncs.com adalah endpoint, test-oss-of-dataworks adalah nama Bucket, dan emr_shell_test.sh adalah 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

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

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

    • Perintah Shell: Perintah Shell di direktori /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 sebagainya.

    Saat menggunakan komponen-komponen ini, tambahkan alamat IP resource group ke daftar izin (allowlist) instans ApsaraDB RDS Anda.

    Jalankan tugas shell

    1. Pada Run Configuration, konfigurasikan compute resource dan Resource Group.

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

    2. Pada bilah alat, klik Run.

  2. Untuk menjalankan tugas node secara terjadwal, konfigurasikan properti penjadwalannya. Untuk informasi selengkapnya tentang konfigurasi tersebut, lihat Node scheduling configuration.

    Catatan

    Untuk menyesuaikan lingkungan komponen, buat dataworks_emr_base_task_pod kustom 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, atau jar packages tertentu saat membuat custom image.

  3. Setelah mengonfigurasi tugas node, Anda harus melakukan deployment-nya. Untuk informasi selengkapnya, lihat Node and workflow deployment.

  4. Setelah tugas dideploy, Anda dapat melihat status eksekusi tugas periodik di Operation Center. Untuk informasi selengkapnya, lihat Getting started with Operation Center.

Topik terkait