Todos los productos
Search
Centro de documentos

DataWorks:Nodo EMR Shell

Última actualización: Sep 04, 2026

Los nodos EMR Shell en DataWorks ejecutan scripts de Shell personalizados para operaciones avanzadas, como procesamiento de datos, invocación de componentes de Hadoop y gestión de archivos.

Requisitos previos

  • Antes de comenzar el desarrollo de nodos, si requiere un entorno de componentes personalizado, cree una imagen personalizada basada en la imagen oficial dataworks_emr_base_task_pod y utilícela en Data Studio. Para obtener más información, consulte Create a custom image y Use images in data development.

    Por ejemplo, puede reemplazar paquetes JAR de Spark o agregar dependencias de libraries, files o JAR packages específicos al crear una imagen personalizada.

  • Cree un clúster de Alibaba Cloud EMR y regístrelo en DataWorks. Para obtener más información, consulte New Data Studio: Attach an EMR compute resource.

  • (Opcional, para usuarios de RAM) El usuario de Resource Access Management (RAM) destinado al desarrollo de tareas debe agregarse al workspace y se le debe asignar el rol de Development o Workspace Administrator (este rol incluye permisos amplios y debe otorgarse con precaución). Para obtener más información, consulte Add workspace members.

    Si utiliza una cuenta root, omita este paso.

Limitaciones

  • Los nodos EMR Shell solo pueden ejecutarse en un serverless resource group (recomendado) o en un resource group exclusivo para programación. El uso de una imagen personalizada para el desarrollo de datos requiere un resource group serverless.

  • Para gestionar metadatos de un clúster DataLake o un clúster personalizado en DataWorks, primero debe configurar EMR-HOOK en el clúster. Para obtener más información, consulte Configure EMR-HOOK for Hive.

    Nota

    Si no se configura EMR-HOOK en el clúster, no podrá ver metadatos en tiempo real, generar registros de auditoría, mostrar linaje de datos ni realizar tareas de gobernanza relacionadas con EMR en DataWorks.

  • Para las tareas enviadas con spark-submit, establezca el deploy-mode en cluster. No se recomienda el modo client.

  • Los nodos EMR Shell se ejecutan en resource groups de programación de DataWorks, no en clústeres de EMR. Puede usar algunos comandos de componentes de EMR, pero no puede leer directamente el estado de los recursos del clúster de EMR. Por lo tanto, primero debe cargar en DataWorks cualquier recurso necesario. Para obtener más información, consulte Resource Management.

  • Los nodos EMR Shell no admiten la ejecución de archivos Python. Utilice un Shell node para ejecutarlos.

