Aspectos generales

P: ¿Qué es Amazon EMR?

Amazon EMR es un servicio web que permite a empresas, investigadores, analistas de datos y desarrolladores procesar grandes volúmenes de datos de forma rentable. Utiliza un marco de trabajo alojado 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 registros, 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 por 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 crear flujos de trabajo para procesamiento y monitorear mediante programación los avances 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 análisis de datos eficientes puede utilizar Amazon EMR. No necesita tener experiencia en desarrollo de software para probar 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 de manera significativa el nivel de complejidad asociado con las demandantes tareas de configuración, administración y ajuste de los clústeres de Hadoop o con la capacidad de cómputo que estos poseen. Puede poner en marcha clústeres de gran tamaño en Hadoop en un instante para iniciar procesamientos en minutos, y no en horas o días. Cuando termine el procesamiento del clúster, a menos que especifique lo contrario, este se 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 registro, 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 monitoreo, 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 clústeres de hardware estándar de gran tamaño. 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 Apache Spark?

Apache SparkTM es un sistema de procesamiento distribuido de código abierto que se usa para cargas de trabajo de big data. 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 Hadoop & 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 hacer aprovisionamiento de nodos, configuración de clústeres y de Spark o ajustes de clústeres. Obtenga más información sobre Spark y Spark en Amazon EMR.

P: ¿Qué es Presto?

Presto (o PrestoDB) es un motor de consultas SQL distribuidas de código abierto, diseñado desde cero para realizar 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 hacer aprovisionamiento de nodos, configuración de clústeres y de Presto o ajustes de clústeres. EMR permite aprovisionar una, cientos o miles de instancias informáticas en minutos. Obtenga más información sobre Presto y Presto en Amazon EMR.

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

Históricamente, Amazon EMR utilizó el término "clúster" para hacer referencia a un clúster de Amazon EMR (y a todos los pasos de procesamiento asignados a él). Cada clúster tiene un identificador exclusivo que comienza con "j-".

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 aprovisiona, inicia y configura instancias EC2.
BOOTSTRAPPING – 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 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 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 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" 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/emr. 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 evaluaremos 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.

Desarrollo

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 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: ¿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. Es posible que desee utilizar esto para depurar la aplicación sin tener que esperar siempre el inicio del clúster. También puede utilizar un clúster persistente para ejecutar un clúster de almacén de datos con un tiempo en ejecución prolongado. Esto se puede combinar con paquetes de análisis y almacén de datos que se ejecuten sobre Hadoop como, por ejemplo, Hive y Pig.

P: ¿Es posible recibir notificaciones cuando termine el clúster?

Puede inscribirse 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 comando, el SDK o las API para conocer un estado del 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?

Amazon EMR crea instancias de clúster mediante el uso de una imagen de máquina de Amazon (AMI) que está optimizada para Amazon EMR. La AMI contiene el sistema operativo Amazon Linux, otro software y las configuraciones necesarias de cada instancia para alojar sus aplicaciones de clúster. Como alternativa, puede especificar una AMI personalizada que cree con base en la AMI de Amazon Linux. 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: ¿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 leer instrucciones acerca de 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 conocer las versiones más recientes admitidas por Amazon EMR, consulte la documentación.

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 muchas correcciones 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 admite 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 elimina la compatibilidad para versiones anteriores de Hadoop varios meses después de que estas quedan obsoletas. No obstante, las API de Amazon EMR son compatibles con versiones anteriores, de forma que si crea herramientas con dichas API, estas funcionarán aunque Amazon EMR actualice la versión de Hadoop que utilice.

EMR Notebooks

P: ¿Qué es EMR Notebooks?

EMR Notebooks ofrece un entorno de administración, 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 realizar análisis interactivos mediante el uso de clústeres EMR.

P: ¿Qué puedo hacer con EMR Notebooks?

