P: ¿Qué es Amazon EMR?

Amazon EMR es un servicio web que permite a empresas, investigadores, analistas de datos y desarrolladores procesar enormes volúmenes de datos de forma rentable. Utiliza un marco de trabajo hospedado en Hadoop en la infraestructura de escala web de Amazon Elastic Compute Cloud (Amazon EC2) y Amazon Simple Storage Service (Amazon S3).

P: ¿Qué puedo hacer con Amazon EMR?

Puede utilizar Amazon EMR para aprovisionar al instante la capacidad exacta que necesite para realizar tareas de uso intensivo de datos en aplicaciones como indexación web, extracción de datos, análisis de logs, aprendizaje automático, análisis financiero, simulación científica e investigación bioinformática. Amazon EMR le permite centrarse en el procesamiento o análisis de datos sin tener que preocuparse de dedicar tiempo a preparar, administrar o ajustar clústeres de Hadoop, ni de la capacidad de cómputo de la que disponen.

Amazon EMR es idóneo para problemas que necesitan el procesamiento rápido y eficiente de grandes volúmenes de datos. Esta interfaz de servicio web permite construir flujos de trabajo para procesamiento y monitorizar programáticamente el progreso de los clústeres en ejecución. También puede utilizar la interfaz web sencilla de la consola de administración de AWS para lanzar los clústeres y supervisar las operaciones informáticas de procesamiento intenso de los clústeres de instancias de Amazon EC2.

P: ¿Quién puede utilizar Amazon EMR?

Cualquier persona que necesite realizar de un modo sencillo potentes análisis de datos puede utilizar Amazon EMR. No necesita tener experiencia de desarrollo de software para experimentar con varias aplicaciones de muestra disponibles en la Guía para desarrolladores o en el blog de big data de AWS.

P: ¿Qué puedo hacer con Amazon EMR que antes no era posible?

Amazon EMR reduce significativamente la complejidad de las tareas de configuración, administración y ajuste de los clústeres de Hadoop o de la capacidad de cómputo sobre la que se asientan, que son tareas que requieren mucho tiempo. Puede poner en marcha en un instante clústeres de gran tamaño en Hadoop para comenzar a procesar en minutos, y no en horas o días. Cuando termine el procesamiento del clúster, a menos que especifique lo contrario, finalizará automáticamente para que no tenga que pagar por los recursos que ya no utiliza.

Puede utilizar este servicio para realizar con rapidez tareas donde se usan muchos datos en aplicaciones como indexación web, extracción de datos, análisis de archivos de log, aprendizaje automático, análisis financiero, simulación científica e investigación bioinformática.

Los desarrolladores de software también pueden desarrollar y ejecutar aplicaciones propias más sofisticadas y, así, añadir funcionalidades como programación, flujos de trabajo y monitorización entre otras.

P: ¿Qué motor de procesamiento de datos hay detrás de Amazon EMR?

Amazon EMR utiliza Apache Hadoop como motor de procesamiento distribuido de datos. Hadoop es un marco de software de código abierto de Java que admite aplicaciones distribuidas donde se usan muchos datos y que se ejecutan en grandes clústeres de hardware estándar. Hadoop implementa un modelo de programación denominado “MapReduce” en el que los datos se dividen en muchos fragmentos de trabajo pequeños, cada uno de los cuales puede ejecutarse en cualquier nodo del clúster. Este marco, utilizado ampliamente por desarrolladores, empresas y startups, ha demostrado ser una plataforma de software de confianza para procesar hasta petabytes de datos en clústeres de miles de máquinas estándar.

P: ¿Qué es un clúster de Amazon EMR?

Anteriormente, Amazon EMR utilizaba el término “agrupación” para hacer referencia a un clúster de Amazon EMR (y a todos los pasos de procesamiento asignados a dicho clúster). Cada clúster tiene un identificador exclusivo que comienza por “j-”.

P: ¿Qué es un paso de clúster?

Un paso de clúster es una unidad de procesamiento definida por el usuario, y se mapea más o menos 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 una salida ordenada por 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 la salida 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 aprovisiona, inicia y configura instancias EC2.
PROCESO DE ARRANQUE – Las acciones del proceso 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 con 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 haya finalizado antes de que pudiera ejecutarse.
FAILED – El paso ha fallado durante su ejecución.

Volver arriba >>


P: ¿Cómo puedo obtener acceso a Amazon EMR?

Puede obtener acceso a Amazon EMR desde la consola de administración de AWS, las herramientas de línea de comandos, los SDK o la API de EMR.

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 rellenar 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 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 logs 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 el API RunJobFlow o por medio del comando ‘create’ en las herramientas de línea de comandos.

P: ¿Cómo puedo comenzar a utilizar Amazon EMR?

Para inscribirse en Amazon EMR, haga clic en el botón "Inscribirse ahora" de la página de detalles de Amazon EMR http://aws.amazon.com/elasticmapreduce. Es necesario estar inscrito en Amazon EC2 y Amazon S3 para poder obtener acceso a Amazon EMR. Si no se ha inscrito aún en estos servicios, el sistema se lo solicitará durante el proceso de inscripción en Amazon EMR. Después de inscribirse, consulte la Documentación de Amazon EMR, que incluye nuestra Guía de introducción, el mejor lugar para empezar a utilizar el servicio.

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?