Procedimiento

  1. En el editor de nodos EMR Shell, realice las siguientes operaciones.

    Desarrollo de código Shell

    Elija una opción según sus necesidades:

    Opción 1: Cargar y hacer referencia a un JAR de EMR

    Cargue recursos desde su computadora local a Data Studio y haga referencia a ellos. Para un clúster DataLake, siga estos pasos para hacer referencia a un recurso JAR de EMR. Si un recurso es demasiado grande para cargarse mediante la interfaz de usuario de DataWorks, almacénelo en HDFS y haga referencia a él en su código.

    1. Cree un recurso JAR de EMR.

      1. Para obtener más información, consulte Resource Management. Almacene el paquete JAR generado en Prepare initial data and a JAR package en el directorio de recursos JAR emr/jars. Haga clic en Click Upload.

      2. Seleccione una Storage Path, Data Sources y un Resource Group.

      3. Haga clic en Save.

      Para Storage Path, seleccione HDFS.

    2. Haga referencia al recurso JAR de EMR.

      1. Abra el nodo EMR Shell creado y vaya a la página del editor de código.

      2. En el panel de navegación izquierdo, busque el recurso al que desea hacer referencia en Resource Management (por ejemplo, onaliyun_mr_wordcount-1.0-SNAPSHOT.jar). Haga clic derecho en el recurso y seleccione Insert Resource Path.

      3. Después de seleccionar una referencia, aparecerá un mensaje de confirmación en la página de edición de código del nodo EMR Shell, lo que indica que el recurso se referenció correctamente. Ejecute el siguiente comando y reemplace el paquete de recursos, el nombre del bucket y la ruta con sus valores reales.

      ##@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
      Nota

      No se admiten comentarios al editar código en un nodo EMR Shell.

    Opción 2: Hacer referencia directa a un recurso de OSS

    Haga referencia a recursos de OSS directamente mediante OSS REF. Cuando se ejecuta el nodo EMR, DataWorks carga automáticamente los recursos de OSS en la máquina local.

    ossref://{endpoint}/{bucket}/{object}
    • Endpoint: El endpoint de acceso público para OSS. Si deja este parámetro vacío, el bucket de OSS debe estar en la misma región que el clúster de EMR.

    • bucket: El nombre del bucket, que es un contenedor donde se almacenan objetos en OSS. Cada bucket tiene un nombre único. Puede iniciar sesión en la consola de OSS para ver todos los buckets bajo la cuenta actual.

    • object: El objeto específico, como un nombre de archivo o una ruta, almacenado en el bucket.

    Ejemplo

    1. Cargue un archivo de ejemplo en un bucket de OSS. En este ejemplo, utilizamos el archivo emr_shell_test.sh con el siguiente contenido:

      #!/bin/sh
      echo "Hello, DataWorks!"
    2. Haga referencia directa al recurso de OSS en el nodo EMR Shell.

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

      En este comando, oss-cn-shanghai.aliyuncs.com es el endpoint, test-oss-of-dataworks es el nombre del bucket y emr_shell_test.sh es el nombre del archivo object.

      El comando devuelve la siguiente salida del archivo 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!
      ...

    Configuración de parámetros de programación de EMR Shell

    Defina variables en el editor de Shell con el formato ${variable_name} y luego asígneles valores en la sección Scheduling Parameters, dentro de Scheduling Settings, en el lado derecho del editor de nodos. Esto permite pasar parámetros dinámicamente durante las ejecuciones programadas. Para obtener más información, consulte Sources and expressions of scheduling parameters. Ejemplo:

    DD=`date`;
    echo "hello world, $DD"
    ## Can be used with scheduling parameters
    echo ${var};
    Nota

    Si utiliza un clúster DataLake, también se admiten las siguientes herramientas de línea de comandos.

    • Comandos de Shell: Comandos de Shell en /usr/bin y /bin, como ls y echo.

    • Componentes de YARN: hadoop, hdfs y yarn.

    • Componentes de Spark: spark-submit.

    • Componentes de Sqoop: sqoop-export, sqoop-import, sqoop-import-all-tables, entre otros.

    Si utiliza estos componentes para acceder a una instancia de RDS, debe agregar la dirección IP del resource group a la lista de permitidos de RDS.

    Ejecución de la tarea de Shell

    1. En la sección Run Configuration, configure el Compute Resource y el Resource Group.

      Nota
      • También puede configurar las CUs for Scheduling según los recursos necesarios para la ejecución de la tarea. La CU predeterminada es 0.25.

      • Puede seleccionar una Image según los requisitos de su tarea.

      • Para acceder a un origen de datos en una red pública o en un entorno VPC, debe utilizar un resource group de programación que pueda conectarse a dicho origen. Para obtener más información, consulte Network connectivity solutions.

    2. En la barra de herramientas, haga clic en Run para ejecutar la tarea de Shell.

  2. Para ejecutar el nodo periódicamente, configure sus propiedades de programación. Para obtener más información, consulte Configure scheduling properties for a node.

    Nota

    Si necesita personalizar el entorno de componentes, puede crear una custom image basada en la imagen oficial dataworks_emr_base_task_pod y use the image in Data Development.

    Por ejemplo, al crear una imagen personalizada, puede reemplazar paquetes JAR de Spark o depender de libraries, files o JAR packages específicos.

  3. Despliegue el nodo. Para obtener más información, consulte Deploy nodes and workflows.

  4. Consulte el estado de ejecución en Operation Center. Para obtener más información, consulte Get started with Operation Center.

Preguntas frecuentes

P: Se ha configurado una asignación de hosts en el resource group de programación heredado, pero el nodo EMR Shell sigue reportando un error de resolución. ¿Cómo puedo solucionarlo?

R: Reinicialice el clúster de EMR mediante el resource group configurado para que el script de EMR Shell reconozca la nueva asignación de hosts. Vaya a la página de lista de recursos de cómputo, haga clic en Initialize Resources y luego haga clic en Re-initialize en el cuadro de diálogo.

Documentación relacionada