Puede usar EMR Notebooks para crear aplicaciones Apache Spark y ejecutar consultas interactivas en su clúster EMR sin demasiado esfuerzo. Varios usuarios pueden crear notebooks sin servidor directamente desde la consola, vincularlas a un clúster EMR compartido existente o aprovisionar un mínimo de 1 nodo de clúster directamente desde la consola, e inmediatamente comenzar a experimentar con Spark. Puede desconectar notebooks y volver a conectarlas 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: ¿Puedo abrir EMR Notebooks sin haber iniciado sesión en la consola de administración de AWS?

No, para crear o abrir y ejecutar consultas en su clúster EMR debe iniciar sesión en la consola de administración de AWS. Los archivos de la notebook se guardan en su bucket S3 en el formato ipynb y se pueden descargar y abrir de manera local desde su máquina.

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

EMR Notebooks admite PySpark, SparkR, SparkSQL, Spark (Scala) y Python kernels.

Q: ¿Qué bibliotecas están disponibles con EMR Notebooks?

Las bibliotecas que se encuentran en los almacenes de código abierto de Anaconda están disponibles para importarse en su código. Puede importar estas bibliotecas y usarlas de manera local en la notebook.

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 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 personalizadaen la Guía de administración de Amazon EMR. No es compatible la instalación de bibliotecas desde dentro del editor de notebook.

P: ¿Cuáles son los límites del servicio asociados con EMR Notebooks?

Notebooks usa el nodo principal de su clúster EMR para ejecutar consultas. El tamaño de las instancias maestras limita el número de notebooks que puede asociar a un clúster. Una vez que excede el límite, debe detener una notebook activa antes de comenzar otra.

P: ¿Cómo detengo mi notebook?

Puede usar la consola de EMR. Elija Notebooks, seleccione la notebook de la lista y elija Stop (Detener). Esto finaliza la sesión de notebook y la marca como no disponible para abrir en el editor de notebook. Puede elegir Start (Comenzar) para reiniciar la notebook.

P: ¿Cómo borro mi notebook?

Puede usar la consola de EMR. Elija Notebooks, seleccione la notebook de la lista y elija Delete(Borrar). La acción de borrar una notebook solo la elimina de la lista en la consola. El archivo de la notebook aún queda en la ubicación Amazon S3 que especificó cuando creó la notebook.

P: ¿Cómo puedo ejecutar consultas y códigos desde una notebook?

Las consultas Spark que ejecuta dentro de una notebook se ejecutan en el clúster EMR que elige cuando crea la notebook. El lenguaje de programación kernel que elije desde dentro del editor de notebook interactúa con el servidor Livy instalado en el clúster EMR para crear una sesión Spark. Todas sus consultas se ejecutan en el clúster. El resultado de la aplicación Spark responde al kernel que usa Livy y se puede ver dentro de la notebook.

Antes de ejecutar un código dentro del editor de notebook, debe asegurarse de que la notebook tenga el estadoReady (Listo). Este estado significa que la interfaz entre las aplicaciones en el clúster y el editor de la notebook están preparados para ejecutar consultas y el código. Para abrir el editor, seleccione la notebook en la lista de Notebooks y luego elija Open (Abrir) para iniciar el editor de la notebook en una nueva pestaña del explorador. En el editor de notebook, desde la lista Kernel, seleccione el lenguaje de programación kernel para sus consultas. Luego de que kernel se inicia y está listo, puede ejecutar un código como usualmente lo haría en una notebook Jupyter, p ej., al hacer clic en el botónRun (Ejecutar) en una sola celda, elegir Run All (Ejecutar todos) desde el menú Cell (celda), etc.

P: ¿Qué versiones de EMR son compatibles con EMR Notebooks?

EMR Notebooks se puede asociar a los clústeres EMR que ejecutan la versión EMR 5.18.0 o versiones posteriores.

P: ¿Puedo crear una notebook o abrir un editor de notebook sin un clúster EMR?

