Curso
Imagina que gestionas terabytes de datos de transacciones de clientes y tu sistema actual empieza a resentirse por la presión.
Necesitas una solución que escale bajo demanda, optimice costes e integre con tu entorno de AWS. Amazon Elastic MapReduce (EMR) puede ayudarte. Cuando empecé a trabajar con big data, me encontré con el mismo reto, hasta que descubrí EMR.
En esta guía, veremos desde cómo crear un clúster de EMR hasta ejecutar cargas de trabajo, optimizar el rendimiento, reforzar la seguridad, solucionar problemas y controlar los costes.
¿Qué es Amazon EMR?
Amazon EMR es un servicio de clúster totalmente gestionado que simplifica el procesamiento de big data al ofrecer aprovisionamiento, escalado y configuración automatizados de frameworks de código abierto.
Te permite analizar grandes volúmenes de datos estructurados y no estructurados sin tener que administrar manualmente clústeres on‑premises.
La imagen siguiente muestra cómo Amazon EMR on EKS trabaja con otros servicios de AWS, ofreciendo una representación visual de su integración y flujo de trabajo.

Diagrama que ilustra cómo Amazon EMR se integra con Amazon EKS y otros servicios de AWS para el procesamiento de big data. Fuente: AWS Docs
Si eres nuevo en AWS, te recomiendo este curso de introducción a AWS para afianzar los conocimientos fundamentales.
Algunas de las características clave de Amazon EMR son:
- Escalabilidad: EMR te permite añadir o quitar instancias de forma dinámica según las necesidades de la carga de trabajo.
- Eficiencia de costes: aprovechar Spot Instances y el autoescalado te permite optimizar los costes de cómputo.
- Integración con servicios de AWS: EMR se integra sin problemas con servicios como Amazon S3 (para almacenamiento de datos), AWS Lambda (para cómputo serverless), Amazon RDS (para bases de datos relacionales) y Amazon CloudWatch (para monitorización).
- Compatibilidad con frameworks populares: EMR es compatible con Apache Spark, Hadoop, Hive, Pig, Presto y más, lo que te permite trabajar con herramientas de big data conocidas.
Diagrama con las características clave de Amazon EMR. Imagen creada con Napkin AI
Automatizar la gestión y el escalado del clúster reduce la complejidad operativa y te permite centrarte en el procesamiento y el análisis de datos.
Si quieres entender mejor los servicios de almacenamiento de AWS como Amazon S3 antes de continuar con Amazon EMR, echa un vistazo a este tutorial de almacenamiento en AWS.
Configuración de un clúster de Amazon EMR
Para configurar un clúster de Amazon EMR, tendrás que acceder al servicio EMR, crear el clúster y ajustarlo a tu carga de trabajo.
Crear un clúster de EMR
Para empezar, inicia sesión en la consola de administración de AWS y navega hasta el servicio EMR.
Puedes hacerlo buscando "EMR" en el panel de búsqueda de la consola de AWS, como se muestra en la imagen de abajo.

Una vez allí, haz clic en «Create Cluster», como se muestra en la imagen.

La imagen de abajo muestra una captura de la interfaz actual de EMR; aunque puede evolucionar con el tiempo, los ajustes principales serán similares.

