Amazon EMR – Elastic MapReduce

Última actualización: 02/04/2021

En esta entrada explico las características del servicio en la nube Amazon EMR para Big Data. Aprende aquí qué te puede aportar en tu estrategia cloud este servicio de AWS.

Introducción a Amazon EMR

¿Qué es Amazon EMR?

EMR es una plataforma gestionada en AWS que nos permite ejecutar trabajos Big Data con el ecosistema Hadoop como motor de procesamiento distribuido.

EMR tiene HDFS como capa de almacenamiento para el clúster. También, nos permite desacoplar el cómputo del almacenamiento usando el servicio S3 para almacenar datos y logs sin límite.

Se puede elegir entre varias versiones que determinan el stack open source que se despliega en el clúster. Incluye Hadoop, Hive, Tez, Flink, Hue, Spark, Oozie, Pig y HBase entre otros.

El sistema también está integrado con otros servicios de AWS y nos proporciona notebooks para ejecutar código en el clúster. Se puede usar Jupyter Lab usando Livy.

Arquitectura de EMR

EMR tiene tres tipos de nodos:

Master: Los nodos Master deben estar en funcionamiento para dar servicio al clúster. Se pueden desplegar varios para tener alta disponibilidad. Por defecto, alojan servicios como Hive Metastore.

Core: Estos nodos se encargan de almacenar los datos en HDFS y ejecutar los trabajos, también se pueden escalar.

Task: Estos nodos no almacenan datos por lo que se pueden añadir y eliminar sin riesgos de pérdida de datos. Se usan par añadir capacidad de procesamiento al clúster.

Esquema Amazon EMR
Esquema Amazon EMR

Entre las opciones de despliegue que tiene EMR podemos elegir pago por uso, en función del tiempo o ahorrar en costes usando instancias reservadas, planes de ahorro o instancias spot de AWS.

Escalado en Amazon EMR

En función de las cargas de trabajo que queramos ejecutar, podemos desplegar clústeres de EMR específicos para la duración de nuestro trabajo o bien tener un clúster permanente con alta disponibilidad y auto escalable en función de la demanda. El primer caso está aconsejado para trabajos puntuales y más ligeros.

Los despliegues de EMR se pueden escalar de forma automática o de forma manual estableciendo límites de nodos core. Para escalar el clúster se usarán métricas de utilización, tomando en cuenta las réplicas de datos.

En el caso de trabajos de streaming con Spark Streaming deberemos analizar muy bien la capacidad del clúster para escalar con el volumen. Es posible que el clúster pueda añadir capacidad automáticamente pero cuando el volumen de trabajo vuelva a disminuir no sea capaz de reducir el número de nodos, aumentando los costes considerablemente.

Almacenamiento en Amazon EMR

Debemos entender que EMR proporciona dos formas de almacenamiento:

EMRFS: Este sistema de ficheros se basa en el servicio S3. Tiene la capacidad de desacoplar el cómputo del clúster del almacenamiento.

HDFS: Necesita un clúster dedicado. Debemos configurar un factor de replicación para los nodos Core y tenerlo en cuenta para un correcto dimensionamiento.

EMR siempre necesita HDFS, por lo que al menos se necesitará un nodo de tipo Core.

Ambos modos son compatibles, y podemos persistir nuestros datos en el almacenamiento que necesitemos. También, podremos usar s3DistCp para copiarnos datos entre ellos.

En trabajos en los que no se realicen muchas operaciones de lectura, podremos usar EMRFS con S3 para optimizar los costes. En los trabajos con muchas lecturas iterativas (por ejemplo Machine Learning), nos beneficiaremos más de un sistema como HDFS.

Conclusión

Podríamos comparar EMR en AWS con HDInsight en Azure. Al igual que HDInsight, Amazon EMR ofrece muchas posibilidades de configuración, con un gran stack de servicios open source.

Cuando usamos EMR, podemos elegir los servicios que queremos incluir en el clúster. Sin embargo en HDInsight los tipos de clúster vienen predefinidos. También, HDInsight está configurado para usar directamente el almacenamiento sobre Azure Blob Storage, lo que incrementa el rendimiento y desacoplamiento desde el principio.

Resulta una opción muy interesante al realizar migraciones desde un clúster local hacia la nube, por ejemplo desde Cloudera. Al proporcionar los mismos servicios, no habría necesidad de adaptar el código o la forma de trabajar.

Cuando usamos EMR debemos tener muy en cuenta las opciones disponibles para ahorrar costes, como el uso de instancias spot y el escalado automático.

Sigue Aprendiendo

Puedes seguir aprendiendo sobre AWS y EMR para Big Data con alguno de estos cursos de Udemy:

Preguntas Frecuentes EMR – FAQ

¿Cuál es el precio de Amazon EMR?

El coste total del servicio depende del tipo y tamaño de instancias que use para desplegar. El modelo de coste se calcula por cada segundo de uso.

¿Se puede detener un clúster de EMR?

Un clúster de EMR no se puede detener. Podemos destruir el clúster para eliminar todos los recursos asociados.


A continuación, el vídeo-resumen. ¡No te lo pierdas!


¡Echa un ojo a mis listas de reproducción de Big Data y suscríbete al canal de Youtube para no perderte ningún vídeo nuevo!

Si te ayuda el contenido del blog, considera unirte a la lista de correo para estar al día de Big Data y cupones de formación

Deja una respuesta