No, para crear o abrir EMR Notebook desde la consola, necesita asociarla a un clúster EMR que se esté ejecutando para la duración de la sesión de su notebook. Puede crear rápidamente un clúster de EMR compatible cuando crea la notebook o antes de iniciarla. Siempre puede descargar un archivo de notebook creado previamente en formato ipynb desde la ubicación S3 que elige cuando crea la notebook.

P: ¿Puedo dejar la sesión de mi notebook en ejecución indefinidamente?

No, si una notebook permanece inactiva por un tiempo prolongado, se detendrá. Si el editor de notebook aún está abierto, el código que ejecute en el editor fallará. Puede iniciar una notebook nuevamente desde la consola de EMR y volver abrir el editor de notebook.

P: ¿Qué sucede si elijo el editor de notebook mientras ejecuta algún otro código en el clúster?

Cerrar el editor de notebook no impactará en ningún código que se ejecute en el clúster; pero si no vuelve a abrir el editor de notebook por un tiempo prolongado, la notebook se detendrá y usted no obtendrá ningún resultado en la notebook. Puede hacer clic en el enlace de notebook para volver a iniciar esta notebook y reanudar su trabajo.

P: ¿El clúster EMR se cierra si ya no está asociado a una notebook?

No. Debe finalizar el clúster para cerrarlo.

P: ¿Qué otras aplicaciones Apache Hadoop puedo usar con EMR Notebooks?

Actualmente, EMR Notebooks admite Spark en el entorno Hadoop.

P: ¿Puedo usar una notebook con un clúster EMR diferente?

Sí, puede cambiar los clústers de EMR. Las notebooks se deben detener antes de cambiar de clúster. Puede seleccionar el clúster desde la lista de Notebooks, elegir View Details (Ver detalles), elegir Change cluster (Cambiar clúster) para seleccionar un clúster en ejecución o crear uno nuevo y luego elegirChange cluster and start the notebook (Elegir clúster e iniciar la notebook).

P: ¿Dónde se guardan las notebooks?

Los archivos de notebooks se guardan automáticamente en la ubicación Amazon S3 que especificó cuando creó la notebook, en intervalos regulares en el formato de archivo ipynb. El archivo de notebook tiene el mismo nombre que su notebook en la consola de EMR. También puede usar la función Save and Checkpoint (Guardar y Checkpoint) para guardar la notebook manualmente en cualquier momento. Esto crea un archivo ipynb con el mismo nombre en una subcarpeta denominada checkpoint. El archivo checkpoint más reciente sobreescribe los archivos checkpoint anteriores. La función Save as (Guardar como) en el editor de notebook no está disponible.

P: ¿Cómo uso el control de versión con mi notebook? ¿Puedo usar almacenes como GitHub?

Actualmente, EMR Notebooks no integra los almacenes para el control de versión.

P: ¿Cómo uso las notebooks guardadas?

Para trabajar con una notebook guardada, haga clic en la notebook de la lista deNotebooks en la consola de EMR.

P: ¿Puedo integrar Active Directory con mi EMR Notebook?

Solo se puede acceder a EMR Notebooks a través de la consola de administración de AWS para EMR. Puede federar usuarios de su Active Directory (Directorio Activo, AD) a AWS Management para una experiencia de inicio de sesión única. Visite Enabling federation to AWS using Active Directory, ADFS and SAML 2.0 para obtener más información

 P: ¿Cuáles son las políticas IAM necesarias para usar las notebooks?

Los usuarios deben tener una declaración de política en función de la identidad que les otorga permisos para crear y usar EMR Notebooks. Además de la política de usuario, EMR Notebooks usa una función de servicio para acceder a otros recursos de AWS y realizar acciones. Para más información consulte Security for EMR Notebooks en Amazon EMR Release Guide.

P: ¿Cómo se comunica la notebook con el nodo principal de mi clúster EMR y qué seguridad está disponible en ese caso?

