Desarrolle y programe periódicamente tareas de Spark en un clúster EMR Serverless Spark dentro de DataWorks. Spark admite cálculos complejos en memoria, por lo que resulta ideal para el análisis de datos a gran escala y con baja latencia.
Requisitos previos
Limitaciones de recursos de cómputo: solo se admiten bound EMR Serverless Spark compute resources. Asegúrese de que el resource group y el recurso de cómputo puedan comunicarse a través de la red.
Restricciones del resource group: solo Serverless resource groups pueden ejecutar este tipo de tarea.
-
(Opcional, para usuarios de RAM) El usuario de Resource Access Management (RAM) que desarrolle la tarea debe agregarse al espacio de trabajo y asignársele el rol 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 raíz, omita este paso.
Creación de un nodo
Para consultar las instrucciones, vea Create a node.
Desarrollo del nodo
Antes de desarrollar una tarea Serverless Spark Batch, escriba el código de la tarea de Spark en E-MapReduce (EMR) y compílelo en un paquete JAR. Para obtener orientación sobre el desarrollo con Spark, consulte Spark tutorials.
Elija el enfoque que mejor se adapte a su caso de uso:
Opción 1: cargar y hacer referencia a un archivo JAR de EMR
Cargue el paquete JAR compilado en DataWorks como un recurso JAR de EMR. Este enfoque funciona para paquetes JAR menores a 500 MB.
-
Cree un recurso JAR de EMR.
En el panel de navegación izquierdo, haga clic en el ícono
para ir a la página Resource Management.En la página Resource Management, haga clic en el ícono
, seleccione y asigne al recurso el nombre spark-examples_2.11-2.4.0.jar.Haga clic en Click Upload y cargue el archivo spark-examples_2.11-2.4.0.jar.
-
Seleccione una Storage Path, los Data Sources y el Resource Group.
ImportanteComo origen de datos, debe seleccionar el clúster EMR Serverless Spark vinculado.
Haga clic en Save.
-
Haga referencia al recurso JAR de EMR.
Abra el nodo Serverless Spark Batch que creó y permanezca en la página del editor de código.
En el panel Resource Management, ubicado a la izquierda, busque el recurso que desea utilizar, haga clic derecho sobre él y seleccione Insert Resource Path.
-
El recurso se referencia correctamente cuando se agrega automáticamente el siguiente código al editor del nodo Serverless Spark Batch:
##@resource_reference{"spark-examples_2.11-2.4.0.jar"} spark-examples_2.11-2.4.0.jarEn el código anterior, spark-examples_2.11-2.4.0.jar es el nombre del recurso JAR de EMR que cargó.
-
Modifique el código del nodo y agregue el comando spark-submit. En el siguiente ejemplo se muestra el código modificado.
ImportanteSiga el ejemplo de manera exacta. No agregue comentarios, ya que provocan que el nodo falle.
En EMR Serverless Spark no es necesario establecer el parámetro
deploy-modepara el comandospark-submit. Solo se admite el modocluster.
##@resource_reference{"spark-examples_2.11-2.4.0.jar"} spark-submit --class org.apache.spark.examples.SparkPi spark-examples_2.11-2.4.0.jar 100Comando
Descripción
classLa clase principal de la aplicación dentro del archivo JAR. En este ejemplo, el valor es
org.apache.spark.examples.SparkPi.NotaPara obtener más información sobre los parámetros, consulte Submit a job using spark-submit.
Opción 2: hacer referencia a un recurso de OSS
Haga referencia a un recurso almacenado en Object Storage Service (OSS). DataWorks carga automáticamente el recurso de OSS especificado durante la ejecución. Utilice este enfoque cuando una tarea de EMR requiera dependencias JAR o dependa de scripts.
Desarrolle el recurso JAR: en este tema se usa SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jar como ejemplo.
-
Cargue el recurso JAR.
Inicie sesión en la consola de OSS. En el panel de navegación izquierdo, haga clic en buckets.
Haga clic en el nombre del bucket de destino para ir a la página de administración de archivos.
Haga clic en Create Directory para crear un directorio donde almacenar el recurso JAR.
Vaya al directorio y cargue el archivo
SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jaren el bucket.
-
Haga referencia al recurso JAR.
-
En el editor de código del nodo Serverless Spark Batch que creó, escriba el código para hacer referencia al recurso JAR.
ImportanteEn el siguiente código, el nombre del bucket de OSS es
mybuckety el directorio esemr. Reemplácelos con sus valores reales.spark-submit --class com.aliyun.emr.example.spark.SparkMaxComputeDemo oss://mybucket/emr/SparkWorkOSS-1.0-SNAPSHOT-jar-with-dependencies.jarParámetros:
Parámetro
Descripción
classEl nombre completo de la clase principal que se va a ejecutar.
Ruta del archivo de
ossEl formato es
oss://{bucket}/{object}.-
bucket: el contenedor de OSS que almacena objetos. Cada bucket tiene un nombre único. Puede iniciar sesión en la consola de OSS para consultar todos los buckets de su cuenta.
-
object: un archivo o ruta almacenada en un bucket.
NotaPara obtener más información sobre los parámetros, consulte Submit a job using spark-submit.
-
-
Depuración del nodo
-
En el panel Run Configuration, configure opciones como Compute resource y resource group.
Parámetro
Descripción
Compute resource
Seleccione un recurso de cómputo de EMR Serverless Spark vinculado. Si no hay ninguno disponible, elija Create Compute Resource en la lista desplegable.
resource group
Seleccione un resource group vinculado al espacio de trabajo.
Script parameters
Defina variables en el código del nodo mediante el formato
${Parameter name}. Después, establezca el Parameter name y el Parameter Value en la sección Script Parameters. Durante la ejecución, DataWorks reemplaza estas variables con los valores especificados. Para obtener más información, consulte Scheduling parameters.ServerlessSpark node parameters
Parámetros de ejecución del programa de Spark. Se admiten los siguientes tipos:
-
Parámetros de ejecución personalizados de DataWorks. Para obtener más información, consulte Appendix: DataWorks parameters.
-
Propiedades integradas de Spark. Para obtener más información, consulte Propiedades de Spark de código abierto y Custom Spark Conf parameters.
El formato de configuración es:
"spark.eventLog.enabled": false. DataWorks agrega automáticamente esta opción al código enviado a Serverless Spark con el formato--conf key=value.NotaPuede establecer parámetros globales de Spark a nivel del espacio de trabajo e indicar si tienen prioridad sobre los parámetros configurados en un módulo específico. Para obtener más detalles, consulte Configure global Spark parameters.
-
-
En la barra de herramientas ubicada en la parte superior del editor de nodos, haga clic en Run.
ImportanteAntes de publicar, debe sincronizar los ServerlessSpark node parameters de Run Configuration con los ServerlessSpark node parameters de Scheduling Settings.
Siguientes pasos
Configure node scheduling: si necesita ejecutar un nodo de forma periódica, configure su Scheduling Policy en el panel Scheduling Settings ubicado a la derecha.
Publish a node: para ejecutar una tarea en el entorno de producción, haga clic en el ícono
y publique el nodo. Un nodo se ejecuta según lo programado únicamente después de publicarse en el entorno de producción.Operación y mantenimiento de tareas: después de publicar una tarea, supervise sus ejecuciones periódicas en Operation Center. Para obtener más información, consulte Get started with Operation Center.
Documentación relacionada
Apéndice: parámetros de DataWorks
|
Parámetro |
Descripción |
|
SERVERLESS_QUEUE_NAME |
La cola de recursos a la que se envía la tarea. De forma predeterminada, las tareas se envían a la Default Resource Queue configurada para el clúster, dentro de Clusters en el Management Center. Para aislar y gestionar los recursos, puede agregar colas. Para obtener más información, consulte Manage resource queues. Métodos de configuración:
|