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.
-
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. -
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) -
Cargue sparkmagic en el cuaderno de Jupyter con el comando
%load_ext sparkmagic.magics
. -
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. -
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_>
" } } -
Envíe la solicitud y espere a que cree el contexto de Spark.
-
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
.