Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Uso de EMR Serverless con un control de acceso AWS Lake Formation detallado
Información general
Con Amazon EMR, versión 7.2.0 y versiones posteriores, aproveche AWS Lake Formation para aplicar controles de acceso detallados en las tablas del catálogo de datos respaldadas por S3. Esta capacidad le permite configurar controles de acceso a nivel de tabla, fila, columna y celda para consultas deread dentro de sus trabajos de Spark de Amazon EMR sin servidor. Para configurar un control de acceso detallado para los trabajos por lotes y las sesiones interactivas de Apache Spark, utilice EMR Studio. Consulte las siguientes secciones para obtener más información sobre Lake Formation y cómo usarlo con EMR sin servidor.
El uso de Amazon EMR Serverless AWS Lake Formation conlleva cargos adicionales. Para obtener más información, consulte los precios de Amazon EMR.
Cómo funciona EMR sin servidor con AWS Lake Formation
El uso de EMR sin servidor con Lake Formation le permite implementar una capa de permisos en cada trabajo de Spark para aplicar el control de permisos de Lake Formation cuando EMR sin servidor ejecuta trabajos. EMR sin servidor utiliza los perfiles de recursos de Spark
Cuando utilices la capacidad preinicializada con Lake Formation, te sugerimos que tengas un mínimo de dos controladores Spark. Cada trabajo habilitado para Lake Formation utiliza dos controladores Spark, uno para el perfil de usuario y otro para el perfil del sistema. Para obtener el mejor rendimiento, utilice el doble de controladores para los trabajos habilitados para Lake Formation en comparación con si no utiliza Lake Formation.
Cuando ejecute trabajos de Spark en EMR Serverless, también tenga en cuenta el impacto de la asignación dinámica en la administración de recursos y el rendimiento del clúster. La configuración spark.dynamicAllocation.maxExecutors del número máximo de ejecutores por perfil de recurso se aplica a los ejecutores de usuario y del sistema. Si configura ese número para que sea igual al número máximo permitido de ejecutores, es posible que la ejecución del trabajo se bloquee debido a que un tipo de ejecutor utiliza todos los recursos disponibles, lo que impide que el otro ejecutor ejecute los trabajos.
Para no quedarse sin recursos, EMR sin servidor establece el número máximo predeterminado de ejecutores por perfil de recursos en el 90 % del valor spark.dynamicAllocation.maxExecutors. Puede anular esta configuración al especificar spark.dynamicAllocation.maxExecutorsRatio con un valor entre 0 y 1. Además, configure también las siguientes propiedades para optimizar la asignación de recursos y el rendimiento general:
-
spark.dynamicAllocation.cachedExecutorIdleTimeout -
spark.dynamicAllocation.shuffleTracking.timeout -
spark.cleaner.periodicGC.interval
A continuación, se ofrece una descripción general de alto nivel sobre cómo EMR sin servidor obtiene acceso a los datos protegidos por las políticas de seguridad de Lake Formation.
-
Un usuario envía un trabajo de Spark a una aplicación AWS Lake Formation EMR Serverless habilitada.
-
EMR sin servidor envía el trabajo a un controlador de usuario y lo ejecuta en el perfil de usuario. El controlador de usuario ejecuta una versión sencilla de Spark que no permite lanzar tareas, solicitar ejecutores ni acceder a S3 ni al catálogo de Glue. Crea un plan de trabajo.
-
EMR sin servidor configura un segundo controlador denominado controlador del sistema y lo ejecuta en el perfil del sistema (con una identidad privilegiada). EMR sin servidor configura un canal TLS cifrado entre los dos controladores para la comunicación. El controlador de usuario utiliza el canal para enviar los planes de trabajo al controlador del sistema. El controlador del sistema no ejecuta el código enviado por el usuario. Ejecuta Spark a pleno rendimiento y se comunica con S3 y con el catálogo de datos para acceder a los datos. Solicita ejecutores y compila el plan de trabajo en una secuencia de etapas de ejecución.
-
Luego, EMR sin servidor ejecuta las etapas en los ejecutores con el controlador de usuario o el controlador del sistema. En cualquier etapa, el código de usuario se ejecuta exclusivamente en los ejecutores de perfiles de usuario.
-
Las etapas que leen los datos de las tablas del catálogo de datos protegidas por filtros de seguridad AWS Lake Formation o las que los aplican se delegan a los ejecutores del sistema.
Habilitación de Lake Formation en Amazon EMR
Para habilitar Lake Formation, spark.emr-serverless.lakeformation.enabled configúrelo true en spark-defaults clasificación inferior para el parámetro de configuración en tiempo de ejecución al crear una aplicación EMR Serverless.
aws emr-serverless create-application \ --release-label emr-7.10.0 \ --runtime-configuration '{ "classification": "spark-defaults", "properties": { "spark.emr-serverless.lakeformation.enabled": "true" } }' \ --type "SPARK"
También puede habilitar Lake Formation al crear una nueva aplicación en EMR Studio. Elija Uso de Lake Formation para un control de acceso detallado, disponible en Configuraciones adicionales.
El cifrado entre trabajadores está habilitado de forma predeterminada cuando usa Lake Formation con EMR Serverless, por lo que no necesita volver a habilitar explícitamente el cifrado entre trabajadores.
Habilitación de Lake Formation para trabajos de Spark
Para habilitar Lake Formation para trabajos individuales de Spark, establezca spark.emr-serverless.lakeformation.enabled en “verdadero” cuando utilice spark-submit.
--conf spark.emr-serverless.lakeformation.enabled=true
Permisos de IAM del rol de tiempo de ejecución de trabajos
Los permisos de Lake Formation controlan el acceso a los recursos del catálogo de datos de AWS Glue, las ubicaciones de Amazon S3 y los datos subyacentes en esas ubicaciones. Los permisos de la IAM controlan el acceso a Lake Formation and AWS Glue APIs y a los recursos. Aunque es posible que tenga el permiso de Lake Formation para acceder a una tabla del catálogo de datos (SELECT), la operación fallará si no tiene el permiso de IAM en la operativa de la API glue:Get*.
El siguiente es un ejemplo de política sobre cómo proporcionar permisos de IAM para acceder a un script en S3, cargar registros en S3, permisos de la API de Glue de AWS y permiso para acceder a Lake Formation.
Configuración de permisos de Lake Formation para roles de tiempo de ejecución de trabajos
Primero, registre la ubicación de su tabla de Hive con Lake Formation. A continuación, cree los permisos para el rol de tiempo de ejecución de su trabajo en la tabla que desee. Para obtener más información sobre Lake Formation, consulte ¿Qué es AWS Lake Formation? en la Guía para AWS Lake Formation desarrolladores.
Después de configurar los permisos de Lake Formation, envía los trabajos de Spark a Amazon EMR Serverless. Para obtener más información sobre los trabajos de Spark, consulta los ejemplos de Spark.
Envío de la ejecución de un trabajo
Cuando termine de configurar los permisos de Lake Formation, podrá enviar trabajos a Spark en EMR sin servidor. En la siguiente sección se muestran ejemplos de cómo configurar y enviar las propiedades de ejecución de los trabajos.
Compatibilidad con el formato de tabla abierta
EMR Serverless es compatible con Apache Hive, Apache Iceberg y, a partir de la versión 7.6.0, Delta Lake y Apache Hudi. Para obtener información sobre el soporte operativo, consulte las siguientes pestañas.