Apache Spark es un motor de análisis de big data versátil, de alto rendimiento y fácil de usar. Este motor ejecuta análisis complejos en memoria y construye aplicaciones de análisis de datos a gran escala con baja latencia. DataWorks proporciona nodos EMR Spark para desarrollar tareas de Spark e implementar programaciones periódicas. En este tema se explica cómo crear un nodo EMR Spark y se demuestran sus funciones mediante un ejemplo detallado.
Requisitos previos
-
Si necesita personalizar el entorno de los componentes antes de desarrollar el nodo, cree una custom image basada en la imagen oficial
dataworks_emr_base_task_pody use the image in DataStudio.Por ejemplo, al crear una imagen personalizada puede reemplazar un paquete JAR de Spark o depender de
libraries,filesoJAR packagesespecíficos. El clúster de EMR debe estar registrado en DataWorks. Para obtener más información, consulte DataStudio (legacy version): Bind an EMR computing resource.
(Opcional) Si utiliza un usuario de RAM para desarrollar las tareas, debe agregarlo al espacio de trabajo correspondiente y asignarle el rol Development o Workspace Administrator. El rol Workspace Manager otorga permisos amplios, por lo que debe asignarse con precaución. Para obtener más información, consulte Add members to a workspace.
Se debe comprar y configurar un resource group, lo que incluye vincularlo al espacio de trabajo y definir sus ajustes de red. Para obtener más información, consulte Use a Serverless resource group.
Es necesario crear un flujo de negocio. DataStudio organiza las operaciones de desarrollo en flujos de negocio, por lo que no se puede crear un nodo sin uno. Para obtener más información, consulte Create a business flow.
Si sus tareas de desarrollo requieren un entorno específico, utilice la función de imágenes personalizadas de DataWorks para compilar una imagen que contenga los componentes necesarios para ejecutarlas. Para obtener más información, consulte Custom image.
Limitaciones
Este tipo de tarea solo se puede ejecutar en un serverless resource group (recomendado) o en un resource group exclusivo para programación. Si necesita usar una imagen durante el desarrollo de datos, debe utilizar un resource group serverless.
En los clústeres DataLake o personalizados, debe configurar EMR-HOOK en el clúster para gestionar los metadatos en DataWorks. Si no configura EMR-HOOK, no podrá consultar metadatos en tiempo real, generar registros de auditoría, mostrar linaje de datos ni ejecutar tareas de gobernanza relacionadas con EMR en DataWorks. Para obtener más información, consulte Configure EMR-HOOK for Spark SQL.
Los clústeres EMR Serverless Spark admiten la visualización del linaje de datos, mientras que los clústeres EMR on ACK Spark no.
Los clústeres EMR on ACK Spark y EMR Serverless Spark permiten hacer referencia a recursos de OSS mediante
ossrefy cargar recursos en OSS, pero no admiten la carga de recursos en HDFS.Los clústeres DataLake y los clústeres personalizados permiten hacer referencia a recursos de OSS mediante
ossref, cargar recursos en OSS y cargar recursos en HDFS.
Notes
Si habilitó el control de acceso de Ranger para Spark en el clúster de EMR asociado al espacio de trabajo actual:
Las tareas de Spark que usan la imagen predeterminada admiten esta función automáticamente.
Para ejecutar una tarea de Spark con una imagen personalizada, envíe un ticket al soporte técnico para solicitar la actualización de la imagen.
Preparación: desarrollar un archivo JAR de trabajo de Spark
Antes de programar un trabajo de EMR Spark con DataWorks, debe desarrollarlo en EMR, compilarlo y generar un paquete JAR. Para obtener más información sobre el desarrollo de trabajos de EMR Spark, consulte Spark overview.
Posteriormente, cargará el paquete JAR en DataWorks para programar el trabajo de EMR Spark de forma periódica.
I. Crear un nodo EMR Spark
-
Inicie sesión en la consola de DataWorks. En la región de destino, haga clic en en el panel de navegación izquierdo. Seleccione un espacio de trabajo en la lista desplegable y haga clic en Go to Data Development.
-
Cree un nodo EMR Spark.
-
Haga clic con el botón secundario en el flujo de negocio de destino y elija .
NotaTambién puede colocar el cursor sobre Create y elegir .
-
En el cuadro de diálogo Create Node, introduzca un Name y seleccione la Engine Instance, el Node Type y la Path. Haga clic en Confirm para ir al editor del nodo EMR Spark.
NotaEl nombre del nodo puede contener letras mayúsculas, letras minúsculas, caracteres chinos, dígitos, guiones bajos (
_) y puntos (.).
-
2. Desarrollar un trabajo de Spark
Para abrir el editor de código, haga doble clic en el nodo EMR Spark. A continuación, elija un método según su escenario.
(Recomendado) Cargue los recursos desde su computadora local en DataStudio y luego haga referencia a ellos. Para obtener más información, consulte Method 1: Upload resources before you reference EMR JAR resources.
Haga referencia a un recurso de OSS mediante el método OSS REF. Para obtener más información, consulte Method 2: Directly reference an OSS resource.
Método 1: cargar y hacer referencia a un recurso JAR de EMR
En DataWorks, puede cargar un recurso desde su computadora local en DataStudio y luego hacer referencia a él. Después de compilar un trabajo de EMR Spark en un paquete JAR, seleccione un método de almacenamiento según su tamaño.
Puede cargar y confirmar un paquete JAR como recurso de EMR en DataWorks. También puede almacenarlo en el sistema HDFS de un clúster de EMR. Los clústeres EMR on ACK Spark y EMR Serverless Spark no admiten la carga de recursos en HDFS.
Paquete JAR menor a 500 MB
-
Cree un recurso JAR de EMR.
Este método permite gestionar los recursos de forma visual en la consola de DataWorks. Una vez creado el recurso, confírmelo. Para obtener más información, consulte Create and use EMR resources.
En el cuadro de diálogo Create Resource, establezca Engine Type en EMR y seleccione una Engine Instance. Establezca Resource Type en EMR JAR, especifique la Path y seleccione Upload as EMR Resource. Elija un tipo de Storage Path, que puede ser OSS One-click Authorization o HDFS. Establezca File Source en Local y haga clic en Upload para cargar el archivo. Especifique un Name para el recurso. El nombre de un recurso JAR debe terminar en
.jar. Luego, haga clic en Create.NotaLa primera vez que cree un recurso de EMR para almacenarlo en OSS, deberá autorizar el acceso siguiendo las indicaciones del sistema.
-
Haga referencia al recurso JAR de EMR.
Haga doble clic en el nodo EMR Spark para abrir su editor de código.
En el árbol de navegación izquierdo, elija . Busque su recurso JAR de EMR, haga clic con el botón secundario sobre él y seleccione Insert Resource Path.
-
Al hacer referencia al recurso, el sistema agrega automáticamente un fragmento de código de referencia al editor del nodo. A continuación se muestra un ejemplo.
##@resource_reference{"spark-examples_2.12-1.0.0-SNAPSHOT-shaded.jar"} spark-examples_2.12-1.0.0-SNAPSHOT-shaded.jarLa presencia de este fragmento indica que se hizo referencia al recurso. En el código anterior, spark-examples_2.12-1.0.0-SNAPSHOT-shaded.jar es el nombre del recurso JAR de EMR que se cargó.
-
Modifique el código del nodo EMR Spark y agregue un comando spark-submit. A continuación se muestra un ejemplo.
NotaEl editor de código de los nodos EMR Spark no admite comentarios. Modifique el código del trabajo basándose en el siguiente ejemplo. No agregue comentarios; de lo contrario, se producirá un error cuando se ejecute el nodo.
##@resource_reference{"spark-examples_2.11-2.4.0.jar"} spark-submit --class org.apache.spark.examples.SparkPi --master yarn spark-examples_2.11-2.4.0.jar 100A continuación se describen los parámetros.
org.apache.spark.examples.SparkPi: la clase principal del trabajo en el paquete JAR compilado.
spark-examples_2.11-2.4.0.jar: el nombre del recurso JAR de EMR que cargó.
-
Puede dejar los demás parámetros tal como aparecen en el ejemplo anterior. También puede ejecutar el siguiente comando para consultar la ayuda de
spark submity modificar el comandospark submitsegún sea necesario.NotaSi desea usar parámetros simplificados del comando
spark-submiten un nodo de Spark, debe agregarlos al código. Ejemplo:--executor-memory 2G.Los nodos de Spark solo admiten el envío de trabajos en modo de clúster YARN.
Para los trabajos enviados mediante el comando
spark-submit, establezca el parámetro de modo de despliegue en cluster, no en client.
spark-submit --helpspark-submit --help Process Output>>> Process Output>>> Options: Process Output>>> --master MASTER_URL spark://host:port, mesos://host:port, yarn, Process Output>>> k8s://https://host:port, or local (Default: local[*]). Process Output>>> --deploy-mode DEPLOY_MODE Whether to launch the driver program locally ("client") or Process Output>>> on one of the worker machines inside the cluster ("cluster") Process Output>>> (Default: client). Process Output>>> --class CLASS_NAME Your application's main class (for Java / Scala apps). Process Output>>> --name NAME A name of your application. Process Output>>> --jars JARS Comma-separated list of jars to include on the driver Process Output>>> and executor classpaths. Process Output>>> --packages Comma-separated list of maven coordinates of jars to include Process Output>>> on the driver and executor classpaths. Will search the local Process Output>>> maven repo, then maven central and any additional remote Process Output>>> repositories given by --repositories. The format for the Process Output>>> coordinates should be groupId:artifactId:version. Process Output>>> --exclude-packages Comma-separated list of groupId:artifactId, to exclude while Process Output>>> resolving the dependencies provided in --packages to avoid Process Output>>> dependency conflicts. Process Output>>> --repositories Comma-separated list of additional remote repositories to Process Output>>> search for the maven coordinates given with --packages. Process Output>>> --py-files PY_FILES Comma-separated list of .zip, .egg, or .py files to place Process Output>>> on the PYTHONPATH for Python apps. Process Output>>> --files FILES Comma-separated list of files to be placed in the working Process Output>>> directory of each executor. File paths of these files
Paquete JAR de 500 MB o mayor
-
Cree un recurso JAR de EMR.
Si un paquete JAR tiene un tamaño de 500 MB o mayor, no se puede cargar desde su computadora local como recurso de DataWorks. Almacene el paquete JAR en el sistema HDFS de su clúster de EMR y registre su ruta de almacenamiento. Luego podrá usar esa ruta para hacer referencia al paquete cuando programe el trabajo de Spark.
-
Haga referencia al recurso JAR de EMR.
Si el paquete JAR está almacenado en HDFS, haga referencia a él directamente especificando su ruta en el código del nodo EMR Spark.
Haga doble clic en el nodo EMR Spark creado para abrir su editor de código.
-
Escriba un comando spark-submit. A continuación se muestra un ejemplo.
spark-submit --master yarn --deploy-mode cluster --name SparkPi --driver-memory 4G --driver-cores 1 --num-executors 5 --executor-memory 4G --executor-cores 1 --class org.apache.spark.examples.JavaSparkPi hdfs:///tmp/jars/spark-examples_2.11-2.4.8.jar 100A continuación se describen los parámetros.
hdfs:///tmp/jars/spark-examples_2.11-2.4.8.jar: la ruta del paquete JAR en HDFS.
org.apache.spark.examples.JavaSparkPi: la clase principal del trabajo en el paquete JAR compilado.
-
Los demás parámetros corresponden al clúster de EMR y deben modificarse según sus necesidades de negocio. También puede ejecutar el siguiente comando para consultar la información de ayuda del comando spark-submit y modificarlo según sea necesario.
ImportanteSi desea usar parámetros simplificados del comando Spark-submit en un nodo de Spark, debe agregarlos al código. Ejemplo:
--executor-memory 2G.Los nodos de Spark solo admiten el envío de trabajos en modo de clúster YARN.
Para los trabajos enviados mediante el comando spark-submit, establezca el parámetro de modo de despliegue en cluster, no en client.
spark-submit --help
Método 2: hacer referencia directa a un recurso de OSS
(Opcional) Parámetros avanzados
Puede configurar parámetros específicos de Spark en la sección Advanced Settings de un nodo. Para obtener más información sobre las propiedades de Spark, consulte Spark Configuration. Los parámetros avanzados que puede configurar varían según el tipo de clúster de EMR, como se muestra en la siguiente tabla.
Clúster DataLake o personalizado: EMR on ECS
|
Parámetro |
Descripción |
|
queue |
La cola de programación a la que se envían los trabajos. Valor predeterminado: default. Si configura una YARN resource queue a nivel de espacio de trabajo al registrar un clúster de EMR en un espacio de trabajo de DataWorks, se aplican las siguientes reglas:
Para obtener más información sobre EMR YARN, consulte Basic queue configurations. Para conocer cómo configurar una cola al registrar un clúster de EMR, consulte Set the global YARN resource queue. |
|
priority |
La prioridad. Valor predeterminado: 1. |
|
FLOW_SKIP_SQL_ANALYZE |
El método que se utiliza para ejecutar instrucciones SQL. Valores válidos:
Nota
Este parámetro solo se puede usar para ejecuciones de prueba en Data Development. |
|
Otros |
|
Clúster serverless de EMR Spark
Para obtener más información sobre cómo configurar los parámetros, consulte Configure parameters for a Spark job.
|
Parámetro |
Descripción |
|
queue |
La cola de programación a la que se envían los trabajos. Valor predeterminado: dev_queue. |
|
priority |
La prioridad. Valor predeterminado: 1. |
|
FLOW_SKIP_SQL_ANALYZE |
El método que se utiliza para ejecutar instrucciones SQL. Valores válidos:
Nota
Este parámetro solo se puede usar para ejecuciones de prueba en Data Development. |
|
SERVERLESS_RELEASE_VERSION |
La versión del motor de Spark. De forma predeterminada, se utiliza la Default Engine Version configurada para el clúster en la sección Cluster Management de la página Management Center. Puede configurar este parámetro para especificar distintas versiones del motor para diferentes trabajos. |
|
SERVERLESS_QUEUE_NAME |
La cola de recursos que desea especificar. De forma predeterminada, se utiliza la Default Resource Queue configurada para el clúster en la sección Cluster Management de la página Management Center. Si necesita aislar y gestionar recursos, puede añadir colas. Para obtener más información, consulte Manage resource queues. |
|
Otros |
|
Clúster de Spark: EMR on ACK
|
Parámetro |
Descripción |
|
queue |
Este parámetro no es compatible. |
|
priority |
Este parámetro no es compatible. |
|
FLOW_SKIP_SQL_ANALYZE |
El método que se utiliza para ejecutar instrucciones SQL. Valores válidos:
Nota
Este parámetro solo se puede usar para ejecuciones de prueba en Data Development. |
|
Otros |
|
Clúster de Hadoop: EMR on ECS
|
Parámetro |
Descripción |
|
queue |
La cola de programación a la que se envían los trabajos. Valor predeterminado: default. Si configura una YARN resource queue a nivel de espacio de trabajo al registrar un clúster de EMR en un espacio de trabajo de DataWorks, se aplican las siguientes reglas:
Para obtener más información sobre EMR YARN, consulte Basic queue configurations. Para conocer cómo configurar una cola al registrar un clúster de EMR, consulte Set the global YARN resource queue. |
|
priority |
La prioridad. Valor predeterminado: 1. |
|
FLOW_SKIP_SQL_ANALYZE |
El método que se utiliza para ejecutar instrucciones SQL. Valores válidos:
Nota
Este parámetro solo se puede usar para ejecuciones de prueba en Data Development. |
|
USE_GATEWAY |
Indica si los trabajos se envían desde el nodo actual mediante un clúster Gateway. Valores válidos:
Nota
Si el clúster donde reside el nodo actual no está asociado con un clúster Gateway y usted establece este parámetro en |
|
Otros |
|
Trabajo SQL
-
En la barra de herramientas, haga clic en el icono
. En el cuadro de diálogo Parameter, seleccione el resource group de programación creado y haga clic en Running.NotaPara acceder a recursos de cómputo desplegados en una red pública o en una VPC, debe usar un resource group de programación que pueda conectarse a dichos recursos. Para obtener más información, consulte Solutions for network connections.
Si necesita modificar el resource group que se usa para ejecutar un trabajo, haga clic en el icono Run with Parameters
y seleccione el resource group que desee utilizar.Cuando consulta datos mediante un nodo EMR Spark, el resultado se limita a un máximo de 10 000 registros y a un tamaño total de 10 MB.
Haga clic en el icono
para guardar sus instrucciones SQL.-
(Opcional) Ejecute pruebas de humo.
Si desea ejecutar pruebas de humo en el entorno de desarrollo, puede hacerlo al confirmar un nodo de ejecución o después de confirmarlo. Para obtener más información, consulte Run a smoke test.
Paso 3: Configurar la programación del nodo
Si desea que el sistema ejecute periódicamente una tarea en el nodo, haga clic en Properties en el panel de navegación derecho de la pestaña de configuración del nodo. Así podrá configurar las propiedades de programación de la tarea según sus necesidades empresariales. Para obtener más información, consulte Overview.
Debe configurar las propiedades Rerun attribute y Parent Nodes del nodo antes de poder enviarlo.
-
Si necesita personalizar el entorno del componente, cree un custom image basado en la imagen oficial
dataworks_emr_base_task_pody use it in DataStudio.Por ejemplo, puede reemplazar paquetes JAR de Spark o incluir
libraries,filesoJAR packagesespecíficos al crear una imagen personalizada.
Paso 4: Desplegar el nodo
Una vez configurada una tarea en un nodo, debe confirmarla y desplegarla. Después de esto, el sistema ejecutará la tarea de forma periódica según las configuraciones de programación.
Haga clic en el icono
de la barra de herramientas superior para guardar la tarea.-
Haga clic en el icono
de la barra de herramientas superior para confirmar la tarea.En el cuadro de diálogo Submit, configure el parámetro Change description. Luego, determine si desea revisar el código de la tarea después de confirmarla, según sus necesidades empresariales.
NotaDebe configurar los parámetros Rerun y Parent Nodes en la pestaña Properties antes de confirmar la tarea.
La función de revisión de código le permite garantizar la calidad del código de las tareas y evitar errores de ejecución causados por código no válido. Si habilita esta función, el código confirmado solo se podrá desplegar después de aprobar la revisión. Para obtener más información, consulte Code review.
Si utiliza un espacio de trabajo en modo estándar, debe desplegar la tarea en el entorno de producción después de confirmarla. Para desplegar una tarea en un nodo, haga clic en Deploy en la esquina superior derecha de la pestaña de configuración del nodo. Para obtener más información, consulte Deploy a node.
Más operaciones
Después de confirmar y desplegar la tarea, esta se ejecutará de forma periódica según las configuraciones de programación. Haga clic en Operation Center en la esquina superior derecha de la pestaña de configuración del nodo correspondiente para ir a Operation Center y consultar el estado de programación de la tarea. Para obtener más información, consulte Manage scheduled tasks.
Preguntas frecuentes
-
P: ¿Cómo resuelvo un error de tiempo de espera agotado en la conexión del nodo?
R: Asegúrese de que el resource group y el clúster puedan comunicarse entre sí a través de la red. Vaya a la lista de recursos de cómputo y haga clic en Resource Initialization. En el cuadro de diálogo que aparece, haga clic en Re-initialize. Compruebe que la inicialización se haya completado correctamente.
y seleccione su resource group de programación para ejecutar el nodo EMR Spark. Cuando finalice el trabajo, registre el