Ejecución de una aplicación de Spark con Apache Livy para Amazon EMR en EKS - Amazon EMR

Ejecución de una aplicación de Spark con Apache Livy para Amazon EMR en EKS

Antes de poder ejecutar una aplicación de Spark con Apache Livy, asegúrese de haber completado los pasos de Configuración de Apache Livy para Amazon EMR en EKS y la Introducción a Apache Livy para Amazon EMR en EKS.

Puede usar Apache Livy para ejecutar dos tipos de aplicaciones:

  • Sesiones por lotes: un tipo de carga de trabajo de Livy para enviar trabajos por lotes a Spark.

  • Sesiones interactivas: un tipo de carga de trabajo de Livy que proporciona una interfaz visual y programática para ejecutar consultas de Spark.

nota

Los pods controladores y ejecutores de sesiones diferentes pueden comunicarse entre sí. Los espacios de nombres no garantizan la seguridad entre los pods. Kubernetes no permite permisos selectivos en un subconjunto de pods dentro de un espacio de nombres determinado.

Ejecución de sesiones por lotes

Para enviar un trabajo por lotes, use el siguiente comando.

curl -s -k -H 'Content-Type: application/json' -X POST \ -d '{ "name": "my-session", "file": "entryPoint_location (S3 or local)", "args": ["argument1", "argument2", ...], "conf": { "spark.kubernetes.namespace": "<spark-namespace>", "spark.kubernetes.container.image": "public.ecr.aws/emr-on-eks/spark/emr-7.3.0:latest", "spark.kubernetes.authenticate.driver.serviceAccountName": "<spark-service-account>" } }' <livy-endpoint>/batches

Para monitorizar el trabajo por lotes, use el siguiente comando.

curl -s -k -H 'Content-Type: application/json' -X GET <livy-endpoint>/batches/my-session

Ejecución de sesiones interactivas

Para ejecutar sesiones interactivas con Apache Livy, consulte los siguientes pasos.

  1. Asegúrese de tener acceso a un cuaderno de Jupyter autohospedado o administrado, como un cuaderno de Jupyter de SageMaker. Su cuaderno de Jupyter debe tener sparkmagic instalado.

  2. Cree un bucket para la configuración de Spark spark.kubernetes.file.upload.path. Asegúrese de que la cuenta de servicio de Spark tenga acceso de lectura y escritura al bucket. Para obtener más información sobre cómo configurar su cuenta de servicio de Spark, consulte Configuración de los permisos de acceso con roles de IAM para las cuentas de servicio (IRSA)

  3. Cargue sparkmagic en el cuaderno de Jupyter con el comando %load_ext sparkmagic.magics.

  4. Ejecute el comando %manage_spark para configurar su punto de conexión de Livy con el cuaderno de Jupyter. Seleccione la pestaña Añadir puntos de conexión, elija el tipo de autenticación configurado, añada el punto de conexión de Livy al cuaderno y, a continuación, elija Añadir punto de conexión.

  5. Vuelva a ejecutar %manage_spark para crear el contexto de Spark y, a continuación, vaya a Crear sesión. Elija el punto de conexión de Livy, especifique un nombre de sesión único, elija un idioma y, a continuación, añada las siguientes propiedades.

    { "conf": { "spark.kubernetes.namespace": "livy-namespace", "spark.kubernetes.container.image": "public.ecr.aws/emr-on-eks/spark/emr-7.3.0:latest", "spark.kubernetes.authenticate.driver.serviceAccountName": "<spark-service-account>", "spark.kubernetes.file.upload.path": "<URI_TO_S3_LOCATION_>" } }
  6. Envíe la solicitud y espere a que cree el contexto de Spark.

  7. Para monitorizar el estado de la sesión interactiva, ejecute el siguiente comando.

    curl -s -k -H 'Content-Type: application/json' -X GET livy-endpoint/sessions/my-interactive-session

Monitorización de aplicaciones de Spark

Para monitorizar el progreso de sus aplicaciones de Spark con la IU de Livy, use el enlace http://<livy-endpoint>/ui.