Sí. Puede crear un clúster nuevo en cualquier momento, aunque ya esté ejecutando uno o varios clústeres.

P: ¿Cuántos clústeres puedo ejecutar simultáneamente?

Puede iniciar tantos clústeres como desee. 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 de Amazon EC2 con su caso de uso y valoraremos el aumento de instancias solicitado. Si ya ha aumentado su límite de Amazon EC2, el nuevo límite se aplicará a los clústeres de Amazon EMR de los que ya dispone.

Volver arriba >>


P: ¿Dónde puedo encontrar muestras de código?

Consulte el código de muestra en estos artículos y tutoriales.

P: ¿Cómo desarrollo una aplicación de procesamiento de datos?

Puede desarrollar un trabajo de procesamiento de datos en su equipo de escritorio, por ejemplo, mediante el uso de complementos de Eclipse o NetBeans, como IBM MapReduce Tools para Eclipse (http://www.alphaworks.ibm.com/tech/mapreducetools). Estas herramientas facilitan el desarrollo y la depuración de trabajos de MapReduce, y permiten someterlos a pruebas localmente en su máquina. Además, también podrá desarrollar el clúster directamente en Amazon EMR con la utilización de una o varias 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 programáticamente y monitorizar el progreso de clústeres en ejecución, crear otras funcionalidades personalizadas relativas a clústeres (por ejemplo, secuencias con varios pasos de procesamiento, programación de tareas, flujos de trabajo o monitorización), así como construir 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 monitorizar 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 pases nuevos al final de la secuencia del paso actual. Puede que le interese utilizar esta API para implementar lógica condicional en su clúster o para depurar.

P: ¿Puedo ejecutar un clúster persistente?

Sí. Los clústeres de Amazon EMR que empiezan por el marcador –alive continuarán hasta que terminen de forma explícita. Esto permite a los clientes añadir pasos a un clúster bajo demanda. Puede que desee utilizar esto para depurar la aplicación sin tener que esperar siempre al inicio del clúster. También puede utilizar un clúster persistente para ejecutar un clúster de almacén de datos que lleve mucho tiempo en ejecución. Esto se puede combinar con paquetes de análisis y almacén de datos que se ejecuten por encima de Hadoop como, por ejemplo, Hive y Pig.

P: ¿Puedo recibir notificaciones cuando acabe el clúster?

Puede inscribirse en Amazon SNS y disponer de un clúster publicado en el 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 comando, el SDK o las API para obtener un estado en el clúster.

P: ¿Qué lenguajes de programación admite Amazon EMR?

Puede utilizar Java para implementar recursos jar personalizados de Hadoop. Si lo prefiere, puede utilizar otros lenguajes como Perl, Python, Ruby, C++, PHP y R mediante Hadoop Streaming. Consulte la Guía para desarrolladores para obtener instrucciones sobre cómo utilizar Hadoop Streaming.

P: ¿Qué versiones de sistemas operativos admite Amazon EMR?

Por ahora, Amazon EMR admite Debian/Squeeze en los modos de 32 y 64 bits.

P: ¿Puedo ver la interfaz de usuario de Hadoop mientras se está ejecutando el clúster?

Sí. Consulte la sección sobre la interfaz de usuario de Hadoop en la Guía para desarrolladores para ver cómo obtener acceso a la interfaz de usuario de Hadoop.

P: ¿Amazon EMR admite paquetes de software de terceros?

Sí. La forma recomendada de instalar paquetes de software de terceros en su clúster consiste en utilizar acciones de arranque. Otra opción es empaquetar las bibliotecas de terceros directamente en el ejecutable del mapeador o el reductor. También puede cargar ejecutables de compilación estática por medio del mecanismo de caché distribuida de Hadoop.

P: ¿Qué versiones de Hadoop admite Amazon EMR?

Para las versiones más recientes admitidas por Amazon EMR, consulte la documentación.

P: ¿Puedo usar un motor de procesamiento de datos que no sea Hadoop?

Sí. Algunos clientes de EMR utilizan Spark y Shark (almacenamiento de datos y MapReduce en memoria) como motor de procesamiento. Consulte este artículo para obtener instrucciones sobre cómo hacer esto.

P: ¿Amazon ofrece mejoras de Hadoop a la comunidad de código abierto?

Sí. Amazon EMR es un miembro activo de la comunidad de código abierto y aporta muchos arreglos al código fuente de Hadoop.

P: ¿Amazon EMR actualiza la versión de Hadoop que admite?

Amazon EMR actualiza periódicamente la versión de Hadoop que soporta a medida que la comunidad publica nuevas versiones de Hadoop. Amazon EMR puede optar por omitir determinadas versiones de Hadoop.

P: ¿Cuánto tarda Amazon EMR en eliminar la compatibilidad con versiones anteriores de Hadoop?

El servicio de Amazon EMR retira su soporte para versiones anteriores de Hadoop varios meses después de que estas queden obsoletas. No obstante, las API de Amazon EMR son compatibles con versiones anteriores, de forma que si construye herramientas utilizando dichas API, estas funcionarán aunque Amazon EMR actualice la versión de Hadoop que utilice.

Volver arriba >>


P: ¿Cómo puedo depurar un clúster?

En primer lugar, debe seleccionar el clúster que desee depurar. Seguidamente, haga clic en el botón “Debug” para obtener acceso a la ventana de depuración de clústeres de la consola de administración de AWS. De esta forma, podrá seguir el progreso e identificar los problemas existentes en pasos, trabajos, tareas o intentos de tareas en los clústeres. Si lo prefiere, también puede utilizar SSH directamente en instancias de Amazon Elastic Compute Cloud (Amazon EC2) que estén ejecutando su clúster y utilizar su programa favorito de depuración de clústeres para solucionar los problemas que surjan en el clúster.

P: ¿Qué es la herramienta de depuración de clústeres?

La herramienta de depuración de clústeres es el componente de la consola de administración de AWS donde puede seguir el progreso e identificar los problemas que surjan en pasos, trabajos, tareas o intentos de tareas de los clústeres. Para obtener acceso a la herramienta de depuración de clústeres, seleccione en primer lugar el clúster que desee depurar y, a continuación, haga clic en el botón “Debug”.

P: ¿Cómo puedo activar la depuración de un clúster?

Para habilitar la depuración, es necesario definir el indicador “Enable Debugging” al crear un clúster en la consola de administración de AWS. Otra opción es pasar los indicadores --enable-debugging and --log-uri en el cliente de línea de comandos al crear un clúster.

P: ¿Dónde puedo encontrar instrucciones para utilizar la ventana de depuración de clústeres?

Consulte la sección relativa a la consola de administración de AWS en la Guía para desarrolladores, donde encontrará instrucciones para obtener acceso a la ventana de depuración de clústeres y sobre cómo utilizarla.

P: ¿Qué tipos de clústeres puedo depurar con la ventana de depuración de clústeres?

Puede depurar todos los tipos de clústeres que Amazon EMR admite en la actualidad, incluidos los clústeres de streaming, Hive, Pig y jar personalizados.

P: ¿Por qué tengo que inscribirme en Amazon SimpleDB para poder utilizar la depuración de clústeres?

Amazon EMR almacena información de estado de los trabajos, las tareas y los intentos de tareas de Hadoop que se realicen en su cuenta en Amazon SimpleDB. Puede inscribirse en Amazon SimpleDB aquí.

P: ¿Puedo utilizar la característica de depuración de clústeres sin suscribirme a Amazon SimpleDB?

Podrá examinar pasos de clústeres y logs de pasos, pero no podrá examinar trabajos, tareas ni intentos de tareas de Hadoop si no está suscrito a Amazon SimpleDB.

P: ¿Puedo eliminar datos históricos del clúster desde Amazon SimpleDB?

Sí. Puede eliminar los dominios de Amazon SimpleDB que Amazon EMR haya creado por usted. Consulte las instrucciones en la documentación de Amazon SimpleDB.

Volver arriba >>


P: ¿Cómo llevo mis datos a Amazon S3?

Puede utilizar las API de Amazon S3 para cargar datos en Amazon S3. Otra opción consiste en utilizar los numerosos clientes comerciales o de código abierto para cargar fácilmente los datos en Amazon S3.

P: ¿Cómo puedo obtener logs de los clústeres completados?

Los logs del sistema de Hadoop, junto con los logs de usuarios, se colocan en el bucket de Amazon S3 que especifique al crear un clúster.

P: ¿Los logs se comprimen?

No. Por ahora, Amazon EMR no comprime los logs cuando los traslada a Amazon S3.

P: ¿Puedo cargar mis datos desde Internet o desde otra ubicación que no sea Amazon S3?

Sí. La aplicación de Hadoop puede cargar los datos de cualquier ubicación de Internet o de otros servicios de AWS. Tenga en cuenta que, si carga datos desde Internet, se aplicarán gastos en concepto de ancho de banda de EC2. Amazon EMR también ofrece acceso basado en Hive a los datos de DynamoDB.

Volver arriba >>


P: ¿Puede Amazon EMR calcular aproximadamente cuánto se tardará en procesar los 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?

Como sucede con el resto de AWS, se paga únicamente por lo que se utiliza. No existen tarifas mínimas, compromisos iniciales ni contratos a largo plazo. Los precios de Amazon EMR se añaden a los precios normales de Amazon EC2 y Amazon S3.

Para obtener información sobre los precios de Amazon EMR, visite la página de precios de EMR.

Los cargos de Amazon EC2, Amazon S3 y Amazon SimpleDB se facturan por separado. Los precios de Amazon EMR son por segundo consumido para cada tipo de instancia (con un mínimo de un minuto), desde el momento en el que se solicita el clúster hasta que se finaliza. Para obtener información detallada sobre los tipos de instancia de Amazon EC2 o los precios de instancias de subasta de Amazon EC2, de instancias reservadas de Amazon EC2, de Amazon S3 o de Amazon SimpleDB, siga estos enlaces:

Tipos de instancias de Amazon EC2

Precios de las instancias reservadas de Amazon EC2

Precios de instancias de subasta de Amazon EC2

Precios de Amazon S3

Precios de Amazon SimpleDB

P: ¿Cuándo comienza y finaliza la facturación del uso que haga de un clúster de Amazon EMR?

La facturación comienza cuando Amazon EMR comienza a ejecutar el clúster. Solamente se le cobran los recursos que realmente consume. Por ejemplo, supongamos que ha lanzado 100 instancias pequeñas de Amazon EC2 para un clúster de Amazon EMR, donde el costo de Amazon EMR es un incremento de 0,015 USD por hora. Las instancias de Amazon EC2 comenzarán a arrancar inmediatamente, aunque no necesariamente al mismo tiempo. Amazon EMR realiza el seguimiento de cuándo se inicia cada instancia y la incorpora después al clúster para que pueda aceptar tareas de procesamiento.

En un plazo de 10 minutos desde la solicitud de lanzamiento, Amazon EMR inicia el clúster (si están disponibles todas las instancias) o incorpora tantas instancias como sea posible. Una vez pasado el plazo de 10 minutos, Amazon EMR comenzará a procesar (y a facturarle) el clúster en el momento en que estén disponibles el 90% de las instancias que solicite. A medida que se incorpore el 10% restante de las instancias solicitadas, Amazon EMR comenzará a facturarle también por estos servicios.

Por lo tanto, en el ejemplo anterior, si la totalidad de las 100 instancias solicitadas están disponibles 10 minutos después de realizar una solicitud de lanzamiento, se le facturará 1,50 USD por hora, (100 * 0,015 USD) durante todo el tiempo que sea necesario para completar el clúster. Si solamente 90 de las instancias solicitadas estaban disponibles transcurridos los primeros 10 minutos, se le facturará 1,35 USD por hora (90 * 0,015 USD) durante todo el tiempo que se utilizara esa cantidad de instancias para ejecutar el clúster. Cuando se incorporen las 10 instancias restantes, se le facturará 1,50 USD por hora (100 * 0,015 USD) durante todo el tiempo que se tarde en completar el resto del clúster.

Cada clúster se ejecutará hasta que se produzca una de las siguientes situaciones: se finaliza el clúster con una llamada al API TerminateJobFlows (o con otra herramienta equivalente), el clúster se apaga automáticamente o el clúster se finaliza por error de software o hardware.

P: ¿Dónde puedo seguir el uso que hago de Amazon EMR, Amazon EC2 y Amazon S3?

Puede realizar un seguimiento del uso en la consola de administración de costos 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 computación normalizada. La siguiente tabla muestra el factor de normalización que se utiliza para calcular las horas de instancia normalizadas para los diferentes tamaños de instancias:

Tamaño de la instancia Factor de normalización
Pequeño 1
Mediano 2
Grande 4
Xlarge 8
2xlarge 16
4xlarge 32
8xlarge 64

Por ejemplo, si ejecuta un clúster r3.8xlarge de 10 nodos durante una hora, la cantidad total de horas de instancia 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 costos y facturación para ver información sobre el uso facturable de Amazon EMR. Tenga en cuenta que hemos modificado el factor de normalización recientemente para que refleje de manera precisa la magnitud de las instancias. Este factor de normalización no afecta a la factura mensual.

P: ¿Amazon EMR admite instancias bajo demanda, de subasta y reservadas de Amazon EC2?

Sí. Amazon EMR soporta sin problemas tanto instancias bajo demanda como instancias de subasta 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 subasta 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.

Volver arriba >>


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 esclavos. 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 esclavos 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 utilizando 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.

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 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 compresión 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 al API de EMR realizadas en mi cuenta, por motivos de auditoría de seguridad o de conformidad?

Sí. AWS CloudTrail es un servicio web que registra las llamadas a la API de AWS de la cuenta y entrega archivos de log. El historial de llamadas a las API de AWS creado por CloudTrail permite realizar un análisis de seguridad, un seguimiento de los cambios en los recursos y auditorías sobre la conformidad. Obtenga más información sobre CloudTrail en la página de detalles de AWS CloudTrail y habilítelo a través de la Consola de administración de AWS en CloudTrail.

Volver arriba >>


P: ¿Cómo utiliza Amazon EMR las zonas de disponibilidad?

Amazon EMR lanza todos los nodos de un clúster de equipos determinado en la misma zona de disponibilidad de Amazon EC2. La ejecución de un clúster en la misma zona mejora el desempeño de los flujos de trabajo porque proporciona una tasa de acceso a datos más elevada. 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.

P: ¿En qué regiones está disponible Amazon EMR?

Para ver la lista de las regiones donde se admite Amazon EMR AWS, consulte la tabla de regiones de AWS, que contiene información sobre la infraestructura global de AWS.

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 de la UE en un clúster que se utiliza en la región de EE.UU. y viceversa?

Sí, sí puede. Si transfiere datos de una región a otra, se le facturará el consumo de bando de ancha. 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 de AWS GovCloud (EE.UU.)?

La región de AWS GovCloud (EE.UU.) se ha diseñado para las agencias gubernamentales y los clientes de EE.UU. Cumple los requisitos ITAR de EE.UU. En GovCloud, EMR no soporta las instancias de subasta o la función de activación de depuración. EMR Management Console aún no está disponible en GovCloud.

Volver arriba >>


P: ¿Cómo utiliza Amazon EMR Amazon EC2 y Amazon S3?

Los clientes cargan en Amazon S3 sus datos de entrada y una aplicación de procesamiento de datos. A continuación, Amazon EMR lanza una serie de instancias de Amazon EC2, según especifique el cliente. El servicio comienza a ejecutar el clúster al tiempo que extrae los datos de entrada de Amazon S3 mediante el protocolo S3N en las instancias de Amazon EC2 que se hayan lanzado. Una vez finalizado el clúster, Amazon EMR transfiere los datos de salida a Amazon S3, donde los clientes podrán recuperarlos o utilizarlos como entrada para otro clúster.

P: ¿Cómo se realiza el procesamiento informático en Amazon EMR?

Amazon EMR utiliza el motor de procesamiento de datos de Hadoop para realizar procesamiento informático implementado en el modelo de programación de MapReduce. El cliente implementa su algoritmo en términos de funciones map() y reduce(). El servicio inicia la cantidad de instancias de Amazon EC2 especificadas por el cliente (una instancia principal y varias esclavas). Amazon EMR ejecuta el software de Hadoop en estas instancias. El nodo principal divide los datos de entrada en bloques y distribuye su procesamiento al nodo esclavo. Luego, cada nodo esclavo 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. Estos procesos también se ejecutan en los nodos esclavos. Por último, la salida de las tareas del reductor se recopilan en archivos. Un único “clúster” puede incluir una secuencia de estos pasos de MapReduce.

P: ¿Qué nivel de confianza ofrece Amazon EMR?

Amazon EMR administra un clúster de instancias de informática de Amazon EC2 por medio de la infraestructura de red y los centros de datos probados y de alta disponibilidad de Amazon. Amazon EMR utiliza el software de Hadoop, una solución probada en la industria y tolerante a errores, como motor de procesamiento de datos. Hadoop divide los datos en varios subconjuntos y asigna cada uno a varias instancias de Amazon EC2. Por lo tanto, si una instancia de Amazon EC2 no logra procesar un subconjunto de datos, se pueden utilizar los resultados de otra instancia de Amazon EC2.

P: ¿Cuánto tarda un clúster en ponerse en marcha y procesar los datos de entrada?

Amazon EMR comienza a aprovisionar recursos de instancias de Amazon EC2 bajo demanda casi inmediatamente. Si no hay instancias disponibles, Amazon EMR seguirá intentando aprovisionar recursos para el clúster hasta que lo consiga o hasta que se cancele la solicitud. El aprovisionamiento de instancias utiliza un método de esfuerzo razonable y depende del número de instancias solicitadas, de la hora de creación del clúster y del número total de solicitudes enviadas al sistema. Una vez aprovisionados los recursos, el procesamiento suele comenzar en menos de 15 minutos.

Si desea garantizar capacidad para los clústeres en el momento en que la necesite, puede pagar una tarifa única de instancias reservadas de Amazon EC2 para reservar capacidad de instancia en la nube a una tarifa por horas con descuento. Al igual que sucede con las instancias bajo demanda, los clientes solo pagan los cargos por uso del tiempo durante el que se ejecutan las instancias. De este modo, las instancias reservadas permiten a los negocios que conocen sus requisitos de instancias disfrutar de la elasticidad y la flexibilidad de las instancias bajo demanda, así como reducir aún más sus costos de uso predecible.

P: ¿Qué tipos de instancia EC2 de Amazon admite Amazon EMR?

Amazon EMR soporta 12 tipos de instancias EC2, como instancias estándar, de CPU de alto desempeño, de memoria alta, de informática en clúster, de uso elevado de E/S y con gran capacidad de almacenamiento. Las instancias estándar presentan ratios de memoria/CPU idóneas para la mayoría de las aplicaciones de uso general. Las instancias de uso elevado de la CPU tienen, en proporción, más recursos de CPU que memoria (RAM) y resultan idóneas para aplicaciones que hacen un uso intensivo de la infraestructura informática. Las instancias de memoria alta ofrecen una gran capacidad de memoria para aplicaciones de alto rendimiento. Las instancias de informática en clúster ofrecen, en proporción, un alto desempeño de la CPU con mayor desempeño de red y son adecuadas para aplicaciones de informática de alto desempeño (HPC) y otras aplicaciones de red exigentes. Las instancias con gran capacidad de almacenamiento ofrecen 48 TB de almacenamiento en 24 discos y resultan ideales para aplicaciones que requieren un acceso secuencial a conjuntos de datos de gran tamaño, como el almacenamiento de datos y el procesamiento de logs. Consulte la página de precios de EMR para obtener más detalles sobre los tipos de instancias disponibles y los precios por región.

P: ¿Cómo puedo seleccionar el tipo de instancia de Amazon EC2 correcto?

Cuando elija tipos de instancia, debería tener en cuenta las características de la aplicación respecto a la utilización de recursos y seleccionar la familia de instancias óptima. Una de las ventajas de Amazon EMR con Amazon EC2 es que se le factura únicamente lo que consume, de forma que resulta cómodo y económico probar el desempeño de los clústeres con diferentes tipos y cantidades de instancias. Una manera eficaz de determinar el tipo de instancia más adecuado es lanzar clústeres pequeños y medir los clústeres para utilizarlos como referencia.

P: ¿Cómo selecciono el número correcto de instancias para un clúster?

El número de instancias que debe utilizar en el clúster depende de la aplicación y debe basarse en la cantidad de recursos necesarios para almacenar y procesar los datos y en la cantidad de tiempo aceptable para que se complete el trabajo. Como norma general, le recomendamos que reserve un 60% del espacio de disco para almacenar los datos que procese y que deje el resto para la salida inmediata. Por tanto, dada la triplicación de la replicación en HDFS, si desea procesar 5 TB en instancias m1.xlarge que tengan 1 690 GB de espacio en disco, recomendamos que el clúster contenga al menos (5 TB x 3)/(1 690 GB x 0,6) = 15 nodos principales m1.xlarge. Puede que desee aumentar este número si su trabajo genera una cantidad elevada de datos intermedios o tiene muchos requisitos de E/S. Puede que también desee incluir nodos de tarea adicionales para mejorar el desempeño del procesamiento. Consulte Tipos de instancia de Amazon EC2 para obtener más detalles sobre el almacenamiento de instancias locales para la configuración de cada tipo de instancia.

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, la cantidad de datos de entrada o 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?

No. Si deja de funcionar el nodo principal, se terminará el clúster y será necesario volver a ejecutar el trabajo. Amazon EMR no soporta actualmente la conmutación por error automática de los nodos principales ni la recuperación de estado de los mismos. Si fallara el nodo principal, la consola de administración de AWS le informa de que el nodo principal ha terminado, lo que indica que deberá iniciar un nuevo clúster. Los clientes pueden establecer puntos de comprobación en los clústeres para guardar los datos intermedios (los que se crean en mitad de un clúster que todavía no se ha reducido) en Amazon S3. En caso de error, esto permitirá reanudar el clúster desde el último punto de control.

P: Si un nodo esclavo deja de funcionar en un clúster, ¿Amazon EMR puede recuperarlo?

Sí. Amazon EMR es tolerante a errores de nodos esclavos y continúa la ejecución de tareas si deja de funcionar un nodo esclavo. 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 esclavo, deberá ejecutarlo primero en el nodo principal y luego en el nodo esclavo.

P: ¿Puedo utilizar instancias de Microsoft Windows con Amazon EMR?

Por ahora, Amazon EMR admite Debian/Lenny en modos de 32 y 64 bits. Siempre escuchamos las opiniones de nuestros clientes, por lo que añadiremos más funciones en el futuro para ayudarles a resolver los problemas de tratamiento de datos empresariales.

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 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 escrito el script, necesitará cargarlo en Amazon S3 e incluir una referencia a su ubicación cuando inicie un clúster. Para aprender a usar las acciones de arranque, consulte la “Guía para desarrolladores”: http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/.

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 esta situación, 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 esclavos de un clúster en ejecución?

Sí. Existen dos tipos de nodos esclavos: (1) nodos principales, que hospedan datos persistentes mediante el 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 API, el SDK para Java o el cliente de línea de comando. Consulte la sección relativa al cambio de tamaño de los clústeres en ejecución de la guía para desarrolladores para obtener más detalles sobre de cómo modificar el tamaño de un clúster que se encuentre en ejecución.

P: ¿Cuándo conviene utilizar nodos principales en lugar de nodos de tareas?

Los nodos principales hospedan 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.

P: ¿Por qué me podría interesar modificar el número de nodos esclavos en un clúster en ejecución?

Existen varias situaciones en las que puede resultar interesante modificar el número de nodos esclavos 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 desempeño del clúster. Si un clúster se compone de diversas fases con 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.

P: ¿Puedo modificar automáticamente el número de nodos esclavos 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 subordinados 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 indicador --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 Configuring User Permissions de la Guía para desarrolladores de EMR.

Volver arriba >>


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 finalizados o de instancias de Amazon EC2 finalizadas 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 soporta 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 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 EC2 de Amazon 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 concede 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í. Después, 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
    • Key = instance-group role ; Value = [CORE or TASK] 
  • aws:elasticmapreduce:job-flow-id=j-12345678
    • Key = job-flow-id ; Value = [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 añadir y eliminar las etiquetas de los clústeres de Amazon EMR desde la consola de Amazon EMR, la CLI o el API para garantizar que el clúster y las instancias de Amazon EC2 asociadas cuentan con las etiquetas correctas.

Volver arriba >>

P: ¿Qué puedo hacer ahora que antes no era posible?

La mayoría de las instancias EC2 tienen 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:

  1. 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 de cómputo que la instancia proporcione. Optimizar el almacenamiento en una instancia permite ahorrar costos.
  2. Cuando utiliza una familia de instancias de antigua generación (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 desempeño pasando de una familia de instancias de antigua generación (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 sacar la conclusión correcta.
  3. Conviene usar o migrar a las familias de siguiente 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 finaliza el ciclo de vida de un clúster, puede usar Amazon S3 como datastore.

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é pasa 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 snapshots de volúmenes desde un clúster?

La API de EBS permite realizar snapshots de un clúster. Actualmente, no obstante, Amazon EMR no permite restaurar a partir de una snapshot.

P: ¿Puedo usar volúmenes de EBS cifrados?

No, no se admiten volúmenes cifrados en el lanzamiento actual.

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.

Volver arriba >>


P: ¿Qué es Apache Hive?

Hive es un paquete de análisis y almacén de datos de código abierto que se ejecuta por encima de Hadoop. Hive funciona con un lenguaje basado en SQL denominado Hive QL que permite a los usuarios estructurar, resumir y consultar fuentes de datos almacenadas 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 fuentes de datos complejas y hasta desestructuradas, como documentos de texto y archivos de log. Hive permite 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 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, monitorización 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ñas cantidades de datos con gran rapidez. Se encargan de la actualización rápida de cantidades pequeñas 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 utilizando MapReduce. Por lo tanto, está optimizado para explorar tablas completas mientras se ejecuta en un clúster de máquinas y puede procesar cantidades muy grandes de datos. Hive ofrece tablas con particiones, de manera que es posible explorar una partición de una tabla, en lugar de explorar 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 de pequeño tamaño con frecuencia. Hive es ideal para la creación de informes fuera de línea, la transformación y el análisis de grandes conjuntos de datos, por ejemplo, para analizar las secuencias de clicstreams 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 fuera de línea 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 forma de comenzar es repasar nuestro tutorial escrito o en vídeo, que encontrará aquí: http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2862

P: ¿Incluye Hive características nuevas específicas para Amazon EMR?

Sí. Existen cuatro características nuevas gracias a las cuales Hive es incluso más potente cuando se utiliza con Amazon EMR:

a) La posibilidad de 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 desde tablas en las que están depositando datos los procesos externos, por ejemplo, archivos de log.

b) La capacidad de especificar un almacén de metadatos externo a las instancias. De forma predeterminada, el almacén de metadatos donde Hive guarda su información de esquemas está ubicado en el nodo principal y deja de existir cuando termina el clúster. Esta característica permite utilizar otra ubicación del almacén de metadatos, por ejemplo, una instancia de MySQL que ya esté ejecutándose en EC2.

c) La escritura directa de datos 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 mejor notable del desempeño, pero significa que HDFS y S3 tienen comportamientos distintos desde el punto de vista de Hive. No es posible leer y 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.

d) El acceso a recursos ubicados en Amazon S3. La versión de Hive instalada en Amazon EMR permite hacer referencia a recursos como scripts para operaciones personalizadas de map y reduce o a otras bibliotecas ubicadas en Amazon S3 directamente desde el script de Hive (por ejemplo, añadiendo el recurso jar s3://elasticmapreduce/samples/hive-ads/libs/jsonserde.jar).

P: ¿Qué tipos de clústeres de Hive se admiten?

Hive soporta dos tipos de clústeres: interactivos y por lotes. En los flujos interactivos, un cliente puede iniciar un clúster y ejecutar scripts 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, el script 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 Using Hive de la guía para desarrolladores 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 soporta 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 explorar la tabla completa. Tanto PIG como Hive tienen optimización de planes de consultas. PIG puede optimizar todo un script, 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?

Amazon EMR admite varias versiones de Hive, incluida la versión 0.11.0.

P: ¿Puedo escribir en una tabla desde dos clústeres simultáneamente?

No. 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 un script de Hive añadiendo comandos “create external table” al principio del script. 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 las fuentes 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 el script 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 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. Es una buena práctica transferir periódicamente el trabajo a otro clúster para que su proceso se pueda recuperar de un error del nodo principal.

P: ¿Pueden varios usuarios ejecutar pasos de Hive en la misma fuente de datos?

Sí. Los scripts de Hive ejecutados por varios usuarios en diferentes clústeres pueden contener comandos para crear tablas externas para la importación simultánea de fuentes 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 clústeres 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í: http://docs.amazonwebservices.com/AmazonS3/latest/index.html?S3_ACLs.html

P: ¿Hive admite el acceso desde JDBC?

Sí. Hive incluye un controlador JDBC que puede utilizarse para la ejecución programática 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?

Ejecutamos un conjunto seleccionado de paquetes de Debian/stable, incluidos los parches de seguridad. Actualizamos un paquete cada vez que se actualice en Debian/stable. El paquete “r-recommended” de nuestra imagen está actualizado con Debian/stable (http://packages.debian.org/search?keywords=r-recommended).

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.

Volver arriba >>


 

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 de procesar distintos tipos de datos y proporcionar esquemas durante el tiempo de ejecución. De este modo, Impala resulta perfecto para análisis interactivos y de latencia baja. Además, Impala utiliza el metaalmacén Hive para almacenar información sobre los datos de entrada, incluyendo los nombres de particiones y tipos de datos. También, 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 avanzadas aplicaciones de procesamiento de datos con sintaxis SQL. Sin embargo, Impala está diseñada para que funcione 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, monitorización 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 larga 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 larga 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 desempeño 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 potentes herramientas y paneles de visualización.

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 larga 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?

Loa 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 pequeñas cantidades de datos, proporcionar actualizaciones rápidas de pequeñas cantidades 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 el metaalmacén de Hive 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 desempeño.

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 grandes conjuntos de datos. Impala se ha creado por velocidad y es excelente para la investigación ad hoc, pero requiere una importante cantidad de memoria para ejecutar costosas consultas 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 algunos bancos de pruebas de desempeño entre Impala y Hive.

P: ¿Puedo usar Hadoop 1?

No, Impala requiere 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 desempeño con respecto a Hive al utilizar también tipos de instancias estándar. Sugerimos que lea la sección Performance Testing and Query Optimization en la guía Amazon EMR Developer’s Guide 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.) desempeñan un papel en la memoria requerida. 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 soporta 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) a cada aplicación con YARN en Hadoop 2.x. Los recursos asignados deben depender de las necesidades de los trabajos que piensa 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 Open an SSH Tunnel to the Master Node.