El nodo principal de EMR usa Livy para interactuar con el editor de notebook. Cada EMR Notebook usa los Amazon EC2 security groups para controlar el tráfico de red entre el servidor Livy en el nodo principal y EMR notebook. Las normas del grupo de seguridad predeterminado limitan el tráfico de red para que solo el tráfico de Livy pueda pasar entre el editor de notebook y los nodos maestros en los clústeres que usa la notebook. Puede ofrecer grupos de seguridad personalizados con normas de seguridad entrantes y salientes para cada notebook, y cada clúster, para luego restringir la comunicación permitida entre las notebooks específicas y los clústeres desde la página de consola de la notebook, o proporcionar permisos en la función de servicio de notebook para que el servicio de notebook pueda crear los grupos de seguridad por usted. Para más información consulte Specifying EC2 Security Groups en Amazon EMR Release Guide.

P: Cómo administrador, ¿cómo puedo controlar el acceso al clúster de EMR para los usuarios de notebook?

Puede usar las etiquetas en el clúster para limitar los clústeres de Amazon EMR que un usuario consulte con una notebook. Si un usuario tiene los permisos para crear una notebook, puede asociarla a cualquier clúster de Amazon EMR, a menos que se restrinja el acceso mediante el uso de las etiquetas. Para más información consulte EMR Notebook tags en Amazon EMR Release Guide.

P: ¿Pueden varios usuarios abrir la misma notebook al mismo tiempo?

No, solo un usuario puede abrir una notebook por vez. Para ver el usuario actual, seleccione la notebook en la lista de Notebooks y elija View details (Ver detalles). De esta forma, podrá ver el nombre de usuario y el Nombre de recurso de Amazon (ARN) IAM del usuario que modificó la notebook por última vez como Last modified by (Modificado por última vez por). Para más información sobre ARN consulteNombres de recursos de Amazon en Referencia general de AWS.

P: ¿Cómo restrinjo la habilidad de los usuarios para editar o borrar mi notebook?

Puede controlar el acceso a sus notebooks mediante las etiquetas de notebook junto con las políticas IAM basadas en la identidad. De manera predeterminada, una etiqueta asociada con el usuario que crea la notebook se agrega automáticamente a la notebook. Para más información consulte Using Notebook Tags to Control IAM User Accessen laEMR Management Guide.

P: ¿Puedo asociar mi notebook a un clúster Kerberos permitido por EMR?

No, los clúster EMR kerberizados no se admiten actualmente.

P:¿Puedo finalizar un clúster si una notebook lo está usando?

Sí. Si el editor de la notebook aún está abierto, el código que ejecute en el editor fallará y la notebook se detendrá después de un tiempo.

P: ¿Cuánto cuesta el uso de EMR Notebooks?

EMR Notebooks se ofrece sin costo adicional a los clientes de Amazon EMR. Se le cobrará lo usual por los clústeres EMR vinculados en su cuenta. Puede encontrar más información acerca de los precios para el clúster visitando el sitio https://aws.amazon.com/emr/pricing/   

Depuración

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

En primer lugar, debe seleccionar el clúster que desee depurar. A continuación, 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 activar la depuración, es necesario definir el marcador "Enable Debugging" al crear un clúster en la consola de administración de AWS. Otra opción es pasar los marcadores --enable-debugging y --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 relacionada con 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 registros 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.

Administración de datos

P: ¿Cómo transfiero 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 registros de los clústeres completados?

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.

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í. La aplicación de Hadoop puede cargar los datos desde cualquier ubicación de Internet o desde 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.

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?

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 spot 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 empieza a ejecutar el clúster. Solamente se le cobrarán los recursos que realmente consuma. Por ejemplo, supongamos que ha lanzado 100 instancias Standard Small de Amazon EC2 para un clúster de Amazon EMR, donde el costo de Amazon EMR es 0,015 USD por hora incremental. 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 transcurrido 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 utilice 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 finalice el clúster con una llamada a la API TerminateJobFlows (o con otra herramienta equivalente), el clúster se apague automáticamente o el clúster se termine por error de software o hardware.

