Aspectos generales
P: ¿Qué es Amazon EMR?
Amazon EMR es la plataforma de big data en la nube líder del sector destinada al procesamiento de datos, análisis interactivo y machine learning mediante el uso de marcos de código abierto, como Apache Spark, Apache Hive y Presto. Con EMR, puede ejecutar análisis a escala de petabytes a menos de la mitad del costo de las soluciones tradicionales en las instalaciones y con una velocidad 1,7 veces superior que Apache Spark estándar.
P: ¿Por qué debería utilizar Amazon EMR?
Amazon EMR le permite centrarse en transformar y analizar sus datos sin tener que preocuparse por administrar capacidad de cómputo o aplicaciones de código abierto, y le permite ahorrar dinero. Con EMR, puede aprovisionar al instante tanta capacidad como quiera en Amazon EC2 y configurar reglas de escalado para administrar los cambios de demanda de cómputo. Puede configurar alertas de CloudWatch para recibir notificaciones sobre los cambios en su infraestructura y actuar de inmediato. Si utiliza Kubernetes, también puede utilizar EMR para enviar sus cargas de trabajo a clústeres de Amazon EKS. Tanto si utiliza EC2 como EKS, se beneficia de los tiempos de ejecución optimizados de EMR, que aceleran su análisis y le permiten ahorrar tiempo y dinero.
P: Cómo implemento y administro Amazon EMR?
Puede implementar sus cargas de trabajo a EMR mediante Amazon EC2, Amazon Elastic Kubernetes Service (EKS) o AWS Outposts en las instalaciones. Puede ejecutar y administrar sus cargas de trabajo con la consola, API, SDK o CLI de EMR y organizarlas con Amazon Managed Workflows for Apache Airflow (MWAA) o AWS Step Functions. Para una experiencia interactiva, puede utilizar EMR Studio o SageMaker Studio.
P: ¿Cómo puedo comenzar a utilizar Amazon EMR?
P: ¿Qué nivel de confianza ofrece Amazon EMR?
Consulte nuestro Acuerdo de nivel de servicios.Desarrollo y depuración
P: ¿Dónde puedo encontrar muestras de código?
Consulte el código de muestra en estos artículos y tutoriales. Si utiliza EMR Studio, puede explorar las características con un conjunto de ejemplos de notebook.
P: ¿Cómo desarrollo una aplicación de procesamiento de datos?
Puede desarrollar, visualizar y depurar aplicaciones de ingeniería y de ciencia de datos escritas en R, Python, Scala y PySpark en Amazon EMR Studio. También puede desarrollar un trabajo de procesamiento de datos en su escritorio, por ejemplo, con Eclipse, Spyder, PyCharm o RStudio y ejecutarlo en Amazon EMR. Adicionalmente, puede seleccionar JupyterHub o Zeppelin en la configuración de software al implementar un nuevo clúster y desarrollar su aplicación en Amazon EMR con una o más instancias.
P: ¿Cuáles son los beneficios de utilizar las herramientas de línea de comandos o las API en lugar de la consola de administración de AWS?
Las herramientas de línea de comandos y API permiten lanzar mediante programación y monitorear el progreso de los clústeres en ejecución, crear otras funcionalidades personalizadas relacionadas con clústeres (por ejemplo, secuencias con varios pasos de procesamiento, programación de tareas, flujos de trabajo o monitoreo), así como crear herramientas o aplicaciones de valor añadido para otros clientes de Amazon EMR. A diferencia de lo anterior, la consola de administración AWS ofrece una interfaz fácil de utilizar para lanzar y monitorear los clústeres directamente desde un navegador web.
P: ¿Puedo añadir pasos a un clúster que ya se encuentre en ejecución?
Sí. Una vez que el trabajo esté ejecutándose, dispondrá de la opción de añadirle más pasos por medio de la API AddJobFlowSteps. La API AddJobFlowSteps añade pasos nuevos al final de la secuencia de pasos actual. Puede que le interese utilizar esta API para implementar lógica condicional en su clúster o para depurar.
P: ¿Es posible recibir notificaciones cuando termine el clúster?
Puede registrarse en Amazon SNS y solicitar que el clúster se publique en su tema de SNS cuando termine. También puede ver el progreso del clúster en la consola de administración de AWS o utilizar la línea de comandos, el SDK o las API para conocer un estado del clúster.
P: ¿Puedo terminar el clúster cuando haya finalizado los pasos?
Sí. Puede terminar el clúster de forma automática cuando haya finalizado todos los pasos al cambiar la marca de terminación automática a encendido.
P: ¿Qué versiones de sistemas operativos admite Amazon EMR?
Amazon EMR 5.30.0 y posterior y la serie Amazon EMR 6.x están basados en Amazon Linux 2. También puede especificar una AMI personalizada que cree con base de Amazon Linux 2. Esto le permite realizar una preconfiguración sofisticada para casi cualquier aplicación. Para obtener más información, consulte Uso de una AMI personalizada.
P: ¿Amazon EMR admite paquetes de software de terceros?
Sí. Puede utilizar acciones de arranque para instalar paquetes de software de terceros en su clúster. También puede cargar ejecutables de compilación estática por medio del mecanismo de caché distribuida de Hadoop. EMR 6.x es compatible con Hadoop 3, que permite que YARN NodeManager lance contenedores ya sea directamente al alojamiento del clúster de EMR o dentro de un contenedor Docker. Consulte nuestra documentación para obtener más información.
P: ¿Qué herramientas se encuentran disponibles para la depuración?
Hay muchas herramientas que puede utilizar para recopilar información sobre el clúster para poder determinar el error. Si utiliza Amazon EMR Studio, puede lanzar herramientas como Spark UI y YARN Timeline Service para simplificar la depuración. Desde la consola de Amazon EMR, puede obtener acceso fuera del clúster a interfaces persistentes de usuario de aplicación para Apache Spark, la interfaz de usuario de Tez y el servidor cronológico de YARN, diversas aplicaciones de interfaces de usuario dentro del clúster y una vista general del historial de aplicación en la consola de Amazon EMR para todas las aplicaciones YARN. También puede conectar su nodo maestro mediante SSH y visualizar las instancias del clúster mediante las interfaces web. Para obtener más información, consulte nuestra documentación.
EMR Studio
P: ¿Qué es EMR Studio?
EMR Studio es un entorno de desarrollo integrado (IDE) que facilita a los científicos e ingenieros de datos el desarrollo, la visualización y la corrección de aplicaciones de ingeniería y de ciencias de datos escritas en R, Python, Scala y PySpark.
Es una aplicación completamente gestionada con inicio de sesión único, Jupyter Notebooks completamente administrados, aprovisionamiento de infraestructura automatizada y la capacidad de depurar trabajos sin iniciar sesión en la consola de AWS o el clúster. Los analistas y científicos de datos pueden instalar kernels y librerías personalizadas, colaborar con sus compañeros mediante el uso de repositorios de código como GitHub y BitBucket, o ejecutar blocs de notas con parámetros como parte de flujos de trabajo programados mediante servicios de organización como Apache Airflow, AWS Step Functions y flujos de trabajo gestionados de Amazon para Apache Airflow. Para obtener más información, puede consultar Orchestrating analytics jobs on Amazon EMR notesbooks using Amazon MWAA. Los kernels y las aplicaciones de EMR Studio se ejecutan en clústeres de EMR, por lo que se obtiene el beneficio del procesamiento de datos distribuidos a través del tiempo de ejecución optimizado de Amazon EMR para Apache Spark. Los administradores pueden configurar EMR Studio para que los analistas puedan ejecuten sus aplicaciones en los clústeres existentes de EMR o crear nuevos clústeres mediante plantillas predefinidas de AWS CloudFormation para EMR.
P: ¿Qué puedo hacer con EMR Studio?
Con EMR Studio, puede iniciar sesión directamente en los blocs de notas de Jupyter completamente gestionados con sus credenciales corporativas sin cerrar sesión en la consola de AWS, iniciar blocs de notas en segundos, obtener blocs de notas incorporados con muestras y hacer exploración de datos. También puede personalizar su entorno al cargar kernels personalizados y bibliotecas Python desde blocs de notas. Los kernels y las aplicaciones de EMR Studio se ejecutan en clústeres de EMR, por lo que se obtiene el beneficio del procesamiento de datos distribuidos a través del tiempo de ejecución optimizado de Amazon EMR para Apache Spark. Puede colaborar con colegas al compartir blocs de notas mediante GitHub y otros repositorios. También puede ejecutar blocs de notas directamente como canalizaciones de integración e implementación continuas. Puede pasar diferentes valores de parámetros a un bloc de notas. También puede encadenar blocs de notas e integrar blocs de notas en flujos de trabajo programados mediante servicios de organización de flujo de trabajo como Apache Airflow. Además, puede depurar clústeres y trabajos con muy pocos clics con interfaces de aplicaciones nativas como la interfaz de usuario de Spark y el servicio de cronología de YARN.
P: ¿Cuál es la diferencia entre EMR Studio y EMR Notebooks?
Hay cinco diferencias principales.
- No hay necesidad de acceder a la consola de administración de AWS para EMR Studio. EMR Studio se aloja fuera de la consola de administración de AWS. Esto es útil cuando no da acceso a la Consola de administración de AWS a los científicos de datos o ingenieros de datos.
- Puede usar credenciales empresariales de su proveedor de identidades con el Centro de identidades de AWS IAM (sucesor de AWS SSO) para iniciar sesión en EMR Studio.
- EMR Studio le da una primera experiencia con cuadernos. Los kernels y las aplicaciones de EMR Studio se ejecutan en clústeres de EMR, por lo que se obtiene el beneficio del procesamiento de datos distribuidos a través del tiempo de ejecución optimizado de Amazon EMR para Apache Spark. Ejecutar el código en un clúster es tan simple como adjuntar el bloc de notas a un clúster existente o aprovisionar uno nuevo.
- EMR Studio tiene una interfaz de usuario simplificada y sintetiza configuraciones de hardware. Por ejemplo, puede configurar plantillas de clúster una vez y usar las plantillas para iniciar nuevos clústeres.
- EMR Studio habilita una experiencia de depuración para que tenga acceso a las interfaces de usuario de aplicación nativa en un lugar con muy pocos clics.
P: ¿Cuál es la diferencia entre EMR Studio y SageMaker Studio?
Puede utilizar tanto EMR Studio como SageMaker Studio con Amazon EMR. EMR Studio proporciona un entorno de desarrollo integrado (IDE) que le facilita el desarrollo, la visualización y la corrección de aplicaciones de ingeniería y de ciencias de datos escritas en R, Python, Scala y PySpark. Amazon SageMaker Studio proporciona una única interfaz virtual basada en la web donde puede llevar a cabo todos los pasos de desarrollo de Machine Learning. SageMaker Studio le brinda acceso completo, control y visibilidad en todos los pasos requeridos para crear, entrenar e implementar modelos. Puede cargar datos, crear blocs de notas nuevos, entrenar y ajustar modelos, retroceder y avanzar entre los pasos para ajustar experimentos, comparar resultados e implementar modelos para la producción, todo de forma rápida y en un solo lugar, lo que aumenta su productividad.
P: ¿Cómo puedo comenzar a usar EMR Studio?
Su administrador debe configurar primero un EMR Studio. Cuando su administrador le envíe un inicio de sesión único o URL para su Amazon EMR Studio, puede iniciar sesión en Studio directamente con sus credenciales corporativas.
P: ¿Necesito iniciar sesión en la consola de administración de AWS para usar EMR Studio?
No. Después de que su administrador configure un EMR Studio y proporcione la URL de acceso al estudio, su equipo podrá iniciar sesión con las credenciales corporativas. No es necesario iniciar sesión en la consola de administración de AWS. En un EMR Studio, su equipo puede desempeñar tareas y acceder a recursos configurados por su administrador.
P: ¿Cuáles son los proveedores de identidades admitidos para la experiencia de inicio de sesión único en EMR Studio?
El Centro de identidades de AWS IAM (sucesor de AWS SSO) es el proveedor de servicios de inicio de sesión único de EMR Studio. Puede encontrar la lista de proveedores de identidades compatibles con AWS IAM en nuestra documentación.
P: ¿Qué es un WorkSpace en EMR Studio?
Los WorkSpaces le ayudan a organizar Jupyter Notebooks. Todos los blocs de notas en un WorkSpace se almacenan en la misma ubicación de Amazon S3 y se ejecutan en el mismo clúster. También puede enlazar un repositorio de códigos, como un repositorio GitHub, a todos los blocs de notas en un WorkSpace. Puede crear y configurar un WorkSpace antes de adjuntarlo a un clúster, pero debe conectarlo a un clúster antes de ejecutar un bloc de notas.
P: ¿Puedo crear un WorkSpace o abrir un WorkSpace sin un clúster en EMR Studio?
Sí. Puede crear o abrir un WorkSpace sin adjuntarlo a un clúster. Debe conectarlos a un clúster solo cuando necesite ejecutar. Los kernels y aplicaciones de EMR Studio se ejecutan en clústeres de EMR, por lo que obtiene el beneficio del procesamiento distribuido de datos al usar el rendimiento optimizado del tiempo de ejecución de Amazon EMR para Apache Spark.
P: ¿Puedo instalar bibliotecas personalizadas para usar en mi código de notebook?
Todas las consultas Spark se ejecutan en su clúster EMR, por lo que necesita instalar bibliotecas con tiempo de ejecución que su aplicación de Spark pueda usar en el clúster. Puede instalar fácilmente bibliotecas de ámbito de red en una celda de notebook. También puede instalar kernels de Jupyter Notebook y bibliotecas de Python en un nodo maestro del clúster en una celda de notebook o durante la conexión SSH al nodo maestro del clúster. Para obtener más información, consulte la documentación. Adicionalmente, puede usar una acción de acción de arranque o una AMI personalizada para instalar las bibliotecas requeridas cuando crea un clúster. Para más información consulte Crear acciones de arranque para instalar software adicional y Cómo usar una AMI personalizada en la Guía de administración de Amazon EMR.
P: ¿Dónde se guardan las notebooks?
Los espacios de trabajo, juntamente con sus archivos de notebooks, se guardan automáticamente en la ubicación Amazon S3 que especificó cuando creó el espacio de trabajo, en intervalos regulares en el formato de archivo ipynb. El archivo de notebook tiene el mismo nombre que su notebook en la Amazon EMR Studio.
P: ¿Cómo uso el control de versión con mi notebook? ¿Puedo usar repositorios como GitHub?
Puede asociar los repositorios basados en Git con sus notebooks Amazon EMR Studio para guardar sus notebooks en un entorno controlado por versión.
P: ¿En qué recursos de cómputo puedo ejecutar notebooks en EMR Studio?
Con EMR Studio, puede ejecutar código de notebooks en Amazon EMR que se ejecute en Amazon Elastic Compute Cloud (Amazon EC2) o en Amazon EMR en Amazon Elastic Kubernetes Service (Amazon EKS). Puede adjuntar blocs de notas a clústeres nuevos o existentes. Hay dos formas de crear clústeres en EMR Studio. La primera es crear un clúster con una plantilla preconfigurada de clúster mediante AWS Service Catalog. La segunda es crear un clúster y especificar el nombre del clúster, número de instancias y el tipo de instancia.
P: ¿Puedo volver a adjuntar un WorkSpace con un recurso informático diferente en EMR Studio?
Sí. Puede abrir un WorkSpace, elegir el icono EMR Clusters (Clústeres de EMR) a la izquierda, seleccionar Detach (Desconectar) y después seleccionar un clúster del menú desplegable Select cluster (Seleccionar clúster) y elegir Attach (Adjuntar).
P: ¿Dónde encuentro todos mis WorkSpaces en EMR Studio?
En EMR Studio puede escoger la pestaña WorkSpaces a la izquierda y ver todos los WorkSpaces que crearon usted y otros usuarios en la misma cuenta de AWS.
P: ¿Cuáles son las políticas IAM necesarias para usar EMR Studio?
Cada EMR Studio necesita permisos para interoperar con otros servicios de AWS. Para dar los permisos necesarios a sus EMR Studios, sus administradores tienen que crear un rol de servicio de EMR Studio con las políticas proporcionadas. También necesitan especificar un rol de usuario para EMR Studio que defina los permisos a nivel Studio. Cuando agregan usuarios y grupos del Centro de identidades de AWS IAM (sucesor de AWS SSO) a EMR Studio, pueden asignar una política de sesión a un usuario o grupo para aplicar controles de permiso detallados. Las políticas de sesión permiten a los administradores refinar los permisos de usuario sin la necesidad de crear múltiples roles de IAM. Para más información sobre políticas de sesión, consulte Políticas y permisos en la Guía de usuario de AWS Identity and Access Management.
P: ¿Hay límites en los clústeres de EMR que pueda adjuntar a mi WorkSpace en EMR Studio?
Sí. Los clústeres de alta disponibilidad (multimaestro), clústeres Kerberizados y los clústeres AWS Lake Formation no se aceptan por el momento.
P: ¿Cuánto cuesta usar Amazon EMR Studio?
Amazon EMR Studio se le ofrece sin costo adicional. Hay cargos aplicables por el almacenamiento de Amazon Simple Storage Service y para los clústeres de Amazon EMR al utilizar EMR Studio. Para obtener más información sobre las opciones de precios y detalles, consulte Precios de Amazon EMR.
EMR Notebooks
P: ¿Qué es EMR Notebooks?
Recomendamos a los nuevos clientes que utilicen Amazon EMR Studio, no EMR Notebooks. EMR Notebooks ofrece un entorno administrado, en función de Jupyter Notebook, que permite a los científicos de datos, analistas y desarrolladores preparar y visualizar datos, colaborar con colegas, crear aplicaciones y llevar a cabo análisis interactivos mediante el uso de clústeres EMR. Aunque recomendamos a los nuevos clientes que utilicen EMR Studio, se admite EMR Notebooks por compatibilidad.
P: ¿Qué puedo hacer con EMR Notebooks?
Puede usar EMR Notebooks para crear aplicaciones Apache Spark y ejecutar consultas interactivas en su clúster de EMR sin demasiado esfuerzo. Varios usuarios pueden crear blocs de notas sin servidor directamente desde la consola, vincularlas a un clúster EMR compartido existente o aprovisionar un clúster directamente desde la consola, e inmediatamente comenzar a experimentar con Spark. Puede desconectar blocs de notas y volver a conectarlos a nuevos clústeres. Las notebooks son buckets S3 de guardado automático. Además, puede recuperar las notebooks guardadas desde la consola para reanudar el trabajo. EMR Notebooks está previamente equipado con las bibliotecas que se encuentran en el almacén de Anaconda. Esto le permite importar y usar estas bibliotecas en su código de notebook y utilizarlas para manipular datos y visualizar resultados. Por último, EMR notebooks tiene capacidades de monitoreo de Spark integradas que puede usar para monitorear el progreso de sus trabajos de Spark y depurar el código desde dentro de su notebook.
P: ¿Cómo puedo comenzar a usar EMR Notebooks?
Para comenzar con EMR Notebooks, abra la consola de EMR y elija Notebooks en el panel de navegación. Desde allí, solo elija Create Notebook (Crear notebook), ingrese un nombre para la notebook, elija un clúster EMR o cree instantáneamente uno nuevo, proporcione una función de servicio que la notebook pueda usar y elija un bucket S3 donde desee guardar los archivos de la notebook. Luego, haga clic en Create Notebook. Luego de que la notebook muestre el estado Ready (Listo), elija Open (Abrir) para iniciar el editor de notebook.
P: ¿Qué versiones de EMR son compatibles con EMR Notebooks?
EMR Notebooks se puede adjuntar a los clústeres EMR que ejecutan la versión EMR 5.18.0 o versiones posteriores.
P: ¿Cuánto cuesta usar EMR Notebooks?
EMR Notebooks se le ofrece sin coste adicional. Se le cobrará lo usual por los clústeres EMR vinculados en su cuenta. Puede encontrar más información acerca de los precios del clúster en https://aws.amazon.com/emr/pricing/
Administración de datos
P: ¿Cómo transfiero mis datos a Amazon S3?
Amazon EMR proporciona diversas maneras de ingresar datos a un clúster. La manera más común es cargar los datos a Amazon S3 y usar las características integradas de Amazon EMR para cargar los datos en su clúster. Puede usar la característica de caché distribuida de Hadoop para transferir archivos de un sistema de archivos distribuido al sistema de archivos local. Para más detalles, consulte la documentación. De otro modo, si quiere migrar datos de las instalaciones a la nube, puede usar uno de los servicios de migración de datos a la nube de AWS.
P: ¿Cómo puedo obtener registros de los clústeres terminados?
Los registros del sistema de Hadoop, junto con los registros de usuarios, se colocan en el bucket de Amazon S3 que especifique al crear un clúster. Las interfaces de usuario de aplicaciones persistentes se ejecutan fuera del clúster. Los registros en el servidor de historial de Spark, IU de Tez y servidores cronológicos de YARN están disponibles durante 30 días después de que se termina una aplicación.
P: ¿Los registros se comprimen?
Por ahora, Amazon EMR no comprime los registros cuando los traslada a Amazon S3.
P: ¿Puedo cargar mis datos desde Internet o desde otra ubicación que no sea Amazon S3?
Sí. Puede usar AWS Direct Connect para establecer conexiones de red dedicadas privadas a AWS. Si tiene grandes cantidades de datos, puede usar AWS Import/Export. Para obtener más detalles, consulte nuestra documentación.
Facturación
P: ¿Amazon EMR puede calcular el tiempo aproximado que demorará el procesamiento de datos de entrada?
No. Cada clúster y cada conjunto de datos de entrada son diferentes; es imposible calcular a priori la duración de un trabajo.
P: ¿Cuánto cuesta Amazon EMR?
Los precios de Amazon EMR son simples y predecibles: paga una tarifa por segundo por cada segundo utilizado, con un cobro mínimo de un minuto. Puede hacer una estimación de su factura con la calculadora de precios de AWS. El uso de otros productos de Amazon Web Services incluido Amazon EC2 se facturará aparte de Amazon EMR.
P: ¿Cuándo comienza y finaliza la facturación del uso que haga de un clúster de Amazon EMR?
La facturación de Amazon EMR comienza cuando el clúster está listo para ejecutar pasos. La facturación de Amazon EMR finaliza cuando usted solicita apagar el clúster. Para más detalles sobre cuándo comienza y finaliza la facturación de Amazon EC2, consulte las Preguntas frecuentes sobre facturación de Amazon EC2.
P: ¿Dónde puedo hacer un seguimiento del uso que hago de Amazon EMR, Amazon EC2 y Amazon S3?
Puede hacer un seguimiento del uso en la consola de administración de costes y facturación.
P: ¿Cómo se calculan las horas de instancias normalizadas que se muestran en la consola?
En la consola de administración de AWS, cada clúster tiene una columna de horas de instancia normalizadas que indica el número aproximado de horas de cómputo que un clúster ha usado, redondeado a la hora más cercana.
Las horas de instancia normalizadas son horas de cómputo basadas en el estándar de uso de una hora de m1.small = una hora de tiempo de cómputo normalizada. Puede ver nuestra documentación para ver una lista de tamaños diferentes con una familia de instancias y el factor correspondiente de normalización por hora.
Por ejemplo, si ejecuta un clúster r3.8xlarge de 10 nodos durante una hora, la cantidad total de horas de instancias normalizadas que se mostrará en la consola será de 640 (10 [número de nodos] x 64 [factor de normalización] x 1 [número de horas durante las que se ha ejecutado el clúster] = 640).
Se trata de un número aproximado y no debe utilizarse con fines de facturación. Consulte la consola de administración de costes y facturación para ver información sobre el uso facturable de Amazon EMR.
P: ¿Amazon EMR admite instancias bajo demanda, de spot y reservadas de Amazon EC2?
Sí. Amazon EMR admite sin problemas tanto instancias bajo demanda como instancias de spot e instancias reservadas. Haga clic aquí para obtener más información sobre las instancias reservadas de Amazon EC2. Haga clic aquí para obtener más información sobre las instancias de spot de Amazon EC2. Haga clic aquí para obtener más información sobre las reservas de capacidad de Amazon EC2.
P: ¿Los precios incluyen impuestos?
Si no se especifica lo contrario, nuestros precios no incluyen los impuestos ni gravámenes correspondientes, como el IVA y cualquier otro impuesto sobre las ventas. En el caso de los clientes con una dirección de facturación de Japón, el uso de los servicios de AWS está sujeto al impuesto de consumo nipón. Más información.
Control de acceso de datos y seguridad
P: ¿Cómo impido que otras personas vean mis datos durante la ejecución de un clúster?
Amazon EMR inicia las instancias en dos grupos de seguridad de Amazon EC2, uno para el principal y otro para los demás nodos de clúster. El grupo de seguridad principal tiene un puerto abierto para comunicarse con el servicio. También tiene abierto el puerto SSH para que pueda utilizar SSH en las instancias por medio de la clave especificada al iniciar sesión. Los demás nodos se inician en otro grupo de seguridad aparte que solamente permite la interacción con la instancia principal. De forma predeterminada, ninguno de estos dos grupos de seguridad está configurado para permitir el acceso de fuentes externas, ni siquiera de las instancias de Amazon EC2 pertenecientes a otros clientes. Dado que se trata de grupos de seguridad incluidos en su cuenta, podrá cambiar su configuración mediante el panel o las herramientas estándar de EC2. Haga clic aquí para obtener más información sobre los grupos de seguridad de EC2. Adicionalmente, puede configurar el acceso público de bloque de Amazon EMR en cada región que utilice para impedir la creación de clústeres si una ruta permite el acceso público en cualquier puerto que no agregue a una lista de excepciones.
P: ¿Están seguros mis datos?
Amazon S3 ofrece mecanismos de autenticación para garantizar que los datos almacenados estén protegidos frente al acceso no autorizado. Salvo que especifique lo contrario el cliente que esté cargando los datos, solamente dicho cliente podrá obtener acceso a los datos. Los clientes de Amazon EMR también pueden optar por enviar datos a Amazon S3 mediante el protocolo HTTPS para lograr una transmisión segura. Además, Amazon EMR utiliza siempre HTTPS para enviar datos entre Amazon S3 y Amazon EC2. Para mayor seguridad, los clientes pueden cifrar los datos de entrada antes de cargarlos en Amazon S3 (mediante cualquier herramienta común para cifrado de datos). En caso de hacerlo, deberán añadir un paso de descifrado al principio del clúster cuando Amazon EMR recupere los datos de Amazon S3.
P: ¿Puedo obtener el historial de todas las llamadas a la API de EMR realizadas en mi cuenta para fines relacionados con auditorías de seguridad o de conformidad?
Sí. AWS CloudTrail es un servicio web que registra las llamadas a la API de AWS de su cuenta y le entrega registros. El historial de llamadas a la API de AWS creado por CloudTrail permite realizar un análisis de seguridad, un seguimiento de los cambios en los recursos y auditorías de conformidad. Obtenga más información sobre CloudTrail en la página de detalles de AWS CloudTrail y actívelo a través de la consola de administración de AWS de CloudTrail.
P: ¿Cómo controlo a qué pueden acceder los usuarios de EMR en Amazon S3?
De forma predeterminada, los procesos de aplicaciones de Amazon EMR utilizan perfiles de instancia EC2 cuando llaman a otros servicios de AWS. En el caso de clústeres de varios usuarios, Amazon EMR ofrece tres opciones para administrar el acceso de los usuarios a los datos de Amazon S3.
- La integración con AWS Lake Formation le permite definir y administrar políticas de autorización detalladas en AWS Lake Formation para acceder a bases de datos, tablas y columnas en AWS Glue Data Catalog. Puede aplicar las políticas de autorización en trabajos enviados mediante Amazon EMR Notebooks y Apache Zeppelin para cargas de trabajo de EMR Spark interactivas, y enviar eventos de auditoría a AWS CloudTrail. Al habilitar esta integración, también habilita Single Sign-On federado para EMR Notebooks o Apache Zeppelin desde sistemas de identidad empresarial compatibles con Security Assertion Markup Language (SAML) 2.0.
- La integración nativa con Apache Ranger le permite configurar un servidor nuevo o existente de Apache Ranger para definir y administrar políticas de autorización detalladas para el acceso de usuarios a bases de datos, tablas y columnas de datos de Amazon S3 mediante Hive Metastore. Apache Ranger es una herramienta de código abierto que permite habilitar, monitorear y administrar de forma pormenorizada la seguridad de los datos en la plataforma Hadoop.
Esta integración nativa le permite definir tres tipos de políticas de autorización en el servidor de administración de políticas de Apache Ranger. Puede definir autorizaciones a nivel de fila, de columna y de tabla para Hive, a nivel de columna y de tabla para Spark y, por último, a nivel de prefijo y de objeto para Amazon S3. Amazon EMR instala y configura de forma automática los complementos correspondientes de Apache Ranger en el clúster. Estos complementos de Ranger se sincronizan con el servidor de administración de políticas para determinar las autorizaciones, aplicar las políticas de acceso a datos y enviar los eventos de auditoría a Amazon CloudWatch Logs.
- El mapeador de roles de usuario de Amazon EMR le permite sacar partido de los permisos de AWS IAM para administrar el acceso a los recursos de AWS. Puede crear mapeos entre usuarios (o grupos) y roles de IAM personalizados. Un usuario o grupo solo puede acceder a los datos permitidos por el rol de IAM personalizado. En la actualidad, esta característica se encuentra disponible a través de los laboratorios de AWS.
Zonas de disponibilidad y regiones
P: ¿Cómo utiliza Amazon EMR las zonas de disponibilidad?
Amazon EMR lanza todos los nodos para un clúster determinado en la misma zona de disponibilidad de Amazon EC2. La ejecución de un clúster en la misma zona mejora el rendimiento de los flujos de trabajo. De forma predeterminada, Amazon EMR elige la zona de disponibilidad que dispone de más recursos para ejecutar el clúster. No obstante, se puede especificar otra zona de disponibilidad si es necesario. También tiene la opción de optimizar su asignación para las instancias bajo demanda de menor precio, capacidad de spot óptima o usar reservas de capacidad bajo demanda.
P: ¿En qué regiones está disponible Amazon EMR?
Para ver la lista de las regiones de AWS donde se admite Amazon EMR, consulte la tabla de regiones de AWS, que contiene información sobre la infraestructura global de AWS.
P: ¿Amazon EMR es compatible con AWS Local Zones (zonas locales)?
EMR facilita el lanzamiento de clústeres en AWS Local Zone de Los Ángeles. Puede utilizar EMR en la región de EE.UU. Oeste (Oregón) para lanzar clústeres en subredes asociadas con AWS Local Zone de Los Ángeles.
P: ¿Qué región debo seleccionar para ejecutar los clústeres?
Cuando se crea un clúster, lo habitual es seleccionar la misma región en la que están almacenados los datos.
P: ¿Puedo utilizar datos ubicados en la UE en un clúster que se encuentra en la región EE. UU. y viceversa?
Sí, puede. Si transfiere datos de una región a otra, se le facturará el consumo de ancho de banda. Para obtener información sobre los precios de ancho de banda, visite la sección de precios en la página de detalles de EC2.
P: ¿Qué distingue a la región AWS GovCloud (EE.UU.)?
La región AWS GovCloud (EE.UU.) se ha diseñado para los clientes y las agencias gubernamentales de EE.UU. Cumple los requisitos ITAR de EE.UU. En GovCloud, EMR no admite las instancias de spot ni la función de activación de depuración. La consola de administración de EMR aún no está disponible en GovCloud.
Opciones de implementación
Amazon EMR en Amazon EC2
P: ¿Qué es un clúster de Amazon EMR?
Un clúster es una colección de instancias Amazon Elastic Compute Cloud (Amazon EC2). Cada instancia del clúster se llama nodo y tiene un rol en el clúster, conocido como tipo de nodo. Amazon EMR también instala varios componentes de software en cada tipo de nodo, lo que proporciona a cada nodo un rol en una aplicación distribuida como Apache Hadoop. Cada clúster tiene un identificador exclusivo que comienza por “j-”.
P: ¿Qué son los tipos de nodo en un clúster?
Un clúster de Amazon EMR tiene tres tipos de nodos:
- Nodo maestro: nodo que administra el clúster ejecutando componentes de software para coordinar la distribución de datos y tareas entre otros nodos para el procesamiento. El nodo maestro hace un seguimiento de las tareas y monitorea el estado del clúster. Cada clúster tiene un nodo maestro y es posible crear un clúster de un único nodo con solo el nodo maestro.
- Nodo principal: nodo con componentes de software que ejecutan tareas y almacenan datos en el Hadoop Distributed File System (HDFS) en el clúster. Los clústeres de varios nodos tienen como mínimo un nodo principal.
- Nodo de tarea: nodo con componentes de software que solo ejecuta tareas y no almacena datos en HDFS. Los nodos de tarea son opcionales.
P: ¿Qué es un paso de clúster?
Un paso de clúster es una unidad de procesamiento definida por el usuario que se asigna aproximadamente a un algoritmo que manipula los datos. Un paso es una aplicación de Hadoop MapReduce implementada como un Java jar o un programa de streaming de Java, Ruby, Perl, Python, PHP, R o C . Por ejemplo, para saber la frecuencia con que aparecen las palabras en un documento y obtener un resultado ordenado de dicho recuento, el primer paso sería una aplicación de MapReduce que contara cuántas veces aparece cada palabra y el segundo paso sería una aplicación de MapReduce que ordenara el resultado a partir de los recuentos obtenidos en el primer paso.
P: ¿Cuáles son los diferentes estados de un clúster?
STARTING - El clúster comienza configurando las instancias EC2.
BOOTSTRAPPING – Las acciones de arranque se ejecutan en el clúster.
RUNNING – Se está ejecutando un paso del clúster en este momento.
WAITING – El clúster está activo, pero no tiene pasos que ejecutar.
TERMINATING – El clúster está en proceso de apagarse.
TERMINATED – El clúster se ha apagado sin errores.
TERMINATED_WITH_ERRORS – El clúster se ha apagado con errores.
P: ¿Cuáles son los diferentes estados de un paso?
PENDING – El paso está a la espera de su ejecución.
RUNNING – El paso se está ejecutando en este momento.
COMPLETED – El paso se ha completado de forma satisfactoria.
CANCELLED – Se ha cancelado el paso antes de su ejecución, ya sea porque ha fallado un paso anterior o porque el clúster ha finalizado antes de que pudiera ejecutarse.
FAILED: El paso ha fallado durante su ejecución.
Cómo lanzar un clúster
P: ¿Cómo puedo lanzar un clúster?
Puede lanzar un clúster en la consola de administración de AWS. Para ello, solamente necesita completar un sencillo formulario de solicitud de clústeres. El formulario de solicitud especifica el nombre del clúster, la ubicación de los datos de entrada en Amazon S3, la aplicación de procesamiento, la ubicación deseada para la salida de los datos y el número y el tipo de instancias de Amazon EC2 que desea utilizar. Si lo prefiere, puede especificar una ubicación para almacenar los registros de clústeres y la clave SSH para iniciar sesión en el clúster mientras se está ejecutando. Otra opción es lanzar un clúster mediante la API RunJobFlow o por medio del comando “create” (crear) en las herramientas de línea de comandos. Para lanzar un clúster con EMR Studio, diríjase a la sección EMR Studio anterior.
P: ¿Cómo puedo terminar un clúster?
Puede terminar un clúster en cualquier momento desde la consola de administración de AWS. Para ello, seleccione el clúster en cuestión y haga clic en el botón "Terminate". Si lo prefiere, también puede utilizar la API TerminateJobFlows. Si termina un clúster en ejecución, los resultados que no se hayan almacenado de forma persistente en Amazon S3 se perderán y se apagarán todas las instancias de Amazon EC2.
P: ¿Amazon EMR admite varios clústeres simultáneos?
Puede iniciar tantos clústeres como desee. Cuando comience, el límite son 20 instancias en total entre todos los clústeres. Si necesita más instancias, complete el formulario de solicitud de instancias Amazon EC2. Cuando aumente su límite de Amazon EC2, el nuevo límite se aplicará de forma automática a sus clústeres de Amazon EMR.
Cómo administrar un clúster
P: ¿Cómo utiliza Amazon EMR Amazon EC2 y Amazon S3?
Puede cargar sus datos de entrada en Amazon S3 y una aplicación de procesamiento de datos. A continuación, Amazon EMR lanza una serie de instancias Amazon EC2 especificadas. El servicio comienza a ejecutar el clúster al tiempo que extrae los datos de entrada de Amazon S3 mediante el esquema URI S3 en las instancias Amazon EC2 que se hayan lanzado. Una vez terminado el clúster, Amazon EMR transfiere los datos de salida a Amazon S3, donde podrá recuperarlos o utilizarlos como entrada para otro clúster.
P: ¿Cómo se lleva a cabo el procesamiento informático en Amazon EMR?
Amazon EMR utiliza el motor de procesamiento de datos de Hadoop para llevar adelante el procesamiento informático implementado en el modelo de programación de MapReduce. El cliente implementa su algoritmo en términos de las funciones map() y reduce(). El servicio inicia la cantidad de instancias de Amazon EC2 especificadas por el cliente (una instancia principal y varios nodos). Amazon EMR ejecuta el software de Hadoop en estas instancias. El nodo principal divide los datos de entrada en bloques y distribuye su procesamiento a los demás nodos. Luego, cada nodo ejecuta la función map en los datos que se le han asignado, con lo que genera datos intermedios. Los datos intermedios se ordenan y se organizan en particiones antes de enviarlos a procesos que les aplican la función del reductor localmente en los nodos. Por último, el resultado de las tareas del reductor se recopila en archivos. Un único “clúster” puede incluir una secuencia de estos pasos de MapReduce.
P: ¿Qué tipos de instancias Amazon EC2 admite Amazon EMR?
Consulte la página de precios de EMR para obtener más detalles sobre los tipos de instancias disponibles más recientes y los precios por región.
P: ¿Cuánto tardará en ejecutarse un clúster?
El tiempo que se ejecute el clúster depende de varios factores, como el tipo de clúster, el volumen de datos de entrada y el número y el tipo de instancias de Amazon EC2 que elija para el clúster.
P: Si el nodo principal de un clúster deja de funcionar, ¿Amazon EMR puede recuperarlo?
Sí. Puede iniciar un clúster de EMR (versión 5.23 o posterior) con tres nodos principales y admitir alta disponibilidad de las aplicaciones como YARN Resource Manager, HDFS Name Node, Spark, Hive y Ganglia. Amazon EMR automáticamente conmuta por error a un nodo principal de reserva si el nodo principal falla o si colapsan los procesos críticos como Resource Manager o Name Node. Dado que el nodo principal no es un posible punto único de error, puede ejecutar sus clústeres de EMR de larga duración sin interrupciones. En el caso de una conmutación por error, Amazon EMR reemplaza automáticamente el nodo principal con la falla por un nuevo nodo principal con la misma configuración y las mismas acciones de arranque.
P: Si otro nodo deja de funcionar en un clúster, ¿Amazon EMR puede recuperarlo?
Sí. Amazon EMR es tolerante a los errores de nodos y continúa la ejecución de tareas si uno de ellos deja de funcionar. Amazon EMR también aprovisionará un nuevo nodo cuando se produzca un fallo en el nodo principal. Sin embargo, Amazon EMR no sustituye los nodos si se pierden todos los nodos de un clúster.
P: ¿Puedo utilizar SSH en los nodos de clúster?
Sí. Puede utilizar SSH en los nodos de su clúster y ejecutar los comandos de Hadoop directamente desde ellos. Si necesita utilizar SSH con un nodo específico, deberá ejecutarlo primero en el nodo principal y luego en el nodo que desee.
P: ¿Qué son las acciones de arranque de Amazon EMR?
Las acciones de arranque son una característica de Amazon EMR que ofrecen a los usuarios un método para ejecutar la configuración personalizada antes de la ejecución de los clústeres. Las acciones de arranque pueden utilizarse para instalar software o configurar instancias antes de ejecutar un clúster. Puede obtener más información sobre las acciones de arranque en la Guía para desarrolladores de EMR.
P: ¿Cómo puedo utilizar las acciones de arranque?
Puede escribir un script de acción de arranque en cualquier lenguaje de programación ya instalado en la instancia del clúster: Bash, Perl, Python, Ruby, C o Java. Existen varias acciones de arranque predefinidas. Una vez escrita la secuencia de comandos, necesitará cargarla en Amazon S3 e incluir una referencia a su ubicación cuando inicie un clúster. Consulte la Guía para desarrolladores para obtener más detalles sobre el uso de las acciones de arranque.
P: ¿Cómo configuro Hadoop para un clúster?
La configuración de Hadoop predeterminada de EMR es adecuada para la mayoría de las cargas de trabajo. Sin embargo, en función de los requisitos de procesamiento y memoria específicos del clúster, puede que sea conveniente ajustar estos valores de configuración. Por ejemplo, si las tareas de clúster utilizan mucha memoria, puede elegir utilizar menos tareas por núcleo y reducir el tamaño de montículo de su rastreador de trabajos. Para este caso, hay disponible una acción de arranque predefinida para configurar el clúster al inicio. Consulte la sección sobre cómo configurar la acción de arranque para uso intensivo de memoria en la Guía para desarrolladores para obtener detalles de la configuración e instrucciones de uso. Existe otra acción de arranque predefinida que permite personalizar la configuración del clúster con el valor que elija. Consulte la sección sobre cómo configurar la acción de arranque de Hadoop en la Guía para desarrolladores para obtener instrucciones de uso.
P: ¿Puedo modificar el número de nodos de un clúster en ejecución?
Sí. Existen dos tipos de nodos: (1) nodos principales, que alojan datos persistentes mediante Hadoop Distributed File System (HDFS) y además ejecutan tareas de Hadoop, y (2) nodos de tareas, que únicamente ejecutan tareas de Hadoop. Mientras se ejecuta un clúster, es posible aumentar el número de nodos principales. Por su parte, el número de nodos de tareas puede tanto aumentarse como reducirse. Esto puede hacerse mediante la API, el SDK para Java o el cliente de línea de comando. Consulte la sección relacionada con el cambio de tamaño de los clústeres en ejecución de la Guía para desarrolladores si desea obtener más información sobre cómo modificar el tamaño de un clúster que se encuentre en ejecución. También puede usar el Escalado administrado por EMR.
P: ¿Cuándo conviene utilizar nodos principales en lugar de nodos de tareas?
Los nodos principales alojan datos persistentes en HDFS y no pueden eliminarse; por este motivo, deberían reservarse con la capacidad necesaria para completar el clúster. Dado que los nodos de tareas pueden añadirse o eliminarse y no contienen HDFS, son idóneos para los casos en que se necesita capacidad solo de forma temporal. Puede lanzar flotas de instancias de tarea en instancias de spot para aumentar la capacidad mientras minimiza costes.
P: ¿Por qué me podría interesar modificar el número de nodos en un clúster en ejecución?
Existen varias situaciones en las que puede resultar interesante modificar el número de nodos de un clúster que se encuentra en ejecución. Si el clúster se ejecuta a menor velocidad de la esperada o si cambian los requisitos de tiempo, podrá aumentar el número de nodos principales para acelerar el rendimiento del clúster. Si diversas fases de su clúster tienen diferentes requisitos de capacidad, podrá comenzar con un número pequeño de nodos principales y aumentar o reducir el número de nodos de tareas para ajustarse a los requisitos variables de capacidad del clúster en cuestión. También puede usar el Escalado administrado por EMR.
P: ¿Puedo modificar automáticamente el número de nodos entre pasos de clúster?
Sí. Puede incluir un paso predefinido en el clúster que cambie automáticamente el tamaño de un clúster entre un paso y el siguiente si sabe que cada paso tiene diferentes necesidades de capacidad. Dado que todos los pasos se ejecutan en orden, puede definir el número de nodos que ejecutarán un determinado paso del clúster.
P: ¿Cómo puedo permitir que otros usuarios de IAM obtengan acceso a un clúster?
Si quiere crear un nuevo clúster que sea visible para todos los usuarios de IAM dentro de la CLI de EMR, añada el marcador --visible-to-all-users cuando cree el clúster. Por ejemplo: elastic-mapreduce --create --visible-to-all-users. En la consola de administración, solo tiene que seleccionar "Visible to all IAM Users" en el panel de opciones avanzadas del asistente de creación de clústeres.
Para convertir un clúster existente en visible para todos los usuarios de IAM, debe utilizar la CLI de EMR. Utilice --set-visible-to-all-users y especifique el identificador del clúster. Por ejemplo: elastic-mapreduce --set-visible-to-all-users true --jobflow j-xxxxxxx. Esto solo lo puede hacer el creador del clúster.
Para obtener más información, consulte la sección sobre configuración de permisos para usuarios de la Guía para desarrolladores de EMR.
Cómo etiquetar un clúster
P: ¿Qué recursos de Amazon EMR puedo etiquetar?
Puede añadir etiquetas a un clúster activo de Amazon EMR. Un clúster de Amazon EMR consta de instancias de Amazon EC2, y las etiquetas que se añadan a un clúster de Amazon EMR se propagarán a cada instancia de Amazon EC2 activa en dicho clúster. No puede añadir, editar o suprimir etiquetas de clústeres terminados o de instancias de Amazon EC2 terminadas que hayan formado parte de un clúster activo.
P: ¿El etiquetado de Amazon EMR admite los permisos basados en recursos con usuarios de IAM?
No, Amazon EMR no admite el permiso basado en recursos por etiqueta. Sin embargo, es importante señalar que las etiquetas propagadas a las instancias de Amazon EC2 se comportan como etiquetas normales de Amazon EC2. Por lo tanto, una política de IAM para Amazon EC2 actuará sobre las etiquetas propagadas desde Amazon EMR si coinciden con las condiciones de dicha política.
P: ¿Cuántas etiquetas puedo añadir a un recurso?
Puede añadir hasta diez etiquetas a un clúster de Amazon EMR.
P: ¿Se muestran mis etiquetas de Amazon EMR en cada instancia de Amazon EC2 de ese clúster? Si elimino una etiqueta de mi clúster de Amazon EMR, ¿se eliminará automáticamente de cada instancia EC2 asociada?
Sí, Amazon EMR propaga las etiquetas que se han añadido a un clúster a las instancias EC2 subyacentes de dicho clúster. Si añade una etiqueta a un clúster de Amazon EMR, también aparecerá en las instancias de Amazon EC2 relacionadas. De igual forma, si suprime una etiqueta de un clúster de Amazon EMR, también se suprimirá de sus instancias de Amazon EC2 relacionadas. Sin embargo, si está utilizando políticas de IAM para Amazon EC2 y piensa utilizar la funcionalidad de etiquetado de Amazon EMR, debe asegurarse de que se le conceda dicho permiso para utilizar las API de etiquetado de Amazon EC2 CreateTags y DeleteTags.
P: ¿Cómo puedo hacer que las etiquetas se muestren en mi factura para segmentar costos?
Seleccione las etiquetas que desearía utilizar en su informe de facturación AWS aquí. A continuación, para ver el costo de sus recursos combinados, puede organizar la información de facturación en función de los recursos que tengan los mismos valores clave de etiqueta.
P: ¿Cómo distingo las instancias de Amazon EC2 que forman parte de un clúster de Amazon EMR?
Una instancia de Amazon EC2 asociada a un clúster de Amazon EMR tiene dos etiquetas de sistema:
- aws:elasticmapreduce:instance-group-role=CORE
- Clave = función instance-group; valor = [CORE o TASK];
- aws:elasticmapreduce:job-flow-id=j-12345678
- Clave = job-flow-id; valor = [JobFlowID]
P: ¿Puedo editar etiquetas directamente en las instancias de Amazon EC2?
Sí, puede añadir o suprimir etiquetas directamente en las instancias de Amazon EC2 que formen parte de un clúster de Amazon EMR. Sin embargo, no le recomendamos que lo haga porque el sistema de etiquetado de Amazon EMR no sincronizará directamente los cambios realizados en una instancia de Amazon EC2 asociada. Le recomendamos agregar y eliminar las etiquetas de los clústeres de Amazon EMR desde la consola de Amazon EMR, CLI o API para garantizar que el clúster y las instancias Amazon EC2 asociadas cuenten con las etiquetas correctas.
EMR sin servidor
Aspectos generales
P: ¿Qué es Amazon EMR sin servidor?
Amazon EMR sin servidor es una nueva opción de implementación en Amazon EMR que le permite ejecutar macrodatos como Apache Spark y Apache Hive sin configurar, administrar ni escalar clústeres.
P: ¿Quién puede usar EMR sin servidor?
Los ingenieros, analistas y científicos de datos pueden usar EMR sin servidor para crear aplicaciones utilizando marcos de código abierto como Apache Spark y Apache Hive. Pueden usar estos marcos para transformar datos, ejecutar consultas SQL interactivas y cargas de trabajo de machine learning.
P: ¿Cómo puedo comenzar a usar EMR sin servidor?
Puede usar EMR Studio, AWS CLI o las API para enviar trabajos, hacer un seguimiento del estado de los trabajos y crear sus canalizaciones de datos para que se ejecuten en EMR sin servidor. Para comenzar con EMR Studio, inicie sesión en la consola de administración de AWS, vaya a Amazon EMR, en la categoría Analytics (Análisis), y seleccione Amazon EMR Serverless (Amazon EMR sin servidor). Siga las instrucciones en la consola de administración de AWS, vaya a Amazon EMR, en la categoría Analytics (Análisis), y seleccione Amazon EMR Serverless (Amazon EMR sin servidor). Siga las instrucciones de la guía de Introducción para crear su aplicación EMR sin servidor y enviar trabajos. Puede consultar la página Interacción con su aplicación en la CLI de AWS para iniciar sus aplicaciones y enviar trabajos mediante la CLI. También puede encontrar ejemplos de EMR sin servidor y código de muestra en nuestro repositorio de GitHub.
P: ¿Qué marcos de código abierto admite EMR sin servidor?
EMR sin servidor actualmente es compatible con los motores Apache Spark y Apache Hive. Si necesita soporte para marcos adicionales como Apache Presto o Apache Flink, envíe una solicitud a [email protected].
P: ¿En qué regiones está disponible EMR sin servidor?
EMR sin servidor se encuentra disponible en las siguientes regiones de AWS: Asia-Pacífico (Bombay), Asia-Pacífico (Seúl), Asia-Pacífico (Singapur), Asia-Pacífico (Sídney), Asia-Pacífico (Tokio), Canadá (centro), Europa (Fráncfort), Europa (Irlanda), Europa (Londres), Europa (París), Europa (Estocolmo) América del Sur (São Paulo), Este de EE. UU. (Norte de Virginia), Este de EE. UU. (Ohio), Oeste de EE. UU. (Norte de California) y Oeste de EE. UU. (Oregón).
P: ¿Cuál es la diferencia entre Amazon EMR sin servidor, Amazon EMR en EC2, Amazon EMR en AWS Outposts y Amazon EMR en EKS?
Amazon EMR brinda la opción de ejecutar aplicaciones en clústeres basados en EC2, clústeres de EKS, Outposts o sin servidor. Los clústeres de EMR en EC2 son adecuados para clientes que necesitan el máximo control y flexibilidad para ejecutar su aplicación. Con EMR en los clústeres de EC2, los clientes pueden elegir el tipo de instancia de EC2 para satisfacer las necesidades de rendimiento específicas de la aplicación, personalizar la AMI de Linux, personalizar la configuración de la instancia de EC2, personalizar y ampliar los marcos de código abierto e instalar software personalizado adicional en las instancias del clúster. Amazon EMR en EKS es adecuado para clientes que quieren estandarizar EKS para administrar clústeres entre aplicaciones o usar diferentes versiones de un marco de código abierto en el mismo clúster. Amazon EMR en AWS Outposts es para clientes que quieren ejecutar EMR más cerca de su centro de datos, dentro de Outpost. EMR sin servidor es adecuado para clientes que quieren evitar la administración y operación de clústeres y prefieren ejecutar aplicaciones utilizando marcos de código abierto.
P: ¿Cuáles son algunas de las diferencias de características entre EMR sin servidor y Amazon EMR en EC2?
|
|
|
Amazon EMR en EKS |
|
|
|
S |
Resistencia a los errores de la zona de disponibilidad |
|
|
S |
Escalar automáticamente los recursos hacia arriba y hacia abajo según sea necesario |
|
|
S |
Cifrado de datos en reposo |
|
|
S |
|
|
Spark |
|
|
|
|
N |
Compatibilidad para Apache Hudi y Apache Iceberg |
S |
S |
S |
Integración con Apache Ranger para control de permisos de tabla y columna |
|
|
N |
Personalizar imágenes del sistema operativo |
|
|
S |
Personalizar el marco de código abierto instalado |
S |
S |
S |
Personalizar y cargar bibliotecas y dependencias adicionales |
S |
S |
S |
Ejecutar cargas de trabajo desde SageMaker Studio como parte del flujo de trabajo de machine learning (ML) |
N |
|
N |
Conectarse a cuadernos de Jupyter autoalojados |
N |
S |
S |
Crear y organizar canalizaciones con Apache Airflow y Amazon Managed Workflows for Apache Airflow (MWAA) |
|
|
S |
Crear y organizar canalizaciones con AWS Step Functions |
S |
|
S |
P: ¿Qué versiones de EMR son compatibles con EMR sin servidor?
EMR sin servidor es compatible con las etiquetas de versión 6.6 y posteriores de EMR. Con EMR sin servidor, obtiene el mismo tiempo de ejecución de EMR con rendimiento optimizado disponible en otras opciones de implementación de EMR, que es 100 % compatible con API con marcos estándar de código abierto.
P: ¿Se incluyen los cargos por la capacidad preinicializada en BilledResourceUtilization?
BilledResourceUtilization solo tiene en cuenta la duración durante la cual se utilizó la capacidad preinicializada para el trabajo y no tiene en cuenta el tiempo de inactividad de dicha capacidad.
P: ¿Cuál es la diferencia entre BilledResourceUtilization y TotalResourceUtilization?
Si la duración del tiempo de ejecución de un trabajador es inferior a 60 segundos, BilledResourceUtilization lo contaría como 60 segundos, mientras que TotalResourceUtilization lo redondearía al segundo más cercano. Además, BilledResourceUtilization excluye 20 GB de almacenamiento gratuito del cálculo.
Aplicaciones, trabajadores y trabajos
P: ¿Qué es una aplicación y cómo puedo crearla?
Con Amazon EMR sin servidor, puede crear una o más aplicaciones EMR sin servidor que utilizan marcos de análisis de código abierto. Para crear una aplicación, debe especificar los siguientes atributos: 1) la versión de lanzamiento de Amazon EMR para la versión del marco de código abierto que quiere usar y 2) los motores de análisis específicos que quiere que use su aplicación, como Apache Spark 3.1 o Apache Hive 3.0. Después de crear una aplicación, puede comenzar a ejecutar sus trabajos de procesamiento de datos o solicitudes interactivas a su aplicación.
P: ¿Qué es un trabajador?
Una aplicación EMR sin servidor utiliza trabajadores internamente para ejecutar sus cargas de trabajo. Cuando se envía un trabajo, EMR sin servidor calcula los recursos necesarios para el trabajo y programa a los trabajadores. EMR sin servidor divide sus cargas de trabajo en tareas, aprovisiona y configura a los trabajadores con el marco de código abierto y los retira cuando el trabajo se completa. EMR sin servidor escala automáticamente a los trabajadores hacia arriba o hacia abajo según la carga de trabajo y el paralelismo requerido en cada etapa del trabajo, lo que elimina la necesidad de estimar la cantidad de trabajadores necesarios para ejecutar sus cargas de trabajo. El tamaño predeterminado de estos trabajadores se basa en su tipo de aplicación y en la versión de lanzamiento de Amazon EMR. Puede anular estos tamaños al programar la ejecución de un trabajo.
P: ¿Puedo especificar el número mínimo y máximo de trabajadores que pueden utilizar mis trabajos?
Con EMR sin servidor, puede especificar la cantidad mínima y máxima de trabajadores simultáneos y la configuración de vCPU y memoria para los trabajadores. También puede establecer los límites de capacidad máxima en los recursos de la aplicación para controlar los costos.
P: ¿Cuándo debo crear varias aplicaciones?
Considere la posibilidad de crear varias aplicaciones al llevar a cabo cualquiera de las siguientes acciones:
- Uso de diferentes marcos de código abierto
- Uso de diferentes versiones de marcos de código abierto para diferentes casos de uso
- Pruebas A/B al actualizar de una versión a otra
- Mantenimiento de entornos lógicos separados para escenarios de prueba y producción
- Proporcionar entornos lógicos separados para diferentes equipos con controles de costos independientes y seguimiento de uso
- Separación de aplicaciones de diferentes líneas de negocio
P: ¿Puedo cambiar las propiedades predeterminadas de una aplicación EMR sin servidor después de crearla?
Sí, puede modificar las propiedades de la aplicación, como la capacidad inicial, los límites de capacidad máxima y la configuración de la red mediante EMR Studio o la llamada a la API o la CLI de actualización de la aplicación.
P: ¿Cuándo debo crear una aplicación con un grupo de trabajadores preinicializado?
Una aplicación EMR sin servidor sin trabajadores preinicializdos tarda hasta 120 segundos en determinar los recursos necesarios y aprovisionarlos. EMR sin servidor proporciona una característica opcional que mantiene a los trabajadores inicializados y listos para responder en segundos, lo que crea efectivamente un grupo de trabajadores de guardia para una aplicación. Esta función se denomina capacidad preinicializada y se puede configurar para cada aplicación al configurar el parámetro de capacidad inicial de una aplicación.
La capacidad preinicializada permite que los trabajos comiencen de inmediato, lo que la hace ideal para implementar trabajos urgentes. Puede especificar la cantidad de trabajadores que quiere preinicializar cuando inicia una aplicación EMR sin servidor. Posteriormente, cuando los usuarios envían trabajos, los trabajadores preinicializados se pueden usar para iniciar inmediatamente los trabajos. Si el trabajo requiere más trabajadores de los que ha elegido para preinicializar, EMR sin servidor agrega automáticamente más trabajadores (hasta el límite máximo simultáneo que especifique). Una vez que finaliza el trabajo, EMR sin servidor vuelve automáticamente a mantener a los trabajadores preinicializados que especificó. Los trabajadores se apagan automáticamente si han estado inactivos durante 15 minutos. Puede cambiar el tiempo de inactividad predeterminado para su aplicación con la API de actualización de la aplicación o EMR Studio.
P: ¿Cómo envío y administro trabajos en EMR sin servidor?
Puede enviar y administrar trabajos sin servidor de EMR mediante EMR Studio, el SDK o la CLI o nuestros conectores Apache Airflow.
P: ¿Cómo puedo incluir dependencias con trabajos que quiero ejecutar en EMR sin servidor?
Para PySpark, puede empaquetar sus dependencias de Python usando virtualenv y pasar el archivo de almacenamiento usando la opción --archives, que permite a sus trabajadores usar las dependencias durante la ejecución del trabajo. Para Scala o Java, puede empaquetar sus dependencias como archivos jar, cargarlos en Amazon S3 y pasarlos mediante las opciones --jars o --packages con la ejecución de su trabajo EMR sin servidor.
P: ¿Las aplicaciones Spark y Hive de EMR sin servidor admiten funciones definidas por el usuario (UDF)?
EMR sin servidor admite UDF basadas en Java. Puede empaquetarlas como archivos jar, cargarlas en S3 y usarlas en sus scripts de Spark o HiveQL.
P: ¿Qué configuraciones de trabajadores admite EMR sin servidor?
Consulte la Configuración del trabajador compatible para obtener más información.
P: ¿Puedo cancelar un trabajo de EMR sin servidor en caso de que se esté ejecutando más de lo esperado?
Sí, puede cancelar un trabajo de EMR sin servidor en ejecución desde EMR Studio o mediante la API o la CLI cancelJobRun.
P: ¿Puedo agregar almacenamiento adicional para los trabajadores?
Seleccione la opción de almacenamiento adecuada durante el envío del trabajo para agregar almacenamiento adicional para los trabajadores en EMR sin servidor. EMR sin servidor ofrece dos opciones de almacenamiento efímero:
- Almacenamiento estándar: esta opción incluye 20 GB de almacenamiento efímero por trabajador de forma predeterminada. Puede personalizarlo durante el envío del trabajo y aumentar la capacidad de almacenamiento de 20 GB a 200 GB por trabajador.
- Almacenamiento en disco optimizado por aleatorización: esta opción proporciona hasta 2 TB de almacenamiento efímero por trabajador, optimizado para cargas de trabajo de aleatorización intensiva.
P: ¿Dónde puedo encontrar muestras de código?
Puede encontrar muestras de código EMR sin servidor en nuestro repositorio de GitHub.
P: ¿Cuáles son las opciones de trabajadores disponibles en EMR sin servidor?
EMR sin servidor ofrece dos opciones de trabajadores: trabajadores bajo demanda y trabajadores preinicializados.
Los trabajadores bajo demanda se lanzan solo cuando se los necesita para un trabajo y se liberan automáticamente cuando el trabajo se completa. Esto le ayuda a ahorrar costos al pagar solo por los recursos que utiliza y a evitar costos adicionales por la capacidad de inactividad. Los trabajadores bajo demanda amplían o reducen la aplicación en función de la carga de trabajo, por lo que no tiene que preocuparse por el aprovisionamiento excesivo o insuficiente de los recursos.
Los trabajadores preinicializados son una función opcional que permite mantener a los trabajadores preparados para responder en cuestión de segundos. Esto crea, de manera efectiva, un grupo cálido de trabajadores para una aplicación. Esto permite que los trabajos se inicien al instante, lo que lo hace ideal para aplicaciones iterativas y trabajos urgentes.
P: ¿Puedo configurar aplicaciones de EMR sin servidor en varias Availability Zones (AZ, zonas de disponibilidad)?
Sí, es posible configurar aplicaciones de EMR sin servidor en varias AZ. El proceso para configurar varias AZ depende del tipo de trabajadores que utilice.
Cuando solo se utilizan trabajadores bajo demanda, EMR sin servidor distribuye los trabajos en varias AZ de forma predeterminada, pero cada trabajo se ejecuta solo en una AZ. Puede elegir qué AZ usar al asociar subredes a las AZ. Si una AZ falla, EMR sin servidor ejecuta automáticamente su trabajo en otra AZ en buen estado.
Cuando se utilizan trabajadores preinicializados, EMR sin servidor selecciona una AZ en buen estado de las subredes que usted especifica. Los trabajos se presentan en esa AZ hasta que detenga la aplicación. Si una AZ se deteriora, puede reiniciar la aplicación para cambiar a otra AZ en buen estado.
P: ¿Puedo conectarme a almacenes de datos de otra región?
EMR sin servidor solo puede acceder a ciertos recursos de AWS en la misma región cuando está configurada sin conectividad de Virtual Private Cloud (VPC, nube privada virtual). Consulte las consideraciones. Para acceder a los recursos de AWS en una región diferente o a recursos que no sean de AWS, deberá configurar el acceso a la VPC y una puerta de enlace NAT para dirigirse a los puntos de conexión públicos de los recursos de AWS.
Monitorización y depuración
P: ¿Cómo superviso las aplicaciones y ejecuciones de trabajos de Amazon EMR sin servidor?
Las métricas de trabajo y aplicación de Amazon EMR sin servidor se publican cada 30 segundos en Amazon CloudWatch.
P: ¿Cómo inicio Spark UI y Tez UI con EMR sin servidor?
Desde EMR Studio, puede seleccionar un trabajo de EMR sin servidor en ejecución o completado y luego hacer clic en el botón Spark UI o Tez UI para iniciarlos.
Seguridad y control de datos
P: ¿Puedo acceder a los recursos de mi Amazon Virtual Private Cloud (VPC)?
Sí, puede configurar aplicaciones de Amazon EMR sin servidor para acceder a recursos en su propia VPC. Consulte la sección Configuración de acceso a VPC en la documentación para obtener más información.
P: ¿Qué tipo de aislamiento puedo obtener con una aplicación de EMR sin servidor?
Cada aplicación de EMR sin servidor está aislada de otras aplicaciones y se ejecuta en una Amazon VPC segura.
Cuotas de nivel de cuenta basadas en vCPU
P: ¿Qué está cambiando con las cuotas de servicio de Amazon EMR sin servidor?
Amazon EMR sin servidor está introduciendo una nueva cuota de servicio llamada Max que puede tener más de una vCPU por cuenta. Esta cuota basada en vCPU le permite establecer el número máximo de vCPU agregadas que sus aplicaciones pueden escalar verticalmente por región. Según la aplicación de este nivel, las cuotas basadas en trabajadores (número máximo de trabajadores activos) tendrán servicio de soporte técnico hasta el 1 de febrero de 2023.
P: ¿Dónde puedo ver y gestionar mi cuota de vCPU de mi cuenta?
Puede ver, gestionar y solicitar un aumento de cuota en la consola de administración de Service Quotas de AWS. Para obtener más información, consulte Solicitud de un aumento de cuota en la guía del usuario de Service Quotas.
P: ¿Cuál es la diferencia entre la cuota de cuenta de vCPU y la propiedad de aplicación maximumCapacity?
EMR sin servidor proporciona dos controles de coste: 1/ La cuota máxima de vCPU simultáneas se aplica en todas las aplicaciones EMR sin servidor en una región en su cuenta. 2/ El parámetro maximumCapacity limita la vCPU de una aplicación EMR sin servidor específica. Debería usar la cuota basada en vCPU para limitar el número máximo de vCPU simultáneas que usa cada aplicación en una región, y la propiedad maximumCapacity para limitar los recursos usados por una aplicación específica. Por ejemplo, si tiene 5 aplicaciones y cada una puede escalar hasta 1000 vCPU, establezca la propiedad maximumCapacity en 1000 vCPU para cada aplicación y configure la cuota de vCPU de la cuenta en 5 * 1000 = 5000 vCPU.
P: ¿Cómo sabré si alcanzo la cuota de vCPU de mi cuenta?
Si supera la cuota de vCPU de su cuenta, EMR sin servidor no tendrá más capacidad. Si intenta crear una aplicación nueva después de sobrepasar la cuota, el proceso de creación de la aplicación no se completará y mostrará el mensaje de error: “No se pudo crear la aplicación, ya que ha excedido el servicio de cuota máxima de vCPU simultáneas por cuenta. Puede ver y gestionar su cuota de servicio usando la consola de Service Quotas de AWS”. Si crea una tarea nueva después de sobrepasar la cuota, la tarea no se completará y mostrará el mensaje de error: “No se pudo crear la tarea, ya que ha excedido el servicio de cuota máxima de vCPU simultáneas por cuenta. Puede ver y gestionar su cuota de servicio usando la consola de Service Quotas de AWS”. Consulte la documentación para obtener más detalles.
Precios
P: ¿Cómo ayuda Amazon EMR sin servidor a ahorrar costos en las implementaciones de macrodatos?
Amazon EMR sin servidor puede ayudarle a ahorrar costos de tres maneras. En primer lugar, no hay sobrecarga operativa de administrar, proteger y escalar clústeres. En segundo lugar, EMR sin servidor escala automáticamente a los trabajadores en cada etapa del procesamiento de su trabajo y los reduce cuando no son necesarios. Se le cobra por los recursos agregados de vCPU, memoria y almacenamiento utilizados desde el momento en que un trabajador comienza a ejecutarse hasta que se detiene, redondeado al segundo más cercano con un mínimo de 1 minuto. Por ejemplo, su trabajo puede requerir 10 trabajadores durante los primeros 10 minutos de procesamiento del trabajo y 50 trabajadores durante los próximos 5 minutos. Con el escalado automático detallado, incurre en costos para solo 10 trabajadores por 10 minutos y 50 trabajadores por 5 minutos. Como resultado, no tiene que pagar por recursos infrautilizados. En tercer lugar, EMR sin servidor incluye el tiempo de ejecución optimizado para el rendimiento de Amazon EMR para Apache Spark y Apache Hive, y Presto. El tiempo de ejecución de Amazon EMR es compatible con API y es más del doble de rápido que los motores de análisis estándar de código abierto, por lo que sus trabajos se ejecutan más rápido e incurren en menos costos informáticos.
P: ¿El costo de EMR sin servidor es comparable al de Amazon EMR en instancias de spot de EC2?
Depende de su EMR actual sobre la utilización del clúster de EC2. Si está ejecutando clústeres de EMR con instancias bajo demanda de EC2, EMR sin servidor ofrecerá un costo total de propiedad (TCO) más bajo si el uso de su clúster actual es inferior al 70 %. Si utiliza EC2 Savings Plans, EMR sin servidor ofrecerá un TCO más bajo si el uso de su clúster actual es inferior al 50 %. Y si utiliza instancias de spot de EC2, Amazon EMR en EC2 y Amazon EMR en EKS seguirán siendo más rentables.
P: ¿Se cobra a los trabajadores preinicializados incluso después de que los trabajos se hayan completado?
Sí, si no detiene a los trabajadores después de que se complete un trabajo, incurrirá en cargos sobre los trabajadores preinicializados.
P: ¿Con quién debo comunicarme si tengo preguntas, comentarios y solicitudes de funciones?
Envíenos un correo electrónico a [email protected] con sus consultas y valiosos comentarios sobre EMR sin servidor.
Amazon EMR en Amazon EKS
P: ¿Qué es Amazon EMR en Amazon EKS?
Amazon EMR en Amazon EKS es un modelo de implementación de Amazon EMR que permite a los clientes procesar numerosas cantidades de datos de manera fácil y rentable. Utiliza marcos de análisis alojados que se ejecutan en contenedores administrados por el servicio flexible de Amazon EKS, además de la infraestructura a escala web de Amazon Elastic Compute Cloud (Amazon EC2), AWS Fargate y Amazon Simple Storage Service (Amazon S3).
P: ¿Por qué debería utilizar Amazon EMR en Amazon EKS?
Amazon EMR en Amazon EKS desacopla el trabajo de análisis de los servicios e infraestructura que procesan el trabajo mediante el uso de un enfoque basado en contenedores. Se puede enfocar más en desarrollar su solicitud y menos en operar la infraestructura, ya que EMR en EKS configura de forma dinámica la infraestructura basada en la informática, la memoria y las dependencias de aplicación del trabajo. Los equipos de infraestructura pueden gestionar de manera centralizada una plataforma de informática para consolidar las cargas de trabajo de EMR con otras aplicaciones basadas en contenedores. Múltiples equipos, organizaciones o unidades empresariales pueden ejecutar de manera simultánea e independiente sus procesos de análisis en la infraestructura compartida mientras mantienen activado el aislamiento mediante Amazon EKS y AWS Identity and Access Management (IAM).
P: ¿Cuáles son los beneficios para los usuarios que ya ejecutan Apache Spark en Amazon EKS?
Si ya ejecuta Apache Spark en Amazon EKS, puede obtener todos los beneficios de Amazon EMR como aprovisionamiento automático y escalado y la posibilidad de usar las últimas versiones completamente administradas de marcos de análisis de big data de código abierto. Puede obtener un tiempo de ejecución optimizado de EMR para Apache Spark con un rendimiento tres veces mayor que el código abierto de Apache Spark en EKS, una experiencia de ciencia de datos sin servidor con EMR Studio y la interfaz de usuario de Apache Spark, control de acceso a datos detallado y soporte para cifrado de datos.
P: ¿Cómo se relaciona y funciona esta característica con otros servicios de AWS?
Amazon EKS ofrece a los clientes una experiencia administrada para ejecutar Kubernetes en AWS, lo que le permite agregar capacidad informática mediante el uso de grupos de nodos administrados EKS o AWS Fargate. Al ejecutar trabajos EMR en EKS, se puede acceder a sus datos en Amazon S3, mientras que la supervisión y el registro se pueden integrar con Amazon CloudWatch. AWS Identity and Access Management (IAM) habilita el control basado en acceso para ambos trabajos y para servicios de AWS dependientes.
P: ¿Cómo funciona Amazon EMR en Amazon EKS?
Registre su clúster de EKS en Amazon EMR. Después, envíe sus trabajos de Spark a EMR mediante CLI, SDK o EMR Studio. EMR solicita que el programador de Kubernetes en EKS programe Pods. Para cada trabajo que usted ejecute. EMR en EKS crea un contenedor. El contenedor contiene imagen base de Amazon Linux 2 con actualizaciones de seguridad, además de Apache Spark y dependencias asociadas para ejecutar Spark, así como sus dependencias específicas de aplicación. Cada trabajo se ejecuta en un pod. El Pod descarga este contenedor y empieza a ejecutarlo. Si la imagen del contenedor se ha implementado previamente al nodo. Después, se utiliza una imagen de caché y se evita la descarga. Los contenedores sidecar, como reenviadores de registro o métrica, se pueden implementar en el pod. El Pod termina después de que el trabajo termina. Después de que el trabajo termine, usted todavía puede depurarlo mediante la interfaz de usuario de Spark.
P: ¿Qué servicios informáticos de AWS puedo usar con Amazon EMR en EKS?
Puede usar Amazon EMR para EKS con ambas instancias de Amazon Elastic Compute Cloud (EC2) para aceptar opciones de personalización más amplias o el servicio AWS Fargate sin servidor para procesar sus análisis sin tener que aprovisionar o administrar instancias EC2. La disponibilidad de aplicación puede mejorar de forma automática al propagar sus trabajos de análisis a través de múltiples zonas de disponibilidad (AZ, Availability Zones) de AWS.
P: ¿Cómo puedo comenzar a usar EMR en EKS?
Para comenzar, registre su clúster de Amazon EKS en Amazon EMR. Después del registro, para hacer referencia a este registro en su definición de trabajo, lo que incluye las dependencias de aplicación y los parámetros de marco, envíe sus cargas de trabajo a EMR para la ejecución. Con EMR en EKS, puede usar diferentes marcos de análisis de big data de fuente abierta, versiones y configuraciones para aplicaciones de análisis que se ejecutan en el mismo clúster de EKS. Para obtener más información, consulte nuestra documentación.
P: ¿Puedo usar la misma versión de EMR para los clústeres y aplicaciones de EMR que se ejecutan en el EKS?
Sí, puede usar la misma versión de EMR para aplicaciones que se ejecutan en los clústeres de EMR y aplicaciones que se ejecutan en EKS.
P: ¿Cómo puedo solucionar los problemas de las aplicaciones analíticas?
Puede usar la interfaz de usuario de Amazon EMR Spark para diagnosticar y solucionar problemas de las aplicaciones de Spark. Para todas las aplicaciones de análisis, EMR proporciona acceso a detalles de aplicación, registros asociados y métricas para hasta 30 días después de haberse completado. Los trabajos se pueden configurar de forma individual para enviar registros a una ubicación de Amazon S3 o Amazon CloudWatch.
P: ¿Puedo ver aplicaciones de EMR en EKS?
Sí, las aplicaciones de EMR aparecen en la consola EKS como trabajos de Kubernetes e implementaciones.
P: ¿Puedo aislar múltiples trabajos o aplicaciones de cada uno en el mismo clúster de EKS?
Sí, los Kubernetes proporcionan aislamiento de trabajos de forma nativa. Además, cada trabajo se puede configurar para ejecutarlo con su propio rol de ejecución para limitar los recursos de AWS a los que el trabajo puede acceder.
P: ¿Cómo se pueden reducir costes con EMR en EKS?
EMR en EKS reduce costes al eliminar la necesidad de ejecutar clústeres dedicados. Puede usar un clúster común compartido de EKS para ejecutar aplicaciones de análisis que requieran distintas versiones de marcos de análisis de big data de fuente abierta. También puede usar el mismo clúster de EKS para ejecutar sus otras aplicaciones en contenedores fuera de EMR.
P: ¿Cómo se cobra EMR en EKS?
Los precios de Amazon EMR en EKS se calculan basados en los recursos de CPU virtual y memoria solicitados para los pods que se ejecutan en su trabajo a una granularidad por minuto. Si desea obtener más información acerca de los precios, visite la página de precios de Amazon EMR.
P: ¿Cuáles son algunas diferencias entre EMR en EKS y EMR en EC2?
Característica |
EMR en EKS |
EMR en EC2 |
Última versión de EMR admitida |
S |
S |
Soporte Multi-AZ para trabajos |
S |
N |
Varios usuarios con cargas de trabajo no relacionadas con big data |
S |
N |
Alcance de la versión de EMR |
trabajo |
clúster |
Clúster de escalado automático |
S |
S |
Escalado administrado |
N |
S |
Proveedores de informática |
EC2, Fargate |
EC2 |
Cifrado de datos |
S |
S |
Autenticación Kerberos |
N |
S |
Aplicaciones alojadas |
Solo Spark |
|
AWS Lake Formation |
N |
S |
Integración de Apache Ranger |
N |
S |
Imágenes o AMI personalizadas |
S |
S |
Integración con SageMaker y Zeppelin |
S con Livy |
S |
Blocs de notas autoalojados |
N | S |
Integración con EMR Studio |
S |
S |
Zeppelin, JEG |
N |
S |
Organización con Apache Airflow |
S |
S |
Organización con AWS StepFunctions |
S |
S |
P:¿Qué son las plantillas de pods?
EMR en EKS le permite utilizar las plantillas de pods de Kubernetes para personalizar dónde y cómo se ejecuta su trabajo en el clúster de Kubernetes. Las plantillas de pods de Kubernetes proporcionan un patrón de diseño reutilizable o una plantilla para expresar de forma declarativa cómo debe implementarse un pod de Kubernetes en el clúster de EKS.
P: ¿Por qué debería utilizar las plantillas de pods con mi trabajo de EMR en EKS?
Las plantillas de pods pueden dar más control sobre cómo se programan los trabajos en Kubernetes. Por ejemplo, puede reducir los costos al ejecutar las tareas del controlador de Spark en instancias de spot de Amazon EC2 o al permitir que los trabajos que requieren SSD se ejecuten únicamente en instancias habilitadas para SSD. Plantillas de pods con EMR en EKS para permitir un control detallado de cómo se asignan los recursos y ejecutar contenedores personalizados junto con su trabajo. Por lo tanto, el resultado es la reducción de costos y el aumento del rendimiento de sus trabajos.
P: ¿Qué es un pod?
Los pods son uno o más contenedores, con recursos de red y almacenamiento compartidos, que se ejecutan en un nodo de trabajo de Kubernetes. EMR en EKS usa pods para ejecutar su trabajo al programar las tareas del controlador y del ejecutor de Spark como pods individuales.
P: ¿Cuáles son algunos casos de uso de las plantillas de pods?
Puede optimizar tanto el rendimiento como el costo al usar plantillas de pods. Por ejemplo, puede ahorrar costos al definir trabajos para que se ejecuten en instancias de spot de EC2 o aumentar el rendimiento al programarlos en instancias EC2 de GPU o basadas en SSD. A menudo, los clientes necesitan un control detallado de la carga de trabajo para dar soporte a varios equipos u organizaciones en EKS y las plantillas de pods simplifican la ejecución de trabajos en grupos de nodos designados por equipos. Además, puede implementar contenedores sidecar para ejecutar el código de inicialización de su trabajo o ejecutar herramientas comunes de monitoreo como Fluentd para el reenvío de registros.
P: ¿Puedo especificar una plantilla de pod diferente para mis controladores y ejecutores de Spark?
Aunque no es obligatorio, puede proporcionar plantillas individuales para los controladores y ejecutores. Por ejemplo, puede configurar nodeSelectors y tolerancias para designar a los controladores de Spark para que se ejecuten solo en instancias bajo demanda de AWS EC2 y a los ejecutores de Spark para que se ejecuten solo en instancias de AWS Fargate. En el envío de su trabajo, configure las propiedades de Spark spark.kubernetes.driver.podTemplateFile y spark.kubernetes.executor.podTemplateFile para que hagan referencia a la ubicación en S3 de la plantilla.
P: ¿Qué valores de plantilla puedo especificar?
Puede especificar tanto los campos del pod (lo que incluye volúmenes, afinidad de pod, contenedores de inicialización, selector de nodo) y los campos del contenedor principal de Spark (lo que incluye EnvFrom, directorio de trabajo, ciclo de vida, montajes del volumen del contenedor). La lista completa de valores permitidos se encuentra en nuestra documentación.
P. ¿Dónde puedo obtener más información sobre las plantillas de pods?
Amazon EKS ya es compatible con las plantillas de pods. Para obtener más información sobre la compatibilidad de Amazon EMR en EKS con las plantillas de pods, consulte nuestra documentación y la documentación de plantillas de pods de Apache Spark.
P: ¿Por qué debo usar imágenes personalizadas con EMR en EKS?
Sin imágenes personalizadas, administrar dependencias de aplicaciones con EMR en EKS requería referenciarlas en tiempo de ejecución desde un servicio de almacenamiento externo como Amazon S3. Ahora, con el soporte para imágenes personalizadas, puede crear una imagen de Docker autocontenida con la aplicación y sus bibliotecas dependientes. Ya no tiene que mantener, actualizar o cambiar las bibliotecas almacenadas de manera externa, y sus aplicaciones de big data se pueden desarrollar con los mismos procesos de DevOps que las otras aplicaciones en contenedores que está usando. Simplemente apunte a la imagen y ejecútela.
P: ¿Qué es una imagen personalizada?
Una imagen personalizada es una imagen de Docker de EMR en EKS proporcionada (“imagen base”) que contiene el tiempo de ejecución de EMR y los conectores a otros servicios de AWS que modifica para incluir dependencias de aplicaciones o paquetes adicionales que requiere su aplicación. La nueva imagen puede almacenarse en Amazon Elastic Container Registry (ECR) o su propio registro de contenedores de Docker.
P: ¿Cuáles son algunos casos de uso de las imágenes personalizadas?
Los clientes pueden crear una imagen base, agregar sus bibliotecas corporativas estándar y almacenarla en Amazon Elastic Container Registry (Amazon ECR). Otros clientes pueden personalizar la imagen para incluir las dependencias específicas de su aplicación. La imagen inmutable resultante puede escanearse en búsqueda de vulnerabilidades e implementarse en entornos de prueba y producción. Algunos ejemplos de dependencias que puede agregar son el SDK de Java, bibliotecas de Python o R y puede agregarlas a la imagen directamente, como con cualquier otra aplicación en contenedor.
P: ¿Qué incluye la imagen base?
P: ¿Cuándo debo especificar una imagen personalizada diferente para mis controladores y ejecutores de Spark?
Puede especificar imágenes independientes para sus controladores y ejecutores de Spark cuando quiere incluir diferentes dependencias o bibliotecas. Eliminar las bibliotecas innecesarias en ambas imágenes puede dar como resultado un tamaño de imagen menor y, por lo tanto, reducir el tiempo de inicio del trabajo. Puede especificar una única imagen para controladores y ejecutores (spark.kubernetes.container.image) o especificar una imagen diferente para controladores (spark.kubernetes.driver.container.image) y ejecutores (spark.kubernetes.executor.container.image).P: ¿Dónde puedo obtener más información sobre las imágenes personalizadas?
Para obtener más información sobre la compatibilidad de Amazon EMR en EKS con las imágenes personalizadas, consulte nuestra documentación o la Documentación de Apache Spark.P: ¿Hay algún cargo adicional para las imágenes personalizadas
No hay cargos por utilizar la característica de imágenes personalizadas.Amazon EMR en AWS Outposts
P: ¿Qué es AWS Outposts?
AWS Outposts brinda servicios, infraestructura y modelos operativos nativos de AWS a prácticamente cualquier centro de datos, espacio de coubicación o instalación local. Mediante el uso deEMR en Outposts, puede implementar, administrar y escalar los clústeres de EMR en las instalaciones, tal como lo haría en la nube.
P: ¿Cuándo debería usar EMR en Outposts?
Si ya tiene implementaciones Apache Hadoop existentes en las instalaciones y se está esforzando por cumplir con las demandas de capacidad durante la utilización pico, puede usar EMR en Outposts para aumentar su capacidad de procesamiento sin tener que mover los datos a la nube. EMR en Outposts le permite lanzar un nuevo clúster EMR en las instalaciones en minutos y conectarse a conjuntos de datos existentes en el almacenamiento HDFS en las instalaciones a fin de cumplir con esta demanda y mantener los acuerdos de nivel de servicios.
Si necesita procesar datos que deban permanecer en las instalaciones por cuestiones de gobernanza, conformidad u otros motivos, puede utilizar EMR en Outposts para implementar y ejecutar aplicaciones como Apache Hadoop y Apache Spark en las instalaciones, cerca de sus datos. De esta forma, se reduce la necesidad de mover grandes cantidades de datos locales a la nube, lo que disminuye la cantidad general de tiempo necesaria para procesar esos datos.
Si está inmerso en el proceso de migrar datos y cargas de trabajo de Apache Hadoop a la nube y desea empezar a utilizar EMR antes de que se complete la migración, puede utilizar AWS Outposts para lanzar clústeres EMR que se conecten con su almacenamiento HDFS existente en las instalaciones. A continuación, puede migrar de forma gradual sus datos a Amazon S3 como parte de una evolución hacia una infraestructura en la nube.
P: ¿Qué versiones de EMR son compatibles con EMR en Outposts?
La versión mínima compatible con Amazon EMR es la 5.28.0.
P: ¿Qué aplicaciones EMR están disponibles cuando usar Outposts?
Todas las aplicaciones de la versión EMR 5.28.0 y superiores son compatibles. Consulte nuestras notas de la versión para ver la lista completa de aplicaciones EMR.
P: ¿Qué características de EMR no son compatibles con EMR en Outposts?
- Las instancias de EC2 Spot no están disponibles en AWS Outposts. Cuando crea un clúster, debe elegir las instancias EC2 a petición.
- Hay un subconjunto de tipos de instancias EC2 disponible en AWS Outposts. Para obtener una lista de tipos de instancias compatibles con EMR y Outposts, consulte nuestra documentación.
- Cuando agrega volúmenes de Amazon EBS a las instancias, solo se admite el tipo de almacenamiento Propósito general SSD (GP2) en AWS Outposts.
P: ¿Puedo usar clústeres de EMR en un Outpost para leer datos de mis clústeres Apache Hadoop existentes en las instalaciones?
Las cargas de trabajo que se ejecutan en EMR en un Outpost pueden leer y escribir datos en un almacenamiento HDFS existente, lo que le permite integrarse fácilmente con implementaciones Apache Hadoop existentes en las instalaciones. Esto le da la capacidad de aumentar sus necesidades de procesamiento de datos utilizando EMR sin necesidad de migrar los datos.
P: ¿Puedo elegir dónde almacenar mis datos?
Cuando se lanza un clúster EMR en un Outpost, se implementan todos los recursos de almacenamiento de datos y de informática en su Outpost. Los datos escritos de manera local en el clúster EMR se almacenan en volúmenes EBS locales en su Outpost. Las herramientas como Apache Hive, Apache Spark, Presto, y otras aplicaciones EMR puede configurarse para escribir datos a nivel local en un Outpost, en un sistema de archivo externo como una instalación HDFS existente, o en Amazon S3. Con el uso de EMR en Outposts, tiene completo control del almacenamiento de sus datos en Amazon S3 o en forma local en su Outpost.
P: ¿Alguna de las características de EMR debe actualizar datos en S3?
Cuando lanza un clúster EMR en un Outpost, tiene la opción de permitir el registro. Cuando se habilita el registro, se actualizan los registro del clúster en el bucket S3 que usted especifique. Estos registros se utilizan para simplificar clústeres depuradores después una vez terminados. Cuando se deshabilitan, no se actualizan registros en S3.
P: ¿Qué ocurre si mi Outpost ya no tiene capacidad?
Cuando lanza un clúster en un Outpost, EMR intenta lanzar la cantidad y el tipo de instancias EC2 a petición que usted ha solicitado. En caso de no haber capacidad disponible en el Outpost, EMR recibe un aviso de capacidad insuficiente. EMR reintenta durante un período, y en caso de no hallar capacidad disponible, el clúster no se inicia. El mismo proceso se aplica cuando se ajusta el tamaño de un clúster. Si no hay suficiente capacidad en el Outpost para los tipos de instancias solicitadas, EMR podrá escalar el clúster. Usted puede configurar fácilmente las alertas de Amazon CloudWatch para controlar el uso de su capacidad en Outposts y recibir alertas cuando la capacidad de la instancia sea inferior al umbral deseado.
P: ¿Qué ocurre si se interrumpe la conectividad de la red entre mi Outpost y AWS?
Si se pierde la conectividad de la red entre su Outpost y su región AWS, sus clústeres en Outposts se siguen ejecutando, pero habrá acciones que no podrá tomar hasta que se restablezca la conectividad. No puede crear nuevos clústeres ni realizar nuevas acciones en los clústeres existentes hasta que se restablezca la conectividad. En caso de fallas de la instancia, la instancia no se reemplaza de manera automática. Además, ciertas acciones, como añadir pasos a un clúster en ejecución, verificar el estado de ejecución de los pasos y enviar métricas y eventos de CloudWatch, se retrasan hasta que se restablezca la conectividad.
Recomendamos que proporcione una conectividad de red confiable y altamente disponible entre su Outpost y la región AWS. Si se pierde conectividad de red entre su Outpost y su región AWS durante más de algunas horas, los clústeres con la finalización de la protección habilitada siguen funcionando, y los clústeres con la finalización de la protección deshabilitada podrán terminarse. Si la conectividad de la red se verá afectada por mantenimiento de rutina, recomendamos habilitar de manera proactiva la finalización de la protección.
Uso de volúmenes de EBS
P: ¿Qué puedo hacer ahora que antes no era posible?
La mayoría de las instancias EC2 tiene una capacidad de almacenamiento fija asociada que se denomina "almacén de instancias". Ahora puede añadir volúmenes de EBS a las instancias de su clúster de Amazon EMR, lo que permite personalizar el almacenamiento en una instancia. La característica también permite ejecutar clústeres de Amazon EMR en familias de instancias que son solo de EBS, como M4 y C4.
P: ¿Qué beneficios tiene añadir volúmenes de EBS a una instancia que se ejecuta en Amazon EMR?
Añadir volúmenes de EBS a una instancia es ventajoso en los siguientes casos:
- Cuando los requisitos de procesamiento son tales que necesita una gran cantidad de almacenamiento HDFS (o local) que está disponible en una instancia actualmente. Con la compatibilidad para volúmenes de EBS, podrá personalizar la capacidad de almacenamiento en una instancia en relación con la capacidad informática que la instancia proporcione. Optimizar el almacenamiento en una instancia permite ahorrar costos.
- Cuando utiliza una familia de instancias de generación anterior (como las familias M1 y M2) y quiere mover la familia de instancias de última generación pero se ve limitado por el almacenamiento disponible por nodo en los tipos de instancias de la generación siguiente. Ahora puede usar cualquiera de los tipos de instancias de la nueva generación y añadir volúmenes de EBS para optimizar el almacenamiento. Los puntos de referencia internos indican que puede ahorrar costos y mejorar el rendimiento pasando de una familia de instancias de generación anterior (M1 o M2) a otra de nueva generación (M4, C4 y R3). El equipo de Amazon EMR recomienda que ejecute la aplicación para llegar a la conclusión correcta.
- Conviene usar o migrar a las familias de próxima generación M4 y C4 de solo EBS.
P: ¿Los datos pueden conservarse en un volumen de EBS después de terminar un clúster?
Actualmente, Amazon EMR elimina los volúmenes cuando el clúster termina. Si quiere conservar los datos cuando finalice el ciclo de vida de un clúster, puede usar Amazon S3 como almacén de datos.
P: ¿Qué tipo de volúmenes de EBS puedo conectar a una instancia?
Amazon EMR permite usar distintos tipos de volúmenes de EBS: SSD de uso general (GP2), magnéticos y de IOPS provisionadas (SSD).
P: ¿Qué sucede con los volúmenes de EBS cuando termino un clúster?
Amazon EMR elimina los volúmenes cuando el clúster de EMR termina.
P: ¿Puedo usar EBS con instancias que ya tengan un almacén de instancias?
Sí, puede añadir volúmenes de EBS a instancias que tengan un almacén de instancias.
P: ¿Puedo conectar un volumen de EBS a un clúster en ejecución?
No, actualmente solo se pueden añadir volúmenes de EBS al lanzar un clúster.
P: ¿Puedo realizar instantáneas de volúmenes desde un clúster?
La API de EBS permite realizar instantáneas de un clúster. Actualmente, no obstante, Amazon EMR no permite restaurar a partir de una instantánea.
P: ¿Puedo usar volúmenes de EBS cifrados?
Puede cifrar el dispositivo raíz EBS y almacenar volúmenes si su proveedor clave es AWS KMS. Para más información, vea Cifrado de disco local.
P: ¿Qué sucede cuando elimino un volumen conectado de un clúster en ejecución?
Eliminar un volumen conectado de un clúster en ejecución se trata como si fuera error de nodo. Amazon EMR reemplazará el nodo y el volumen de EBS por otros iguales.
Cargas de trabajo de EMR
P: ¿Qué es Apache Spark?
Apache SparkTM es un sistema de procesamiento distribuido de código abierto que se usa para cargas de trabajo de macrodatos. Utiliza el almacenamiento en caché de memoria y una ejecución de consulta optimizada para consultas rápidas de análisis de cualquier tamaño. Amazon EMR es el mejor lugar para implementar Apache Spark en la nube, debido a que combina la precisión de integración y prueba de las distribuciones comerciales Spark con la escala, la simplicidad y la rentabilidad de la nube. Le permite lanzar clústeres de Spark en minutos sin la necesidad de aprovisionar nodos, configurar clústeres y Spark ni ajustar clústeres. EMR presenta el tiempo de ejecución de Amazon EMR para Apache Spark, un entorno de tiempo de ejecución optimizado para el rendimiento de Apache Spark, activado de forma predeterminada en los clústeres de Amazon EMR. El tiempo de ejecución de Amazon EMR para Apache Spark puede ser hasta 3 veces más rápido que los clústeres sin el tiempo de ejecución de EMR y tiene una compatibilidad de API del 100 % con Apache Spark estándar. Obtenga más información sobre Spark y Spark en Amazon EMR.
P: ¿Qué es Presto?
Presto es un motor de consultas SQL distribuidas de código abierto, diseñado desde cero para hacer consultas de análisis rápidas en datos de cualquier tamaño. Con Amazon EMR, puede lanzar clústeres de Presto en minutos sin la necesidad de aprovisionar nodos, configurar clústeres y Presto ni ajustar clústeres. EMR permite aprovisionar una, cientos o miles de instancias informáticas en minutos. Presto tiene dos proyectos de la comunidad: PrestoDB y PrestoSQL. Amazon EMR admite ambos proyectos. Obtenga más información sobre Presto y Presto en Amazon EMR.
Uso de Hive
P: ¿Qué es Apache Hive?
Hive es un almacén de datos y un paquete de análisis de código abierto que se ejecuta sobre Hadoop. Hive funciona con un lenguaje basado en SQL denominado Hive QL que permite a los usuarios estructurar, resumir y consultar orígenes de datos almacenados en Amazon S3. Hive QL es más que el SQL estándar, ya que incluye un soporte excelente con funciones map/reduce y tipos de datos complejos y ampliables definidos por el usuario, como JSON y Thrift. Esta capacidad permite procesar orígenes de datos complejos y hasta desestructurados, como documentos de texto y archivos de registro. Hive permite extensiones de usuario mediante funciones definidas por los propios usuarios, escritas en Java e implementadas mediante almacenamiento en Amazon S3. Obtenga más información acerca de Apache Hive aquí.
P: ¿Qué puedo hacer con Hive en ejecución en Amazon EMR?
Si utiliza Hive con Amazon EMR, podrá implementar aplicaciones complejas de procesamiento de datos con un lenguaje conocido y parecido a SQL, así como con herramientas fáciles de utilizar disponibles con Amazon EMR. Con Amazon EMR, puede transformar aplicaciones de Hive en un almacén de datos de confianza para ejecutar tareas como análisis de datos, monitoreo y tareas de inteligencia empresarial.
P: ¿En qué se diferencia Hive de los sistemas RDBMS tradicionales?
Los sistemas de gestión de bases de datos relacionales (RDBMS) tradicionales ofrecen semántica de transacciones y propiedades ACID (atomicidad, coherencia, aislamiento y durabilidad). Asimismo, permiten la indexación y el almacenamiento en caché de tablas, de forma que es posible recuperar pequeños volúmenes de datos con gran rapidez. Se encargan de la actualización rápida de volúmenes pequeños de datos y de la implementación de limitaciones de integridad referencial. Normalmente, se ejecutan en una sola máquina de gran tamaño y no permiten ejecutar funciones map y reduce en la tabla, ni tampoco suelen permitir actuar con tipos de datos complejos definidos por los usuarios.
En cambio, Hive ejecuta consultas de tipo SQL con MapReduce. Por lo tanto, está optimizado para explorar tablas completas mientras se ejecuta en un clúster de máquinas y puede procesar volúmenes muy grandes de datos. Hive ofrece tablas con particiones, de manera que es posible analizar una partición de una tabla, en lugar de toda la tabla, si resulta adecuado para la consulta que se está ejecutando.
Los sistemas de RDBMS tradicionales son la mejor opción cuando se requiere semántica de transacciones e integridad referencial y cuando se realizan actualizaciones menores con frecuencia. Hive es ideal para la creación de informes sin conexión, la transformación y el análisis de grandes conjuntos de datos, por ejemplo, para analizar las secuencias de transmisiones de clics en sitios web de gran tamaño o en un grupo de sitios web.
Una de las prácticas habituales consiste en exportar datos de sistemas RDBMS a Amazon S3, donde es posible realizar análisis sin conexión mediante clústeres de Amazon EMR que ejecuten Hive.
P: ¿Cómo puedo comenzar a utilizar Hive en ejecución en Amazon EMR?
La mejor manera de empezar es leer la documentación escrita que se encuentra aquí.
P: ¿Hive incluye características nuevas específicas para Amazon EMR?
Sí. Para obtener más información, consulte nuestra documentación:
- Puede lanzar un clúster de EMR con diversos nodos maestros para proporcionar alta disponibilidad para Apache Hive. Amazon EMR automáticamente conmuta por error a un nodo principal de reserva si el nodo principal falla o si colapsan los procesos críticos como Resource Manager o Name Node. Esto significa que puede ejecutar Apache Hive en clústeres de EMR sin interrupciones.
- Amazon EMR le permite definir el escalado administrado por EMR para clústeres de Apache Hive para optimizar su uso de recursos. Con el escalado administrado por EMR, puede redimensionar el clúster de forma automática para el mejor rendimiento al menor coste posible. Con el escalado administrado por EMR puede especificar los límites informáticos máximos y mínimos para sus clústeres y Amazon EMR los redimensiona automáticamente para el mejor rendimiento y uso de recursos. El escalado administrado por EMR prueba continuamente métricas clave asociadas con las cargas de trabajo que se ejecutan en clústeres.
- Amazon EMR 6.0.0 añade compatibilidad para Hive LLAP, lo que proporciona una aceleración promedio del rendimiento dos veces mayor que EMR 5.29. Puede obtener más información aquí.
- Amazon EMR también habilita el rendimiento rápido en consultas complejas en Apache Hive. EMR usa Apache Tez de forma predeterminada, lo que es considerablemente más rápido que Apache MapReduce. Apache MapReduce usa diversas fases, por lo que una consulta compleja de Apache Hive se podría dividir en cuatro o cinco trabajos. Apache Tez está diseñado para consultas más complejas, por lo que el mismo trabajo de Apache Tez se podría ejecutar en un trabajo. Esto lo hace considerablemente más rápido que Apache MapReduce.
- Con Amazon EMR tiene la opción de dejar el metaalmacén como local o externalizarlo. EMR proporciona integración con el Catálogo de datos de AWS Glue, Amazon Aurora, Amazon RDS y AWS Lake Formation. Amazon EMR puede sacar información directamente de Glue o de Lake Formation para poblar el metaalmacén.
- Puede cargar particiones de tabla automáticamente desde Amazon S3. Antes, para importar una tabla con particiones, era necesario otro comando de modificación de tabla para cada una de las particiones de la tabla. Amazon EMR incluye ahora un tipo de comando nuevo para el lenguaje de Hive: "alter table recover partitions". Este comando facilita la importación simultánea de tablas en muchos clústeres sin necesidad de mantener un almacén de metadatos compartido. Utilice esta funcionalidad para leer a partir de tablas en las que los procesos externos están depositando datos, por ejemplo, archivos de registro.
- Puede ingresar datos de manera directa en Amazon S3. Cuando se escriben datos en tablas en Amazon S3, la versión de Hive instalada en Amazon EMR escribe directamente en Amazon S3 sin utilizar archivos temporales. Esto produce una mejora notable en el rendimiento, pero significa que HDFS y S3 tienen comportamientos distintos desde el punto de vista de Hive. No es posible leer ni escribir dentro de un mismo comando en la misma tabla si esta está ubicada en Amazon S3. Si desea actualizar una tabla ubicada en S3, cree una tabla temporal en el sistema local de archivos HDFS local del clúster, escriba los resultados en dicha tabla y, a continuación, cópielos en Amazon S3.
- Puede tener acceso a recursos ubicados en Amazon S3. La versión de Hive instalada en Amazon EMR permite hacer referencia a recursos como secuencias de comandos para operaciones personalizadas de asignación y reducción o a otras bibliotecas ubicadas en Amazon S3 directamente desde la secuencia de comandos de Hive (por ejemplo, mediante la incorporación del recurso jar s3://elasticmapreduce/samples/hive-ads/libs/jsonserde.jar).
P: ¿Qué tipos de clústeres de Hive se admiten?
Hive admite dos tipos de clústeres: interactivos y por lotes. En los flujos interactivos, un cliente puede iniciar un clúster y ejecutar secuencias de comandos de Hive de forma interactiva directamente en el nodo principal. Este modo suele utilizarse para el análisis de datos ad hoc y el desarrollo de aplicaciones. En los flujos por lotes, la secuencia de comandos de Hive se almacena en Amazon S3 y se incluye una referencia a él al principio del clúster. Normalmente, el modo por lotes se usa para ejecuciones que se repiten, como la generación de informes.
P: ¿Cómo puedo lanzar un clúster de Hive?
Tanto los clústeres por lotes como los interactivos pueden iniciarse desde la consola de administración de AWS, el cliente de línea de comandos de EMR o con las API. Consulte la sección sobre Hive de la guía de lanzamiento para obtener información más detallada sobre cómo lanzar un clúster de Hive.
P: ¿Cuándo debería utilizar Hive en lugar. de PIG?
Tanto Hive como PIG ofrecen lenguajes de procesamiento de datos de alto nivel y admiten tipos de datos complejos para operar en conjuntos de datos de gran tamaño. El lenguaje de Hive es una variante de SQL y, por tanto, es mucho más accesible para las personas que ya conocen SQL y las bases de datos relacionales. Hive admite tablas con particiones, lo que permite que los clústeres de Amazon EMR extraigan únicamente la partición de la tabla relativa a la consulta que se trata de ejecutar, en lugar de analizar la tabla completa. Tanto PIG como Hive tienen optimización de planes de consultas. PIG puede optimizar toda una secuencia de comandos, mientras que las consultas de Hive están optimizadas a nivel de comando.
En última instancia, elegir Hive o PIG dependerá de los requisitos concretos del dominio de la aplicación, así como de las preferencias de las personas encargadas de la implementación y de los que escriben las consultas.
P: ¿Qué versión de Hive admite Amazon EMR?
Para la última versión de Hive en Amazon EMR, consulte la documentación.
P: ¿Puedo escribir en una tabla desde dos clústeres simultáneamente?
Hive no permite la escritura simultánea en tablas. Deberá evitar escribir simultáneamente en la misma tabla o leer desde una tabla mientras está escribiendo en ella. Hive tiene un comportamiento no determinista cuando se trata de leer y escribir o de escribir y escribir simultáneamente.
P: ¿Puedo compartir datos entre clústeres?
Sí. Puede leer datos en Amazon S3 dentro de una secuencia de comandos de Hive mediante la incorporación de enunciados "create external table" al principio de la secuencia de comandos. Debe crear un comando de tabla para cada recurso externo al que obtenga acceso.
P: ¿Debería ejecutar un único clúster grande y compartirlo entre muchos usuarios o un gran número de clústeres más pequeños?
Amazon EMR ofrece una capacidad exclusiva que permite utilizar ambos métodos. Por una parte, un clúster de gran tamaño puede resultar más eficiente para procesar cargas de trabajo por lotes que se ejecuten periódicamente. Por otra parte, si necesita realizar consultas sobre la marcha, o si las cargas de trabajo varían con el tiempo, puede optar por crear varios clústeres ajustados para compartir los orígenes de datos de tareas concretas almacenadas en Amazon S3. Puede utilizar el escalado administrado de EMR para optimizar el uso de los recursos.
P: ¿Puedo obtener acceso a un script o a un recurso jar que esté en mi sistema de archivos local?
No. Debe cargar la secuencia de comandos o el recurso jar en Amazon S3 o en el nodo principal del clúster para poder crear referencias a él. Para cargarlos en Amazon S3, puede utilizar herramientas como s3cmd, jets3t o S3Organizer.
P: ¿Puedo ejecutar un clúster persistente que ejecute varias consultas de Hive?
Sí. El clúster se ejecuta con un modo de terminación manual para que no termine entre un paso de Hive y el siguiente. Para reducir el riesgo de pérdida de datos, recomendamos que todos los datos importantes se hagan persistentes periódicamente en Amazon S3. Se recomienda transferir periódicamente el trabajo a otro clúster para probar el proceso de recuperación de un error en el nodo principal.
P: ¿Pueden varios usuarios ejecutar pasos de Hive en el mismo origen de datos?
Sí. Las secuencias de comandos de Hive ejecutadas por varios usuarios en diferentes clústeres pueden contener comandos para crear tablas externas para la importación simultánea de orígenes de datos procedentes de Amazon S3.
P: ¿Pueden varios usuarios ejecutar consultas en el mismo clúster?
Sí. En el modo por lotes, los pasos se organizan en series. Varios usuarios pueden añadir pasos de Hive al mismo clúster, pero estos pasos se ejecutarán en serie. En el modo interactivo, varios usuarios pueden iniciar sesión en un mismo clúster y ejecutar comandos de Hive de forma simultánea.
P: ¿Los datos pueden compartirse entre varios usuarios de AWS?
Sí. Es posible compartir datos mediante el método estándar de Amazon S3 que se describe aquí.
P: ¿Hive admite el acceso desde JDBC?
Sí. Hive incluye un controlador JDBC que puede utilizarse para la ejecución mediante programación de comandos de Hive. Para iniciar un servicio JDBC en un clúster, es necesario pasar un parámetro opcional en el cliente de línea de comandos de Amazon EMR. También es necesario establecer un túnel SSH porque el grupo de seguridad no permite las conexiones externas.
P: ¿Qué procedimiento se utiliza para actualizar paquetes en las AMI de EMR?
En el primer arranque, las AMI de Amazon Linux para EMR se conectan a los repositorios de yum de las AMI de Amazon Linux para instalar actualizaciones de seguridad. Cuando usa una AMI personalizada, puede deshabilitar esta característica pero no lo recomendamos por razones de seguridad.
P: ¿Puedo actualizar mis propios paquetes en clústeres de EMR?
Sí. Puede utilizar acciones de arranque para instalar actualizaciones de paquetes en los clústeres.
P: ¿Puedo procesar datos de DynamoDB con Hive?
Sí. Solo hay que definir una tabla Hive externa basada en la tabla de DynamoDB. Luego se puede usar Hive para analizar los datos almacenados en DynamoDB y volver a cargar los resultados en DynamoDB o archivarlos en Amazon S3. Para obtener más información, consulte la Guía para desarrolladores.
Uso de Hudi
P: ¿Qué es Apache Hudi?
Apache Hudi es un marco de administración de datos de código abierto que se utiliza para simplificar el procesamiento de datos incrementales y el desarrollo de canalizaciones de datos. Apache Hudi le permite administrar datos a nivel de registro en Amazon S3 para simplificar la captura de datos de cambio (CDC) y la incorporación de datos de transmisión, y proporciona un marco para manejar casos de uso de privacidad de datos que requieren actualizaciones y eliminaciones de nivel de registro. Los conjuntos de datos administrados por Apache Hudi se almacenan en S3 con formatos de almacenamiento abiertos, y las integraciones con Presto, Apache Hive, Apache Spark y AWS Glue Data Catalog brindan acceso casi en tiempo real a datos actualizados mediante herramientas familiares.
P: ¿Cuándo debería usar Apache Hudi?
Apache Hudi lo ayuda con casos de uso que requieren administración de datos a nivel de registro en S3. Hay cinco casos de uso comunes que se benefician de estas habilidades:
- Cumplir con las leyes de privacidad de datos que requieren que las organizaciones eliminen los datos del usuario o actualicen las preferencias del usuario cuando elijan cambiar sus preferencias sobre cómo pueden utilizarse sus datos. Apache Hudi brinda la capacidad de llevar a cabo operaciones de inserción, actualización y eliminación a nivel de registro en sus datos almacenados en S3, con formatos de datos de código abierto como Apache Parquet y Apache Avro.
- Consumir flujos de datos en tiempo real y aplicar cambios en los registros de captura de datos de los sistemas empresariales. Muchas organizaciones requieren que los datos de las Almacenes de datos empresariales (EDW) y las Almacenes operacionales de datos (ODS) estén disponibles en Amazon S3 para que los motores SQL como Apache Hive y Presto puedan acceder a ellos para el procesamiento y análisis de datos. Apache Hudi simplifica la aplicación de registros de cambios y brinda a los usuarios acceso casi en tiempo real a los datos.
- Restablecer la llegada tardía o datos incorrectos. La llegada tardía o los datos incorrectos requieren que los datos se actualicen nuevamente y los conjuntos de datos existentes se actualicen para incorporar registros nuevos o actualizados. Apache Hudi le permite “insertar” registros en un conjunto de datos existente, basándose en el marco para insertar o actualizar registros en función de su presencia en el conjunto de datos.
- Realizar seguimiento de cambios en conjuntos de datos y brindar la capacidad de deshacer cambios. Con Apache Hudi, cada cambio en un conjunto de datos se rastrea como una confirmación y se puede revertir fácilmente. Esto permite encontrar cambios específicos en un conjunto de datos y “deshacerlos”.
- Simplificar la administración de archivos en S3. Para asegurarse de que los archivos de datos tengan un tamaño eficiente, los clientes deben crear soluciones personalizadas que supervisen y reescriban muchos archivos pequeños en menos archivos grandes. Con Apache Hudi, los archivos de datos en S3 son administrados y los usuarios simplemente pueden configurar un tamaño de archivo óptimo para almacenar sus datos mientras que Hudi combinará archivos para crear archivos de tamaño eficiente.
- Incorporar deltas a un conjunto de datos Hudi. Los conjuntos de datos Hudi se pueden obtener de forma gradual, lo que significa que puede obtener TODAS y SOLO las filas actualizadas y nuevas desde un instante especificado.
P: ¿Cómo creo un conjunto de datos de Apache Hudi?
Los conjuntos de datos de Apache Hudi se crean con Apache Spark. Crear un conjunto de datos es tan simple como escribir un DataFrame de Apache Spark. Los metadatos para los conjuntos de datos de Apache Hudi se pueden almacenar opcionalmente en AWS Glue Data Catalog o el metaalmacén de Hive para simplificar el descubrimiento de datos y para integrarse con Apache Hive y Presto.
P: ¿Cómo administra los conjuntos de datos Apache Hudi?
Cuando usted crea un conjunto de datos de Apache Hudi, puede elegir a qué tipo de patrón de acceso a datos debe optimizarse el conjunto de datos. Para los casos de uso de lectura intensiva, puede elegir la estrategia de administración de datos “Copiar en escritura” para optimizar las lecturas frecuentes del conjunto de datos. Esta estrategia organiza los datos con formatos de almacenamiento en columnas y combina los datos existentes y las nuevas actualizaciones cuando se escriben las actualizaciones. Para las cargas de trabajo con alto grado de escritura, Apache Hudi utiliza la estrategia de gestión de datos “Fusión en la lectura”, que organiza los datos mediante una combinación de formatos de almacenamiento en columnas y filas, en los que las actualizaciones se añaden a un archivo en formato de almacenamiento basado en filas, mientras que la fusión se realiza en el momento de la lectura para proporcionar los resultados actualizados.
P: ¿Cómo escribo en un conjunto de datos de Apache Hudi?
Los cambios en los conjuntos de datos de Apache Hudi se realizan con Apache Spark. Con Apache Spark, los conjuntos de datos Apache Hudi se operan con la API DataSource de Spark; esto permite leer y escribir datos. El DataFrame que contiene los datos recién añadidos o las actualizaciones de los datos existentes puede escribirse con el mismo API de DataSource. También puede usar la utilidad Hudi DeltaStreamer.
P: ¿Cómo leo desde un conjunto de datos de Apache Hudi?
Puedes leer datos mediante Apache Spark, Apache Hive, Presto, Amazon Redshift Spectrum o Amazon Athena. Cuando crea un conjunto de datos, tiene la opción de publicar los metadatos de ese conjunto de datos en AWS Glue Data Catalog o en el metaalmacén de Hive. Si elige publicar los metadatos en un meta almacén, su conjunto de datos se verá como una tabla común, y puede consultar esa tabla con Apache Hive y Presto.
P: ¿Qué consideraciones o limitaciones debo tener en cuenta cuando utilice Apache Hudi?
Para obtener una lista completa de consideraciones y limitaciones al utilizar Apache Hudi en Amazon EMR, consulte nuestra documentación de Amazon EMR.
P: ¿Cómo funcionan mis datos existentes con Apache Hudi?
Si usted tiene datos existentes que desea administrar ahora con Apache Hudi, puede convertir fácilmente sus datos de Apache Parquet a conjuntos de datos de Apache Hudi con una herramienta de importación provista con Apache Hudi en Amazon EMR, o puede utilizar Hudi DeltaStreamer o Apache Spark para reescribir sus datos existentes como un conjunto de datos de Apache Hudi.
Uso de Impala
P: ¿Qué es Impala?
Impala es una herramienta de código abierto del ecosistema Hadoop para la generación de consultas interactivas y ad hoc mediante una sintaxis SQL. En lugar de utilizar MapReduce, aprovecha un motor de procesamiento masivo en paralelo (MPP) como el que existe en los sistemas de administración de bases de datos relacionales (RDBMS) tradicionales. Con esta arquitectura, puede consultar sus datos en tablas HDFS o HBase con gran rapidez y aprovechar la capacidad de Hadoop para procesar distintos tipos de datos y proporcionar esquemas durante el tiempo de ejecución. Por ello, Impala es adecuado para análisis interactivos y de baja latencia. Además, Impala utiliza Hive Metastore para almacenar información sobre los datos de entrada, incluidos los nombres de particiones y tipos de datos. Además, Impala en Amazon EMR requiere que las AMI ejecuten Hadoop 2.x o superior. Haga clic aquí para obtener más información sobre Impala.
P: ¿Qué puedo hacer con Impala en ejecución en Amazon EMR?
Al igual que sucede al utilizar Hive con Amazon EMR, el uso de Impala con Amazon EMR puede implementar aplicaciones de procesamiento de datos avanzadas con sintaxis SQL. Sin embargo, Impala está diseñado para funcionar con más rapidez en determinados casos de uso (enumerados a continuación). Con Amazon EMR, puede utilizar Impala como un almacén de datos de confianza para ejecutar tareas como análisis de datos, monitoreo y tareas de inteligencia empresarial. A continuación se incluyen tres casos de uso:
- Utilice Impala en lugar de Hive en los clústeres de ejecución prolongada para realizar consultas ad hoc. Impala reduce las consultas interactivas a segundos, lo que la convierte en una excelente herramienta para una investigación rápida. Puede ejecutar Impala en el mismo clúster que los flujos de trabajo de MapReduce por lotes, utilizar Impala en un clúster de análisis de ejecución prolongada con Hive y Pig o crear un clúster específicamente adaptado para consultas Impala.
- Utilice Impala en lugar de Hive para trabajos de ETL por lotes en clústeres de Amazon EMR temporales. Impala es más rápido que Hive para muchas consultas, ya que proporciona un mejor rendimiento para estas cargas de trabajo. Al igual que Hive, Impala utiliza SQL, por lo que las consultas se pueden modificar fácilmente de Hive a Impala.
- Utilice Impala junto con una herramienta de inteligencia empresarial de terceros. Conecte un controlador ODBC o JDBC de cliente con el clúster para utilizar Impala como un motor para herramientas y paneles de visualización eficientes.
En Amazon EMR se pueden crear clústeres de Impala tanto por lotes como interactivos. Por ejemplo, puede tener un clúster de Amazon EMR de ejecución prolongada ejecutando Impala para consultas interactivas o ad hoc o utilizar clústeres Impala temporales para flujos de trabajo de ETL rápidos.
P: ¿En qué se diferencia Impala de los RDBMS tradicionales?
Los sistemas de bases de datos relacionales tradicionales proporcionan semánticas de transacción y propiedades de atomicidad, consistencia, aislamiento y durabilidad (ACID). También permiten que las tablas se indexen y se almacenen en caché para que se puedan recuperar con rapidez volúmenes pequeños de datos, proporcionar actualizaciones rápidas de volúmenes pequeños de datos y cumplir las restricciones de integridad referencial. Por lo general, se ejecutan en una única máquina grande y no ofrecen asistencia para actuar sobre complejos tipos de datos definidos por el usuario. Impala utiliza un sistema de consultas distribuidas similar a las que se encuentran en los RDBMS, pero consulta los datos almacenados en HDFS y utiliza Hive Metastore para almacenar información sobre los datos de entrada. Al igual que Hive, el esquema de una consulta se proporciona durante el tiempo de ejecución, lo que permite realizar cambios en el esquema con mayor facilidad. Además, Impala puede consultar una amplia variedad de tipos de datos complejos y ejecutar funciones definidas por el usuario. Sin embargo, como Impala procesa datos en memoria, es importante comprender las limitaciones de hardware del clúster y optimizar las consultas para un mejor rendimiento.
P: ¿En qué se diferencia Impala de Hive?
Impala ejecuta consultas SQL mediante un motor de procesamiento paralelo de forma masiva (MPP), mientras que Hive ejecuta consultas SQL con MapReduce. Impala evita la sobrecarga de Hive al crear trabajos de MapReduce, con lo que se obtienen tiempos de consulta más rápidos que Hive. Sin embargo, Impala utiliza importantes recursos de memoria y la memoria disponible del clúster limita la memoria que puede consumir una consulta. Hive no está limitado de la misma forma y puede procesar correctamente conjuntos de datos mayores con el mismo hardware. Por lo general, se debe utilizar Impala para consultas rápidas e interactivas, mientras que Hive es mejor para cargas de trabajo de ETL en conjuntos de datos grandes. Impala se creó para lograr velocidad y es excelente para la investigación ad hoc, pero requiere una importante cantidad de memoria para ejecutar consultas costosas o procesar conjuntos de datos muy grandes. Debido a estas limitaciones, se recomienda Hive para las cargas de trabajo en las que la velocidad no es tan crucial como la finalización. Haga clic aquí para consultar algunas comparaciones de rendimiento entre Impala y Hive.
P: ¿Puedo usar Hadoop 1?
No, Impala requiere Hadoop 2 y no se ejecutará en un clúster con una AMI que ejecute Hadoop 1.x.
P: ¿Qué tipos de instancias debo usar para mi clúster de Impala?
Para una mejor experiencia con Impala, le recomendamos utilizar instancias con optimización para memoria para el clúster. Sin embargo, hemos mostrado que hay mejoras de rendimiento con respecto a Hive al utilizar también tipos de instancias estándar. Sugerimos que lea la sección sobre pruebas de rendimiento y optimización de consultas en la guía para desarrolladores de Amazon EMR para calcular mejor los recursos de memoria que necesitará el clúster para su conjunto de datos y tipos de consultas. El tipo de compresión, las particiones y la consulta efectiva (número de uniones, tamaño del resultado, etc.) juegan un papel en la capacidad de memoria necesaria. Puede utilizar la instrucción EXPLAIN para calcular la memoria y otros recursos necesarios para una consulta Impala.
P: ¿Qué ocurre si me quedo sin memoria en una consulta?
Si se queda sin memoria, las consultas fallan y el demonio de Impala instalado en el nodo afectado se cierra. Amazon EMR reinicia entonces el demonio en ese nodo para que Impala esté preparado para ejecutar otra consulta. Los datos de HDFS del nodo permanecen disponibles, porque solo se cierra el demonio que se ejecuta en el nodo, en lugar de todo el nodo completo. Para un análisis ad hoc con Impala, el tiempo de consulta se puede medir generalmente en segundos. Por los tanto, si falla una consulta, puede detectar el problema rápidamente y enviar una nueva consulta en rápida sucesión.
P: ¿Impala admite las funciones definidas por el usuario?
Sí, Impala admite las funciones definidas por el usuario (UDF). Puede escribir UDF específicas de Impala en Java o en C . Además, puede modificar las UDF o funciones agregadas definidas por el usuario creadas para Hive para utilizarlas con Impala. Para obtener información sobre las UDF de Hive, haga clic aquí.
P: ¿Dónde se almacenan los datos para que los consulte Impala?
Impala consulta los datos en las tablas HDFS o HBase.
P: ¿Puedo ejecutar Impala y MapReduce al mismo tiempo en un clúster?
Sí, puede configurar un clúster multiinquilino con Impala y MapReduce. Sin embargo, debe asegurarse de asignar recursos (memoria, disco y CPU) en cada aplicación con YARN en Hadoop 2.x. Los recursos asignados deben depender de las necesidades de los trabajos que planea ejecutar en cada aplicación.
P: ¿Impala admite los controladores ODBC y JDBC?
Aunque puede usar controladores ODBC, Impala también es un excelente motor para herramientas de terceros conectadas mediante JDBC. Puede descargar e instalar el controlador JDBC del cliente de Impala en http://elasticmapreduce.s3.amazonaws.com/libs/impala/1.2.1/impala-jdbc-1.2.1.zip. Desde el equipo cliente en el que está instalada la herramienta de inteligencia de negocio, conecte el controlador JDBC al nodo principal de un clúster de Impala mediante SSH o una VPN en el puerto 21050. Para obtener más información, consulte la sección sobre cómo abrir un túnel SSH al nodo principal.
Uso de Pig
P: ¿Qué es Apache Pig?
Pig es un paquete de análisis de código abierto que se ejecuta sobre Hadoop. Pig funciona con un lenguaje de tipo SQL denominado Pig Latin que permite a los usuarios estructurar, resumir y consultar fuentes de datos almacenadas en Amazon S3. Como sucede con las operaciones de estilo SQL, Pig Latin también incluye un soporte excepcional para las funciones map/reduce y los tipos de datos complejos y ampliables que define el usuario. Esta capacidad permite procesar orígenes de datos complejos y hasta desestructurados, como documentos de texto y archivos de registro. Pig permite el uso de extensiones de usuario mediante funciones definidas por los propios usuarios, escritas en Java e implementadas mediante almacenamiento en Amazon S3.
P: ¿Qué puedo hacer con Pig en ejecución en Amazon EMR?
Puede utilizar Pig con Amazon EMR para implementar aplicaciones de procesamiento de datos complejos con un lenguaje de tipo SQL que le resultará familiar y con ayuda de las herramientas fáciles de usar que le ofrece Amazon EMR. Con Amazon EMR, puede transformar aplicaciones de Pig en un almacén de datos de confianza para ejecutar tareas como análisis de datos, monitoreo y tareas de inteligencia empresarial.
P: ¿Cómo comienzo a trabajar con Pig en ejecución en Amazon EMR?
La mejor manera de empezar es leer la documentación escrita que se encuentra aquí.
P: ¿Pig incluye características nuevas específicas para Amazon EMR?
Sí. Existen tres características nuevas gracias a las cuales Pig es incluso más eficiente cuando se utiliza con Amazon EMR:
a/ Acceso a varios sistemas de archivos. De forma predeterminada, un trabajo de Pig solo puede obtener acceso a un sistema de archivos remoto, ya sea un almacén de HDFS o un bucket de S3, para datos de entrada, de salida y temporales. EMR ha ampliado Pig de forma que todos los trabajos puedan obtener acceso a cuantos sistemas de archivos deseen. Una ventaja de esta característica es que los datos temporales internos de cada trabajo siempre se almacenan en el HDFS local, lo que permite mejorar el rendimiento.
b/ Carga de recursos desde S3. EMR ha ampliado Pig para que las secuencias de comandos y los JAR personalizados puedan proceder del sistema de archivos de S3, por ejemplo, "REGISTER s3:///my-bucket/piggybank.jar".
c/ Función Piggybank adicional para procesamiento de String y DateTime.
P: ¿Qué tipos de clústeres de Pig se admiten?
Pig admite dos tipos de clústeres: interactivos y por lotes. En un clúster interactivo, un cliente puede iniciar un clúster y ejecutar secuencias de comandos de Pig de forma interactiva directamente en el nodo principal. Este modo suele utilizarse para el análisis de datos ad hoc y el desarrollo de aplicaciones. En el modo de lotes, la secuencia de comandos de Pig se almacena en Amazon S3 y se incluye una referencia a ella al principio del clúster. Normalmente, el modo por lotes se usa para ejecuciones que se repiten, como la generación de informes.
P: ¿Cómo puedo lanzar un clúster de Pig?
Tanto los clústeres por lotes como los interactivos pueden iniciarse desde la consola de administración de AWS, el cliente de línea de comandos de EMR o con las API.
P: ¿Qué versión de Pig admite Amazon EMR?
Amazon EMR admite varias versiones de Pig.
P: ¿Puedo escribir en un bucket de S3 desde dos clústeres simultáneamente?
Sí, puede escribir en un mismo bucket desde dos clústeres al mismo tiempo.
P: ¿Puedo compartir datos de entrada en S3 entre clústeres?
Sí, puede leer los mismos datos de S3 desde dos clústeres simultáneamente.
P: ¿Los datos pueden compartirse entre varios usuarios de AWS?
Sí. Es posible compartir datos mediante el método estándar de Amazon S3 que se describe aquí: http://docs.amazonwebservices.com/AmazonS3/latest/index.html?S3_ACLs.html
P: ¿Debería ejecutar un único clúster grande y compartirlo entre muchos usuarios o un gran número de clústeres más pequeños?
Amazon EMR ofrece una capacidad exclusiva que permite utilizar ambos métodos. Por una parte, un clúster de gran tamaño puede resultar más eficiente para procesar cargas de trabajo por lotes que se ejecuten periódicamente. Por otra parte, si necesita realizar consultas sobre la marcha, o si las cargas de trabajo varían con el tiempo, puede optar por crear varios clústeres ajustados para compartir los orígenes de datos de tareas concretas almacenadas en Amazon S3.
P: ¿Puedo obtener acceso a un script o a un recurso jar que esté en mi sistema de archivos local?
No. Debe cargar la secuencia de comandos o el recurso jar en Amazon S3 o en el nodo principal del clúster para poder crear referencias a él. Para cargarlos en Amazon S3, puede utilizar herramientas como s3cmd, jets3t o S3Organizer.
P: ¿Puedo ejecutar un clúster persistente que ejecute varias consultas de Pig?
Sí. El clúster se ejecuta con terminación manual para que no termine entre un paso de Pig y el siguiente. Para reducir el riesgo de pérdida de datos, recomendamos que todos los datos importantes se hagan persistentes periódicamente en Amazon S3. Se recomienda transferir periódicamente el trabajo a otro clúster para probar el proceso de recuperación de un error del nodo principal.
P: ¿Pig admite el acceso desde JDBC?
No. Pig no admite el acceso desde JDBC.
Uso de HBase
P: ¿Qué es Apache HBase?
HBase es una base de datos distribuida, no relacional y de código abierto inspirada en BigTable, de Google. Se desarrolló como parte del proyecto Hadoop de Apache Software Foundation y se ejecuta sobre Hadoop Distributed File System (HDFS) para ofrecer capacidades estilo BigTable para Hadoop. HBase ofrece una manera eficiente y a prueba de errores para almacenar grandes volúmenes de datos dispersos con almacenamiento y compresión basados en columnas. Además, HBase ofrece una búsqueda rápida de datos, porque los datos se almacenan en la memoria, en lugar de en el disco. HBase se ha optimizado para las operaciones de escritura secuencial y es muy eficiente para las eliminaciones, actualizaciones e inserciones por lotes. HBase trabaja sin problemas con Hadoop al compartir su sistema de archivos y servir como entrada y salida directa para los trabajos de Hadoop. HBase también se integra con Apache Hive, lo que permite la realización de consultas de tipo SQL en tablas de HBase, las uniones con tablas basadas en Hive y la compatibilidad con Java Database Connectivity (JDBC). Obtengamás información acerca de Apache HBase aquí.
P: ¿HBase ofrece nuevas características específicas para Amazon EMR?
Con Amazon EMR, puede usar HBase en Amazon S3 para almacenar el directorio raíz de HBase de un clúster y los metadatos directamente en Amazon S3 y crear réplicas de lectura e instantáneas. Consulte nuestra documentación para obtener más información.
P: ¿Qué versiones de HBase se admiten en Amazon EMR?
Puede ver las últimas versiones de HBase admitidas en Amazon EMR aquí.
Conector de Kinesis
P: ¿Qué habilita el conector EMR para Kinesis?
El conector habilita EMR para leer y consultar directamente datos desde las transmisiones de Kinesis. Ahora puede realizar el procesamiento por lotes de las transmisiones de Kinesis con las herramientas de ecosistema existentes de Hadoop, como Hive, Pig, MapReduce, Hadoop Streaming y Cascading.
P: ¿Qué novedades habilita el conector EMR para Kinesis?
La lectura y el procesamiento de datos desde una transmisión de Kinesis exigirían la escritura, la implementación y el mantenimiento de aplicaciones de procesamiento de transmisiones independientes, un proceso que implica tiempo y esfuerzo. No obstante, con este conector, puede comenzar a leer y analizar una transmisión de Kinesis mediante la escritura de una secuencia de comandos simple de Hive o Pig. Esto significa que puede analizar las transmisiones de Kinesis con SQL. Es evidente que también se podrían utilizar las herramientas del ecosistema de Hadoop. No necesita desarrollar ni mantener un conjunto nuevo de aplicaciones de procesamiento.
P: ¿A quién le resultaría útil esta funcionalidad?
Los siguientes tipos de usuarios encontrarán útil esta integración:
- Los usuarios de Hadoop interesados en utilizar el amplio conjunto de herramientas del ecosistema de Hadoop para analizar las transmisiones de Kinesis.
- Los usuarios de Kinesis que buscan una forma sencilla de aplicar el procesamiento de transmisiones y ETL de datos de Kinesis.
- Los analistas empresariales y los profesionales de TI a quienes le gustaría realizar análisis ad-hoc de datos en transmisiones de Kinesis mediante herramientas conocidas como SQL (a través de Hive) o lenguajes de secuencias de comandos como Pig.
P: ¿Cuáles son algunos casos de uso para esta integración?
A continuación se presentan casos de uso representativos habilitados por esta integración:
- Análisis de registros de streaming: puede analizar registros web de streaming para generar una lista de los 10 tipos de error principales cada pocos minutos por región, navegador y dominios de acceso.
- Flujos de trabajo de procesamiento de datos complejos: puede unirse a las transmisiones de Kinesis con los datos almacenados en S3, las tablas de DynamoDB y HDFS. Puede escribir consultas que se unan a datos de consulta de clics desde Kinesis con información de campañas publicitarias almacenada en una tabla de DynamoDB para identificar las categorías de anuncios más eficaces que se muestran en sitios web particulares.
- Consultas ad-hoc: puede cargar periódicamente los datos desde Kinesis en HDFS y habilitarlos como una tabla de Impala local para realizar consultas rápidas, interactivas y analíticas.
P: ¿Qué versión de la AMI de EMR necesito para utilizar el conector?
Es necesario utilizar la versión 3.0.4 de la AMI de EMR o posterior.
P: ¿Este conector es una herramienta independiente?
No, se trata de un componente integrado de la distribución de Hadoop de Amazon y se encuentra en las versiones 3.0.4 y posteriores de la AMI de EMR. El cliente solo tiene que acelerar un clúster con la versión 3.0.4 o posterior de la AMI para comenzar a utilizar esta característica.
P: ¿Qué formato de datos es necesario para permitir que EMR lea a partir de una transmisión de Kinesis?
La integración entre Kinesis y EMR no está sujeta a un formato de datos específico. Puede leer datos en cualquier formato. Los registros individuales de Kinesis se presentan a Hadoop como registros estándar que se pueden leer con la utilización del marco de trabajo de Hadoop MapReduce. Los marcos de trabajo individuales como Hive, Pig y Cascading tienen componentes integrados que facilitan la serialización y la deserialización, lo que permite que los desarrolladores puedan consultar datos con muchos formatos sin tener que implementar un código personalizado. Por ejemplo, en Hive, los usuarios pueden leer datos de archivos JSON, XML y SEQ si especifican el Hive SerDe correcto cuando definen una tabla. Pig y Cascading tienen componentes similares llamados Loadfunc/Evalfunc y Tap, respectivamente. Los usuarios de Hadoop pueden aprovechar el amplio ecosistema de sus adaptadores sin tener que escribir un código con formato específico. También puede implementar formatos de deserialización personalizados para leer datos específicos de dominios en cualquiera de estas herramientas.
P: ¿Cómo puedo analizar una transmisión de Kinesis con Hive en EMR?
Cree una tabla que haga referencia a una transmisión de Kinesis. A continuación, podrá analizar la tabla como cualquier otra tabla de Hive. Consulte nuestros tutoriales para obtener más detalles.
P: Con Hive, ¿cómo puedo crear consultas que combinen los datos de transmisión de Kinesis con otro origen de datos?
Primero, cree una tabla que haga referencia a una transmisión de Kinesis. Después de haber creado una tabla de Hive, puede combinarla con tablas mapeadas a otras fuentes de datos como Amazon S3, Amazon DynamoDB y HDFS. De este modo, se consigue la asociación eficaz de los datos de la transmisión de Kinesis con otros orígenes de datos.
P: ¿Esta integración solo está disponible para Hive?
No, puede utilizar Hive, Pig, MapReduce, Hadoop Streaming y Cascading.
P: ¿Cómo puedo configurar los trabajos programados para ejecutarlos en una transmisión de Kinesis?
El conector de entrada de Kinesis de EMR ofrece características que lo ayudan a configurar y administrar trabajos periódicos programados en motores de programación tradicionales como Cron. Por ejemplo, puede desarrollar una secuencia de comandos de Hive que se ejecute cada N minutos. En los parámetros de configuración de un trabajo, puede especificar un nombre lógico para el trabajo. El nombre lógico es una etiqueta que informará al conector de entrada de Kinesis de EMR que las instancias individuales del trabajo son miembros del mismo programa periódico. El nombre lógico permite que el proceso se beneficie de las iteraciones, que se explican a continuación.
Dado que MapReduce es un marco de trabajo de procesamiento por lotes, para analizar una transmisión de Kinesis con EMR, la transmisión constante se divide en lotes. Cada lote es una iteración. A cada iteración se le asigna a un número, a partir de 0. Cada límite de iteración se define por un número secuencial de inicio y un número secuencial de fin. Luego EMR procesa secuencialmente las iteraciones.
Si falla un intento, el conector de entrada de Kinesis de EMR volverá a probar la iteración en el nombre lógico a partir del número secuencial de inicio de la iteración. Esta funcionalidad garantiza que los intentos sucesivos con la misma iteración tengan precisamente los mismos registros de entrada de la transmisión de Kinesis que los intentos anteriores. Esto garantiza el procesamiento idempotente (coherente) de una transmisión de Kinesis.
Puede especificar nombres lógicos e iteraciones como parámetros de tiempo de ejecución de las herramientas de Hadoop correspondientes. Por ejemplo, en la sección sobre ejecución de consultas con puntos de comprobación del tutorial, la muestra de código presenta una consulta de Hive programada que designa un nombre lógico para la consulta e incrementa la iteración con cada ejecución sucesiva del trabajo.
Asimismo, en los tutoriales se ofrece una secuencia de comandos de programación CRON de muestra.
P: ¿Dónde se almacenan los metadatos para los nombres lógicos y las iteraciones?
Los metadatos que permiten que el conector de entrada de Kinesis de EMR funcione en flujos de trabajo periódicos programados están almacenados en Amazon DynamoDB. Debe aprovisionar una tabla de Amazon DynamoDB y especificarla como un parámetro de entrada para el trabajo de Hadoop. Es importante que configure IOPS apropiadas para la tabla a fin de habilitar esta integración. Consulte el tutorial de introducción para obtener más información sobre la configuración de la tabla de Amazon DynamoDB.
P: ¿Qué sucede cuando falla un proceso de iteración?
Los identificadores de las iteraciones son valores facilitados por el usuario que se mapean a un límite específico (números secuenciales de inicio y fin) de una transmisión de Kinesis. Los datos correspondientes a estos límites se cargan en la fase de asignación del trabajo de MapReduce. Esta fase la administra el marco de trabajo y se volverá a ejecutar automáticamente (tres veces de forma predeterminada) si se produce un error en el trabajo. Si fallan todos los reintentos, aún podrá volver a intentar el procesamiento a partir del último límite de datos correcto o de límites de datos anteriores. Este comportamiento se controla mediante el suministro del parámetro kinesis.checkpoint.iteration.no durante el procesamiento. Consulte el tutorial de introducción para obtener más información sobre cómo se configura este valor para diferentes herramientas del ecosistema de Hadoop.
P: ¿Puedo ejecutar varias consultas en la misma iteración?
Sí, puede especificar una iteración ejecutada previamente mediante la configuración del parámetro kinesis.checkpoint.iteration.no en los procesamientos posteriores. La implementación garantiza que las ejecuciones sucesivas con la misma iteración tendrán exactamente los mismos registros de entrada de la transmisión de Kinesis que las ejecuciones anteriores.
P: ¿Qué sucede si los registros de una iteración vencen desde la transmisión de Kinesis?
En el caso de que el número secuencial de inicio o el número secuencial de fin de una iteración pertenezcan a los registros que han vencido desde la transmisión de Kinesis, el trabajo de Hadoop fallará. Necesitará utilizar un nombre lógico diferente para procesar los datos desde el inicio de la transmisión de Kinesis.
P: ¿Puedo transmitir datos de EMR a la transmisión de Kinesis?
No. El conector de Kinesis de EMR actualmente no admite volver a escribir datos en la transmisión de Kinesis.
P: ¿El conector de entrada de Hadoop de EMR para Kinesis permite el procesamiento constante de la transmisión?
El marco de trabajo Hadoop MapReduce es un sistema de procesamiento por lotes. Como tal, no admite las consultas continuas. No obstante, existe un conjunto emergente de marcos de trabajo del ecosistema Hadoop, como Twitter Storm y Spark Streaming, que permiten a los desarrolladores compilar aplicaciones para el procesamiento continuo de transmisiones. Un conector de Storm para Kinesis se encuentra disponible en GitHub aquí y puede encontrar un tutorial donde se explica cómo configurar Spark Streaming en EMR y ejecutar consultas continuamente aquí.
Asimismo, los desarrolladores pueden utilizar la biblioteca de cliente de Kinesis para desarrollar aplicaciones de procesamiento de transmisiones en tiempo real. Puede encontrar más información sobre el desarrollo de aplicaciones Kinesis en la documentación sobre Kinesis aquí.
P: ¿Puedo especificar la credencial de acceso para leer una transmisión de Kinesis administrada en otra cuenta de AWS?
Sí. Puede leer transmisiones desde otra cuenta de AWS si especifica las credenciales de acceso apropiadas de la cuenta que posee la transmisión de Kinesis. De forma predeterminada, el conector de Kinesis utiliza las credenciales de acceso facilitadas por el usuario al crear el clúster. Puede sobrescribir estas credenciales para obtener acceso a las transmisiones desde otras cuentas de AWS mediante la configuración de los parámetros kinesis.accessKey y kinesis.secretKey. Los siguientes ejemplos muestran cómo definir los parámetros kinesis.accessKey y kinesis.secretKey en Hive y Pig.
Muestra de código para Hive:
...
STORED BY
"com.amazon.emr.kinesis.hive.KinesisStorageHandler"
TBLPROPERTIES(
"kinesis.accessKey"="AwsAccessKey",
"kinesis.secretKey"="AwsSecretKey",
);
Muestra de código para Pig:
…
raw_logs = LOAD 'AccessLogStream' USING com.amazon.emr.kinesis.pig.Kin
esisStreamLoader('kinesis.accessKey=AwsAccessKey', 'kinesis.secretKey=AwsSecretKey'
) AS (line:chararray);
P: ¿Puedo ejecutar varias consultas paralelas en una única transmisión de Kinesis? ¿Repercute en el rendimiento?
Sí, un cliente puede ejecutar varias consultas paralelas en la misma transmisión con nombres lógicos independientes para cada consulta. Sin embargo, las lecturas a partir de una partición dentro de una transmisión de Kinesis están sujetas a un límite de velocidad de 2 MB/s. De esta manera, si existen N consultas en paralelo en ejecución en la misma transmisión, cada una obtendría aproximadamente (2/N) MB/s de velocidad de salida por partición en la transmisión. Esto puede ralentizar el procesamiento y, en algunos casos, causar también el error de las consultas.
P: ¿Puedo acoplar y analizar varias transmisiones de Kinesis en EMR?
Sí, por ejemplo en Hive, puede crear dos tablas que estén asignadas a dos transmisiones de Kinesis distintas y crear asociaciones entre ellas.
P: ¿El conector de Kinesis de EMR administra los eventos de escalado de Kinesis, como los eventos de fusión y división?
Sí. La implementación administra los eventos de división y fusión. El conector de Kinesis enlaza particiones de Kinesis individuales (la unidad lógica de escala dentro de una transmisión de Kinesis) con las tareas de asignación de Hadoop MapReduce. Cada fragmento exclusivo existente dentro de una transmisión en el periodo lógico de una iteración resultará en exactamente una tarea de asignación. Si se da el caso de un evento de división o fusión de un fragmento, Kinesis aprovisionará nuevos ID de fragmento exclusivos. Como resultado, el marco de trabajo de MapReduce aprovisionará más tareas de asignación para leer desde Kinesis. Todo esto es transparente para el usuario.
P: ¿Qué sucede si existen períodos de "silencio" en mi transmisión?
La implementación le permite configurar un parámetro llamado kinesis.nodata.timeout. Por ejemplo, considere un escenario en el que kinesis.nodata.timeout se define en 2 minutos y desea ejecutar una consulta de Hive cada 10 minutos. Asimismo, considere que algunos datos se han escrito en la transmisión desde la última iteración (hace 10 minutos). No obstante, actualmente no están llegando nuevos registros, es decir, que hay un silencio en la transmisión. En este caso, al lanzar la iteración actual de la consulta, el conector de Kinesis observaría que no está llegando ningún registro nuevo. El conector sondeará la transmisión durante 2 minutos y, si no llega ningún registro durante dicho intervalo, se detendrá y procesará solo los registros que ya se hayan leído en el lote actual de la transmisión. No obstante, si comienzan a llegar nuevos registros antes de que el intervalo kinesis.nodata.timeout termine, el conector esperará por un intervalo adicional correspondiente a un parámetro denominado kinesis.iteration.timeout. Consulte los tutoriales para obtener información sobre cómo definir estos parámetros.
P: ¿Cómo puedo depurar una consulta que continúa fallando en cada iteración?
En el caso de que un procesamiento falle, puede utilizar las mismas herramientas que utiliza actualmente para depurar los trabajos de Hadoop. Se incluye la consola web de Amazon EMR, que ayuda a identificar registros de errores y a obtener acceso a ellos. Puede encontrar más información sobre la depuración de un trabajo de EMR aquí.
P: ¿Qué sucede si especifico una tabla de DynamoDB a la que no tengo acceso?
El trabajo fallaría y la excepción se mostraría en los registros de errores del trabajo.
P: ¿Qué sucede si el trabajo no falla pero sí el punto de comprobación para DynamoDB?
El trabajo fallaría y la excepción se mostraría en los registros de errores del trabajo.
P: ¿Cómo puedo maximizar el nivel de procesamiento de lectura de una transmisión de Kinesis a EMR?
El rendimiento de la transmisión de Kinesis aumenta con el tamaño de instancia utilizado y el tamaño de registro de la transmisión de Kinesis. Para esta característica, recomendamos utilizar m1.xlarge y superiores para los nodos principales y centrales.
Acuerdo de nivel de servicio
P: ¿Cuál es el acuerdo de nivel de servicio de Amazon EMR?
Consulte nuestro Acuerdo de nivel de servicios.
P: ¿Qué proporciona el acuerdo de nivel de servicios de Amazon EMR?
P: ¿Qué ocurre si no se cumple el Compromiso de servicio?
En caso de que cualquiera de los servicios de Amazon EMR no cumpla el Compromiso de servicio, tendrá derecho a recibir un Crédito de servicio.P: ¿Cómo sé si reúno los requisitos para recibir un crédito para servicio? ¿Cómo lo reclamo?
Para recibir créditos para servicios, deberá presentar una reclamación mediante la apertura de un caso en AWS Support Center. Para conocer los requisitos y el formato de las reclamaciones, consulte https://aws.amazon.com/emr/sla/Más información sobre los precios de Amazon EMR