Volver arriba >>


P: ¿Qué es Apache Pig?

Pig es un paquete de análisis de código abierto que se ejecuta por encima de 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 fuentes de datos complejas y hasta desestructuradas, como documentos de texto y archivos de log. Pig permite 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, monitorización y tareas de inteligencia empresarial.

P: ¿Cómo comienzo a trabajar con Pig en ejecución en Amazon EMR?

La mejor forma de comenzar es repasar nuestro tutorial escrito o en vídeo, que encontrará aquí: http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2735&categoryID=269

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 potente 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 pueden obtener acceso a cuantos sistemas de archivos deseen. Una ventaja de esto es que los datos temporales internos de cada trabajo siempre se almacenan en el HDFS local, lo que permite mejorar el desempeño.

b) Carga de recursos desde S3. EMR ha ampliado Pig para que los scripts y 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. Encontrará la documentación relacionada en http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2730.

P: ¿Qué tipos de clústeres de Pig se admiten?

Pig soporta dos tipos de clústeres: interactivos y por lotes. En un clúster interactivo, un cliente puede iniciar un clúster y ejecutar scripts 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, el script de Pig 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 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 comando de EMR o las API.

P: ¿Qué versión de Pig admite Amazon EMR?

Amazon EMR admite varias versiones de Pig, incluida la 0.11.1.

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 las fuentes 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 el script 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.

