El nodo shell de DataWorks está diseñado para ingenieros de datos. Ejecuta scripts de shell estándar para operaciones con archivos y transferencia de datos con OSS o NAS. Permite configurar parámetros de programación, hacer referencia a recursos, usar la herramienta preinstalada ossutil para acceder a OSS de forma segura y ejecutar tareas del nodo bajo un rol de RAM asociado.
Permisos
Agregue la cuenta de RAM que se usa para el desarrollo del nodo al espacio de trabajo de destino y asígnele el rol de desarrollador o administrador del espacio de trabajo. Para más detalles, consulte Add a member to a workspace.
Notas de uso
-
Límites de sintaxis
Se admite la sintaxis de shell estándar. No se admite la sintaxis interactiva.
-
Entorno de ejecución y acceso a la red
Si ejecuta un nodo shell en un resource group serverless y el servicio de destino tiene configurada una lista de permisos, debe add the IP addresses of the serverless resource group a la lista de permisos de la aplicación de destino.
Cuando se utiliza un resource group serverless, una sola tarea admite un máximo de
64CU. Para evitar la escasez de recursos y los retrasos en el inicio de las tareas, no supere los16CU.
-
Entorno de desarrollo extendido
Si su tarea requiere un entorno de desarrollo específico, utilice la función de imagen personalizada de DataWorks para compilar una imagen adaptada a la ejecución de la tarea. Para más información, consulte Use custom images.
-
Uso de recursos y llamadas a varios scripts
Evite iniciar una gran cantidad de procesos secundarios dentro de un nodo shell. Los nodos shell no tienen límites de recursos actualmente, por lo que un exceso de procesos secundarios puede afectar otras tareas que se ejecutan en el mismo grupo de recursos de programación.
Si un nodo shell invoca otro script, como uno de Python, el nodo espera a que el script invocado termine antes de salir.
Inicio rápido
En esta sección se explica cómo crear, depurar, configurar y desplegar un nodo shell mediante un ejemplo que imprime "Hello DataWorks!".
Desarrollar el nodo
Inicie sesión en la consola de DataWorks. Cambie a la región de destino. En el panel de navegación izquierdo, haga clic en . En la lista desplegable que aparece, seleccione el espacio de trabajo de destino y haga clic en Data Analytics.
En la página de Data Studio, cree un nodo shell.
-
Introduzca código de shell estándar en el editor de scripts (no se admite la sintaxis interactiva):
echo "Hello DataWorks!" Una vez que termine de desarrollar el código, haga clic en Debug Configuration en el lado derecho. Seleccione el grupo de recursos de depuración de destino y otros parámetros de ejecución obligatorios. Después, haga clic en el botón
Run para iniciar una ejecución de depuración local.Cuando el script pase la verificación de depuración, haga clic en Scheduling Settings en el lado derecho para configurar las políticas de programación de nivel de producción. Esto incluye el calendario, las dependencias y la configuración de parámetros, de modo que el nodo se ejecute automáticamente de forma periódica según lo previsto.
Después de completar la configuración de programación de la tarea, haga clic en Save antes de continuar con el siguiente paso.
Desplegar y operar el nodo
Una vez completada la configuración de programación, envíe y despliegue el nodo shell en el entorno de producción para pasarlo del estado de desarrollo al de producción. Para conocer el procedimiento y el proceso de despliegue específicos, consulte Deploy a node.
Tras desplegar el nodo, la tarea se ejecuta de forma periódica según el calendario configurado. Haga clic en el icono
en la esquina superior izquierda. En la página de navegación que aparece, elija para ir a Operation Center. Luego, en el panel de navegación izquierdo, vaya a para consultar las tareas programadas desplegadas. Para más información, consulte Manage scheduled tasks.
Uso avanzado
Hacer referencia a recursos
-
DataWorks le permite cargar en la plataforma los recursos necesarios para los nodos shell mediante la gestión de recursos. Para más detalles, consulte Manage resources.
NotaLos recursos deben desplegarse antes de que los nodos puedan referenciarlos. Si una tarea de producción requiere un recurso, también debe desplegar dicho recurso en el entorno de producción.
Abra el nodo shell que creó para ir a la página del editor de scripts.
-
Haga clic en
en el panel de navegación izquierdo para abrir el menú de gestión de recursos. Busque el recurso que desea utilizar, haga clic derecho sobre él y seleccione Reference Resource. Así podrá hacer referencia al recurso en el script de shell.NotaUna vez referenciado el recurso, el sistema inserta automáticamente un comentario de declaración con el formato
##@resource_reference{resource_name}en la parte superior del script.Este comentario es obligatorio para que DataWorks identifique las dependencias de recursos y monte automáticamente el recurso correspondiente en el entorno de ejecución. No lo modifique ni lo elimine manualmente.
Usar parámetros de programación
Los parámetros de programación se inyectan en los nodos shell como parámetros posicionales. No se admiten nombres de variables personalizados. DataWorks pasa los valores de los parámetros que usted configura en al script de shell como parámetros posicionales, por ejemplo $1, $2 y $3, en ese orden. Cuando la cantidad de parámetros supera 9, utilice la sintaxis de llaves, como ${10} y ${11}, para garantizar un análisis sintáctico correcto. Separe varios valores de parámetros con espacios y asegúrese de que el orden coincida estrictamente con las referencias posicionales del script.
Por ejemplo, en este caso:
Al parámetro $1 se le asigna la hora actual: $[yyyymmdd].
Al parámetro $2 se le asigna un valor fijo:
Hello DataWorks.
Si un valor de parámetro contiene espacios, enciérrelo entre comillas. Todo el contenido dentro de las comillas se trata como un solo parámetro.
Para obtener los parámetros de salida de un nodo anterior, agregue parámetros en y establezca los valores de los parámetros como los parámetros de salida del nodo anterior.
Usar ossutil para acceder a OSS
El nodo shell de DataWorks admite de forma nativa la herramienta de línea de comandos de Alibaba Cloud OSS ossutil, que le permite gestionar buckets, cargar y descargar archivos, y realizar operaciones por lotes. Puede configurar las credenciales de acceso mediante un archivo de configuración o parámetros de línea de comandos para acceder a OSS con ossutil.
Para usar ossutil y acceder a OSS mediante parámetros de línea de comandos, consulte Use command-line parameters.
Para usar ossutil y acceder a OSS mediante un archivo de configuración, consulte Use a configuration file.
En el nuevo Data Studio, específicamente para los nodos shell, además de los dos métodos anteriores, puede asociar un rol de RAM y usar Alibaba Cloud STS (Security Token Service) para obtener dinámicamente credenciales de seguridad temporales para ese rol. Después, utilice ossutil para acceder a OSS. Este método le permite acceder de forma segura a los recursos de la nube de destino sin codificar de forma permanente credenciales de AccessKey de largo plazo en su código. Para más detalles, consulte Associate a RAM role to run a node.
ossutil viene preinstalado en el entorno de DataWorks. No es necesario instalarlo manualmente. La ruta predeterminada es /home/admin/usertools/tools/ossutil64.
Usar conjuntos de datos para acceder a OSS o NAS
DataWorks le permite crear datasets de OSS o NAS y luego reference the datasets in shell node development para leer y escribir en el almacenamiento de OSS o NAS durante la ejecución del nodo shell.
Ejecutar un nodo con un rol asociado
Puede associate a RAM role to run a node, lo cual le permite ejecutar tareas del nodo con un rol de RAM específico para lograr un control de permisos detallado y una mejor gestión de la seguridad.
Apéndice: códigos de salida de scripts
Los códigos de salida de los scripts sirven para determinar si un script se ejecutó correctamente.
Código de salida 0: indica que la ejecución fue correcta.
Código de salida -1: indica que el proceso finalizó.
Código de salida 2: indica que la plataforma necesita volver a ejecutar la tarea automáticamente una vez.
Otros códigos de salida: indican un error.
A continuación se muestra un ejemplo de registro de ejecución cuando el nodo shell se ejecuta correctamente (código de salida 0).
INFO Exit code of the Shell command 0 INFO --- Invocation of Shell command completed --- INFO Shell run successfully!
Debido al mecanismo subyacente del shell, el código de salida de todo el script en un nodo shell equivale al código de salida del último comando ejecutado.
en la esquina superior izquierda. En la página de navegación que aparece, elija