P: ¿Dónde puedo realizar un seguimiento del 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 cómputo 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 instancia Factor de normalización
Small 1
Medium 2
Large 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 la factura mensual.

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.

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

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 subordinados. 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 subordinados 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.

P: ¿Cuán seguros están 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.

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 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 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: ¿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 de 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.

Administración del clúster

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 terminado 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 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 varias subordinadas). 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 subordinado. Luego, cada nodo subordinado 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 subordinados. 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é nivel de fiabilidad 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 hora 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 conservar 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 instancias de Amazon EC2 admite Amazon EMR?

Amazon EMR admite 12 tipos de instancias EC2, como instancias estándar, de CPU de alto rendimiento, de memoria alta, de informática en clúster, de uso elevado de operaciones de E/S y con gran capacidad de almacenamiento. Las instancias estándar presentan proporciones 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 con alto nivel de procesamiento. Las instancias de informática en clúster ofrecen, en proporción, un alto rendimiento de la CPU con mayor rendimiento de red y son adecuadas para aplicaciones de informática de alto rendimiento (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 registros. 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 práctico y económico probar el rendimiento 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 los resultados intermedios. Por lo tanto, dada la triplicación de la replicación en HDFS, si desea procesar 5 TB en instancias m1.xlarge, que tienen 1690 GB de espacio en disco, recomendamos que el clúster tenga al menos (5 TB x 3)/(1690 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 operaciones de E/S. Puede que también desee incluir nodos de tarea adicionales para mejorar el rendimiento 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, 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?

Si deja de funcionar el nodo principal, se terminará el clúster y será necesario volver a ejecutar el trabajo. Amazon EMR no admite actualmente la conmutación por error automática de los nodos principales ni la recuperación de estado de estos. Si fallara el nodo principal, la consola de administración de AWS le informaría 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 subordinado deja de funcionar en un clúster, ¿Amazon EMR puede recuperarlo?

Sí. Amazon EMR es tolerante a los errores de nodos subordinados 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 subordinado, deberá ejecutarlo primero en el nodo principal y luego en el nodo subordinado.

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. 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 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 subordinados de un clúster en ejecución?

Sí. Existen dos tipos de nodos subordinados: (1) nodos principales, que hospedan 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.

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.

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

Existen varias situaciones en las que puede resultar interesante modificar el número de nodos subordinados 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 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 subordinados 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 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.

Etiquetado del 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
    • Key = instance-group role ; Value = [CORE or 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 añadir y eliminar las etiquetas de los clústeres de Amazon EMR desde la consola de Amazon EMR, la CLI o la API para garantizar que el clúster y las instancias de Amazon EC2 asociadas cuenten con las etiquetas correctas.

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:

  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 informática que la instancia proporcione. Optimizar el almacenamiento en una instancia permite ahorrar costos.
  2. 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.
  3. 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?

No, no se admiten volúmenes cifrados en la versión 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 un error de nodo. Amazon EMR reemplazará el nodo y el volumen de EBS por otros iguales.

Uso de Hive

P: ¿Qué es Apache Hive?

Hive es un paquete de análisis y almacén de datos 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.

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í. Existen cuatro características nuevas gracias a las cuales Hive es incluso más eficiente 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 a partir de tablas en las que están depositando datos los procesos externos, por ejemplo, archivos de registro.

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

d) El 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 map y reduce 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?

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?

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.

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 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).

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

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

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

Amazon EMR admite las versiones HBase 0.94.7 y HBase 0.92.0. Para poder usar HBase 0.94.7, debe especificar una versión de AMI 3.0.0. Si está usando la CLI, debe utilizar la versión 2013-10-07 o una posterior.

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

Más información sobre los precios de Amazon EMR

Visite la página de precios
¿Listo para crear?
Introducción a Amazon EMR
¿Tiene más preguntas?
Contacte con nosotros