Volver arriba >>


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 la Apache Software Foundation y se ejecuta sobre el Hadoop Distributed File System (HDFS) para ofrecer capacidades estilo BigTable para Hadoop. HBase ofrece una forma eficiente y a prueba de fallos para almacenar grandes cantidades de datos dispersos con almacenamiento y compresión basada 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 las consultas de tipo SQL en tablas de HBase, las uniones con tablas basadas en Hive y el soporte para Java Database Connectivity (JDBC).

P: ¿HBase ofrece nuevas características específicas para Amazon EMR?

Con Amazon EMR puede hacer backups de HBase en Amazon S3 (completas o incrementales, manuales o automáticas) y realizar restablecimientos a partir de backups creadas anteriormente. Más información sobre HBase y EMR.

P: ¿Qué versiones de HBase se admiten en Amazon EMR?

Amazon EMR admite HBase 0.94.7 y HBase 0.92.0. Para utilizar HBase 0.94.7, debe especificar la versión 3.0.0 de la AMI. En cambio, si utiliza la CLI, debe usar la versión 2013-10-07 o posterior.

Volver arriba >>


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. Ello requiere tiempo y esfuerzo. No obstante, con este conector, puede comenzar a leer y analizar una transmisión de Kinesis escribiendo un script 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 scripts 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 logs de streaming: puede analizar logs 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 unen 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 posterior 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 de Kinesis de EMR no es 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 ayudan con la serialización y deserialización, de manera que se facilita a los desarrolladores consultar datos con muchos formatos sin tener que implementar código personalizado. Por ejemplo, en Hive, los usuarios pueden leer datos de archivos JSON, XML y SEQ al especificar Hive SerDe cuando definen una tabla. Pig tiene un componente similar llamado Loadfunc/Evalfunc y Cascading tiene un componente similar denominado Tap. Los usuarios de Hadoop pueden utilizar el amplio ecosistema de los adaptadores de Hadoop sin tener que escribir 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 otra fuente 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 otras fuentes 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 le ayudan a configurar y administrar trabajos periódicos programados en motores de programación tradicionales como Cron. Por ejemplo, puede desarrollar un script 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 de 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 usando 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 “Running queries with checkpoints” del tutorial, la muestra de código muestra 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 un script 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, todavía 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 facilitando el 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 configurando el 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 soporta 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 soporta 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 especificando 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? ¿Ello repercute en el desempeño?

Sí, un cliente puede ejecutar varias consultas paralelas en la misma transmisión utilizando nombres lógicos independientes para cada consulta. No obstante, realizar lecturas de un fragmento de una transmisión de Kinesis está sujeto a un límite de velocidad de 2 MB por segundo. Por tanto, si hay N consultas paralelas en ejecución en la misma transmisión, cada una tendrá aproximadamente (2/N) MB por segundo de velocidad de salida por fragmento de 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á exactamente en 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 mapeo para leer desde Kinesis. Todo esto es transparente para el usuario.

P: ¿Qué sucede si existen periodos 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 logs de errores y a acceder 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 logs 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 logs de errores del trabajo.

P: ¿Cómo puedo maximizar el desempeño de lectura de una transmisión de Kinesis a EMR?

El desempeño 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. Le recomendamos utilizar m1.xlarge y superior para los nodos principales y centrales para disfrutar de esta característica.

Volver arriba >>