Para configurar tu clúster de Amazon EMR, tendrás que ajustar varios parámetros según tus requisitos. Sigue estas indicaciones:
01: Selecciona un framework de big data
EMR ofrece varios frameworks, como Apache Spark para procesamiento en memoria, Hadoop para almacenamiento y procesamiento distribuidos, y Presto para consultas SQL interactivas.
Elige el que mejor se adapte a tu caso de uso.
02: Elige un tipo de instancia
El tipo de instancia afecta al rendimiento y al coste. Una opción habitual es m5.xlarge, ya que ofrece un buen equilibrio entre potencia de cómputo y precio.
Para cargas intensivas en memoria, usa r5.xlarge, mientras que c5.xlarge es más adecuado para tareas de cómputo intensivo.
03: Configura los nodos del clúster
Los clústeres de EMR se componen de tres tipos de nodos:
- Nodo maestro: gestiona el clúster y coordina los trabajos (normalmente, una sola instancia).
- Nodos core: realizan el procesamiento y almacenan datos de HDFS (mínimo uno; puedes escalar según necesidad).
- Nodos de tareas: opcionales; procesan cargas adicionales sin almacenar datos. El número de nodos core y de tareas debe ajustarse al tamaño de la carga.
04: Configura seguridad y acceso
Configura parejas de claves de EC2 para acceso SSH y define roles de IAM para controlar permisos.
También es buena idea habilitar la autenticación Kerberos o AWS Lake Formation para reforzar la seguridad.
05: Configura red y almacenamiento
Define la VPC, habilita el autoescalado para ajustar el tamaño del clúster de forma dinámica y especifica Amazon S3 como almacenamiento principal (s3://your-bucket-name/).
06: Lanza el clúster
Tras revisar la configuración, haz clic en "Create Cluster" para lanzarlo.
El clúster tardará unos minutos en inicializarse antes de estar disponible.
La imagen de abajo muestra la interfaz donde puedes crear el clúster.

Configurar aplicaciones y dependencias
Con el clúster en marcha, puedes afinarlo seleccionando aplicaciones preinstaladas y configurando acciones de arranque (bootstrap):
- Aplicaciones preinstaladas: elige entre herramientas como Hive para consultas SQL, Pig para scripting de alto nivel y HBase para soporte NoSQL.
- Bootstrap actions: personaliza el clúster instalando librerías adicionales, modificando ajustes del sistema o preparando conjuntos de datos. Ejemplos:
- Instalar librerías de Python (
pip install pandas numpy) - Configurar el registro (logging)
- Ajustar parámetros de la JVM para Hadoop/Spark
Una buena configuración garantiza que tu clúster de EMR esté optimizado para su carga, reduciendo tiempos de proceso y costes operativos.
Trabajar con Amazon EMR
Con el clúster de EMR listo y configurado, el siguiente paso es empezar a trabajar con tus datos.
Subir datos a Amazon EMR
Amazon EMR se apoya principalmente en Amazon S3 para almacenar los conjuntos de datos de entrada y los resultados de salida.
A diferencia de HDFS, que guarda los datos dentro del clúster, S3 ofrece durabilidad, escalabilidad y eficiencia de costes, por lo que es la opción preferida para la gestión de datos en EMR.
Para subir datos a Amazon S3, sigue estos pasos:
01: Ve a la consola de S3
Inicia sesión en la consola de AWS y abre el servicio Amazon S3.
02: Crea o selecciona un bucket
Elige un bucket existente o crea uno nuevo. Asegúrate de que esté en la misma región que tu clúster de EMR para minimizar la latencia.
La imagen de abajo muestra el proceso de creación de un bucket de Amazon S3.
Recuerda que el nombre del bucket debe ser único a nivel global y cumplir las convenciones de AWS. Elige un nombre que refleje tu caso de uso y respete estos requisitos.

03: Sube los archivos
Haz clic en "Upload", selecciona los archivos necesarios y define los permisos de acceso.
La imagen de abajo muestra la interfaz donde puedes subir archivos a un bucket de Amazon S3.

Como alternativa, puedes usar la AWS CLI para subir archivos de forma programática.
Antes, asegúrate de tener la AWS CLI instalada y configurada con las credenciales adecuadas ejecutando:
aws configure
Se te pedirá el AWS Access Key ID, Secret Access Key, región y formato de salida para autenticar la sesión. Puedes omitir este paso si ya tienes configurada la AWS CLI.
Una vez configurada, puedes subir archivos con el siguiente comando:
aws s3 cp local_file.csv s3://your-bucket-name/data/
04: Accede a los datos desde EMR
Una vez subidos, los datos pueden accederse desde EMR usando una ruta S3: s3://your-bucket-name/data/
Aplicaciones como Spark, Hadoop y Hive pueden procesar los datos directamente desde S3.
Opciones alternativas de almacenamiento
- HDFS (Hadoop Distributed File System): se usa para almacenamiento temporal durante el procesamiento, pero los datos se pierden al terminar el clúster.
- Amazon DynamoDB: almacenamiento NoSQL y recuperación de datos en tiempo real.
- AWS Glue Data Catalog: para organizar y gestionar el metadato de conjuntos de datos almacenados en S3.
Ejecución de trabajos de Spark o Hadoop
Tras subir los datos, puedes procesarlos con Apache Spark, Hadoop u otros frameworks de big data.
EMR permite ejecutar trabajos mediante la AWS CLI, la consola de EMR o acceso directo por SSH.
Ejecutar un trabajo de Spark
Para enviar un trabajo de Spark, conéctate por SSH al clúster y usa el comando spark-submit:
spark-submit --deploy-mode cluster s3://your-bucket-name/scripts/sample_job.py
También puedes enviar trabajos desde la función "Steps" de AWS EMR, que permite automatizarlos sin acceder manualmente al clúster.
Si quieres repasar conceptos fundamentales antes de ejecutar trabajos de Spark en EMR, el curso Big Data Fundamentals with PySpark es un gran punto de partida. Si tu flujo de trabajo incluye preparar datos desordenados, te puede resultar útil el curso Cleaning Data with PySpark.
Ejecutar un trabajo de Hadoop MapReduce
Para trabajos de Hadoop, usa la línea de comandos:
hadoop jar s3://your-bucket-name/jars/sample_job.jar input_dir output_dir
Los trabajos de Hadoop también pueden orquestarse con AWS Step Functions para automatizar flujos.
La seguridad y el control de acceso son críticos al ejecutar trabajos de big data.
Dado que los trabajos de Spark y Hadoop tratan con datos sensibles, Amazon EMR se integra con Apache Ranger para aplicar controles de acceso y permisos de forma granular.
La imagen siguiente ilustra una arquitectura de ejemplo de esta integración y cómo se aplican las políticas de seguridad en los clústeres de EMR.
Diagrama que ilustra cómo Apache Ranger aplica políticas de seguridad en clústeres de Amazon EMR. Fuente: AWS Docs
Monitorización del rendimiento del clúster
Para garantizar un procesamiento eficiente, monitoriza tu clúster de EMR con Amazon CloudWatch, Ganglia y la interfaz de Spark.
Estas herramientas ofrecen información en tiempo real sobre uso de recursos, progreso de los trabajos y posibles cuellos de botella.
Herramientas clave de monitorización
- Amazon CloudWatch: controla uso de CPU, memoria, I/O de disco y actividad de red. Puedes configurar alarmas para avisarte de problemas de rendimiento.
- Logs de EMR: accede a los registros del sistema en Amazon S3 para depurar fallos. Puedes habilitarlos en «Cluster Logging» al crear el clúster.
- Ganglia: proporciona visualizaciones detalladas del rendimiento del clúster, disponible en la pestaña «Monitoring» de la consola de EMR.
- Spark UI: si ejecutas trabajos de Spark, usa la interfaz web de Spark para analizar planes de ejecución, dependencias entre etapas y consumo de recursos.
Buenas prácticas de optimización del rendimiento
- Habilita el autoescalado: añade o elimina nodos automáticamente según la demanda.
- Usa Spot Instances: reduce costes usando Spot Instances de EC2 para nodos de tareas.
- Ajusta configuraciones de Spark y Hadoop: modifica la memoria (
spark.executor.memory), el paralelismo (spark.default.parallelism) y el tamaño de bloque de Hadoop para un rendimiento óptimo.
Siguiendo estos pasos podrás procesar grandes volúmenes de datos con eficiencia manteniendo tu clúster de EMR rentable y con alto rendimiento.
Escalado de clústeres de Amazon EMR
A medida que evolucionan tus necesidades de procesamiento, puede que tengas que ajustar los recursos del clúster de EMR para mantener el rendimiento y la eficiencia en costes.
EMR ofrece opciones de escalado manual y automático, lo que te permite modificar el número de instancias según la demanda.
Además, aprovechar Spot Instances puede ayudarte a optimizar costes manteniendo la escalabilidad.
Escalado manual
El escalado manual te permite aumentar o reducir el número de instancias del clúster en función de la carga en tiempo real.
Puedes hacerlo desde la consola de EMR, la AWS CLI o la API de EMR.
- Desde la consola de EMR: ve a tu clúster, selecciona "Resize" e indica el número de instancias deseado.
- Con la AWS CLI: ejecuta el siguiente comando para modificar el tamaño del clúster:
aws emr modify-instance-groups --cluster-id <your-cluster-id> --instance-groups InstanceGroupId=<your-instance-group-id>,InstanceCount=<new-instance-count>
- Mediante la API de EMR: usa la API
ModifyInstanceGroupspara ajustar dinámicamente el número de instancias.
El escalado manual es ideal para cargas previsibles en las que puedes anticipar las necesidades de recursos.
Por ejemplo, lo utilicé cuando sabía que el trabajo tendría una demanda constante; ajusté el número de instancias según lo esperado y aseguré un uso óptimo de recursos.
Autoescalado en Amazon EMR
El autoescalado en EMR ajusta dinámicamente el número de instancias en respuesta a cambios en la carga, garantizando un uso eficiente de recursos y controlando los costes.
Las políticas de autoescalado definen cuándo añadir o quitar instancias en función de métricas como uso de CPU, memoria de YARN o longitud de la cola de tareas.
Configuraciones clave de autoescalado:
- Política de scale‑out: añade instancias cuando aumenta la carga para procesar los trabajos a tiempo.
- Política de scale‑in: reduce instancias cuando baja la demanda, evitando costes innecesarios.
- Periodos de enfriamiento (cooldown): evitan acciones de escalado excesivas en intervalos cortos.
Para habilitar el autoescalado, configura una política desde la consola de AWS, la CLI o la API.
Ejemplo de comando en AWS CLI para definir una política de autoescalado:
aws emr put-auto-scaling-policy --cluster-id <your-cluster-id> --instance-group-id <your-instance-group-id> --auto-scaling-policy file://policy.json
El autoescalado es especialmente útil para cargas variables, como analítica en streaming, procesos batch y tareas de machine learning con demandas fluctuantes.
Por ejemplo, lo empleé al ejecutar un modelo de machine learning con picos de tráfico impredecibles: el sistema escalaba en horas punta y reducía cuando caía la demanda, optimizando costes y rendimiento.
Spot Instances para optimizar costes
Amazon EC2 Spot Instances ofrecen una forma muy rentable de ejecutar clústeres de EMR aprovechando capacidad sobrante de EC2 a precios significativamente reducidos.

Son ideales si tienes cargas tolerantes a fallos, como procesamiento de big data y machine learning.
Ventajas de usar Spot Instances en EMR:
- Ahorro de costes: pueden ser hasta un 90% más baratas que las instancias On‑Demand.
- Escalabilidad: puedes añadir más capacidad de cómputo a menor coste.
- Tipos de instancia híbridos: EMR permite mezclar Spot, On‑Demand y Reserved Instances para equilibrar coste y fiabilidad.
Sin embargo, las Spot pueden interrumpirse si AWS recupera capacidad. Para mitigarlo:
- Usa Instance Fleets en lugar de Instance Groups para mezclar Spot y On‑Demand dinámicamente.
- Implementa checkpointing en las cargas para recuperarte de interrupciones.
- Diversifica las solicitudes Spot en múltiples zonas de disponibilidad y tipos de instancia para ganar estabilidad.
Para configurar Spot Instances en EMR, usa este comando de AWS CLI:
aws emr create-cluster --instance-fleets file://instance-fleet-config.json
Combinar escalado manual, autoescalado y Spot Instances te ayudará a optimizar tus clústeres de EMR en rendimiento, coste y fiabilidad.
Seguridad y control de acceso en Amazon EMR
Una configuración incorrecta de roles de IAM en EMR puede exponer datos sensibles a usuarios no deseados. Por ello, aplica siempre el principio de mínimo privilegio y limita el acceso SSH a IPs de confianza.
AWS ofrece sólidas capacidades de seguridad, como roles de IAM para control de acceso, cifrado para proteger datos y buenas prácticas para salvaguardar tu entorno.
Roles y políticas de IAM
AWS Identity and Access Management (IAM) controla el acceso a clústeres de EMR y recursos relacionados.
Al crear un clúster debes asignar roles de IAM que otorguen permisos para interactuar con S3, DynamoDB y otros servicios de AWS.
Definir políticas de mínimo privilegio aporta seguridad al limitar el acceso solo a los recursos necesarios.
La imagen siguiente muestra políticas gestionadas y cómo podrían usarse con EMR.

Captura de la configuración de políticas de AWS IAM mostrando cómo se asignan permisos. Fuente: AWS Docs
Cifrado de datos y buenas prácticas de seguridad
Amazon EMR admite cifrado de datos en reposo mediante cifrado del lado del servidor en Amazon S3 (SSE) o AWS Key Management Service (KMS). Los datos en tránsito pueden protegerse con SSL/TLS.
Entre las mejores prácticas se incluyen usar MFA para acceder a la consola de AWS, restringir el acceso por SSH y gestionar las claves de API de forma segura.
Si quieres aprender más sobre seguridad en AWS, consulta el curso AWS Security and Cost Management.
Solución de problemas en Amazon EMR
Aunque Amazon EMR está diseñado para ser escalable y fiable, pueden surgir incidencias durante la operación del clúster y la ejecución de trabajos.
Los retos habituales incluyen cuellos de botella, fallos de trabajos y limitaciones de recursos. Saber diagnosticar y resolver estos problemas te ayudará a mantener un flujo de trabajo eficiente.
Problemas comunes en clústeres de EMR
Es frecuente encontrar ejecuciones lentas, memoria insuficiente, fallos de instancias y barajado de datos ineficiente.
Los problemas de rendimiento pueden deberse a tipos de instancia inadecuados, clústeres con pocos recursos o I/O de disco excesivo. Para abordarlos:
- Optimiza los parámetros del trabajo: ajusta memoria de ejecutores, paralelismo y particiones de shuffle para equilibrar el uso de recursos.
- Dimensiona bien las instancias: utiliza políticas de autoescalado para ajustar el tamaño del clúster según la demanda.
- Monitoriza y revisa logs: usa Amazon CloudWatch, la consola de EMR o analiza registros en S3 para detectar cuellos de botella y puntos de fallo.
Diagnóstico de trabajos de Spark y Hadoop
Cuando fallan trabajos de Spark o Hadoop, entender la causa raíz es clave para solucionarlo.
Los logs almacenados en S3 o accesibles desde la consola de EMR ofrecen información valiosa sobre fallos de ejecución, problemas de memoria y lentitud de tareas.
- Usa el Spark history server: ayuda a analizar líneas de tiempo de ejecución, operaciones de shuffle y distribución de tareas para identificar cuellos de botella.
- Aprovecha el Hadoop Job Tracker: para MapReduce, ofrece estadísticas detalladas que ayudan a detectar tareas de larga duración o sesgos de datos.
- Ajusta el rendimiento con Dr. Elephant y Sparklens: estas herramientas recomiendan optimizaciones para Spark y Hadoop analizando métricas históricas.
La imagen siguiente muestra cómo Dr. Elephant y Sparklens pueden usarse para afinar el rendimiento de Hadoop y Spark en Amazon EMR.
Interfaces de Dr. Elephant y Sparklens con recomendaciones de ajuste para Hadoop y Spark en Amazon EMR. Fuente: AWS Blogs
Estado del clúster y recuperación
Si un clúster sufre fallos, diagnosticarlos rápido minimiza el tiempo de inactividad y previene la pérdida de datos.
Amazon CloudWatch y AWS CloudTrail ofrecen monitorización y alertas para identificar causas subyacentes.
- Revisa métricas de CloudWatch: observa CPU, memoria y I/O de disco para saber si hay subuso o sobrecarga.
- Reinicia instancias con fallos: si una instancia falla por problemas de hardware o software, reiniciarla o sustituirla puede devolver la estabilidad.
- Lanza un clúster nuevo desde configuraciones guardadas: para recuperarte de fallos críticos, usa la función de clonado de EMR para lanzar un clúster con los mismos ajustes y acciones de arranque.
Diagrama que ilustra formas de optimizar el estado y la recuperación del clúster en Amazon EMR. Imagen creada con Napkin AI
Gestión de costes con Amazon EMR
Gestionar bien los costes es clave al ejecutar cargas en Amazon EMR. El precio depende de factores como tipos de instancia, almacenamiento y transferencia de datos, pero hay estrategias para optimizar el gasto.
Entender la tarificación
La tarificación de Amazon EMR se basa principalmente en varios factores: instancias de cómputo, almacenamiento y transferencia de datos.
- Las instancias On‑Demand te permiten escalar según necesidad, con flexibilidad y sin compromisos a largo plazo, aunque pueden resultar caras para cargas continuas.
- Las Spot Instances son una alternativa más económica al pujar por capacidad no utilizada de EC2 a precios mucho más bajos. Aun así, dependen de disponibilidad y pueden interrumpirse.
Para estimar costes con precisión, puedes usar la AWS Pricing Calculator, que tiene en cuenta configuraciones de clúster, tipos de instancia y demanda de trabajo.
Comprender estas estructuras de precios te permitirá hacer mejores previsiones y presupuestos, asegurando una asignación eficiente de recursos.
Además, aprovechar AWS Savings Plans o Reserved Instances para cargas previsibles te permite fijar precios más bajos y reducir el coste total.
Estrategias de optimización de costes
Para optimizar costes, aplica estas buenas prácticas al ejecutar cargas en Amazon EMR:
- Autoescalado: ajustar dinámicamente el tamaño del clúster según la demanda te asegura usar solo los recursos necesarios en cada momento. Evita el sobredimensionamiento y reduce el desperdicio.
- Right‑sizing de instancias: elegir los tipos de instancia adecuados mejora el rendimiento y minimiza costes. Por ejemplo, instancias optimizadas para cómputo para tareas pesadas de proceso, e instancias optimizadas para memoria para analítica en memoria.
- Spot Instances para ahorrar: cuando sea posible, usa Spot para reducir drásticamente el coste de cómputo. Para mitigar interrupciones, ejecuta cargas tolerantes a fallos y aplica estrategias de reequilibrio.
- Optimización del clúster: configurar bien el número de nodos y ajustar parámetros de Hadoop o Spark mejora el rendimiento sin gastar de más.
- Termina clústeres inactivos: monitoriza la actividad y apaga los clústeres que no estén en uso para evitar costes innecesarios.
- Usa servicios gestionados: delegar ciertos procesos ETL en AWS Glue puede ser más rentable que ejecutarlos en EMR. AWS Glue es serverless y escala automáticamente, evitando gestionar y pagar recursos inactivos.
Aplicando estas estrategias, equilibrarás rendimiento y eficiencia de costes.
Para una visión más amplia de la gestión de costes en la nube de AWS, echa un visto a AWS Cloud Technology and Services.
Conclusión
Tras trabajar con Amazon EMR, valoro cómo simplifica el procesamiento de big data al automatizar la gestión de clústeres, el escalado y la integración con servicios de AWS. Es esencial para cualquiera que gestione cargas de datos a gran escala, tanto si empiezas como si optimizas un pipeline existente.
Si estás explorando soluciones de big data en la nube, EMR es una opción potente y escalable que merece la pena considerar.
