Insights

Big Data: de Hadoop a Spark, en la práctica | SUMāTO

Escrito por Andrés Lozada | Feb 14, 2017 1:00:00 PM

La primera vez que vi un clúster de Hadoop procesando un día entero de transacciones de un retailer, me quedó claro que el problema ya no era guardar los datos: era hacerlos rendir. Llevo varios años acompañando a empresas en LATAM que acumularon terabytes de logs, ventas y eventos sin saber muy bien qué hacer con ellos. Y en estos meses de 2017 estoy viendo un cambio de fondo: las arquitecturas que diseñábamos alrededor de MapReduce están migrando hacia Spark, y eso reordena cómo pensamos el dato como activo. Permítame contarle lo que estamos aprendiendo en la práctica, sin humo.

En corto: Hadoop resolvió el almacenamiento distribuido y barato; MapReduce le dio un motor de procesamiento por lotes confiable pero lento. Spark llegó a procesar en memoria, hasta un orden de magnitud más rápido, y unificó batch, streaming y analítica en un mismo motor. Hoy la decisión correcta para la mayoría de empresas es Hadoop para almacenar y Spark para procesar.

¿Qué problema vino a resolver Hadoop?

Antes de Hadoop, escalar el procesamiento de datos significaba comprar servidores cada vez más grandes y caros. Hadoop invirtió la lógica: en lugar de una máquina enorme, muchas máquinas modestas trabajando en paralelo. Dos piezas lo hicieron posible.

  • HDFS (Hadoop Distributed File System): reparte los archivos en bloques entre decenas o cientos de nodos, con replicación para tolerar caídas de hardware. Un disco que falla deja de ser una crisis.
  • MapReduce: el modelo de programación que lleva el cómputo hacia donde están los datos, en vez de mover los datos hacia el cómputo. Eso, en volúmenes grandes, cambia todo.

El ecosistema creció rápido alrededor de ese núcleo: Hive para consultar con SQL, Pig para flujos de transformación, HBase para acceso aleatorio, YARN para gestionar recursos del clúster. Para una empresa, el atractivo era doble: hardware commodity y software de código abierto. Almacenar un activo que antes se descartaba por costo, de pronto, era viable.

¿Por qué MapReduce se quedó corto?

MapReduce es robusto y predecible, pero tiene un talón de Aquiles: escribe en disco entre cada etapa. Un trabajo encadena fases map y reduce, y cada paso intermedio toca HDFS. Para un proceso por lotes nocturno está bien. Pero apareció una clase de cargas que sufre con ese diseño:

  • Algoritmos iterativos: el machine learning y los grafos repiten cálculos sobre el mismo conjunto muchas veces. Con MapReduce, cada iteración relee el disco. Es como volver a sacar el mismo libro del archivo cien veces.
  • Consultas interactivas: un analista que quiere explorar no puede esperar minutos por cada pregunta.
  • Latencia: nada de esto sirve si el negocio necesita respuestas en segundos, no en horas.

Además, escribir trabajos MapReduce a mano es verboso. Mucho código repetitivo para lógica que conceptualmente es simple. En proyectos reales, eso se traduce en equipos lentos y mantenimiento caro.

¿Qué cambia Spark exactamente?

Spark, nacido en el AMPLab de Berkeley y hoy proyecto estrella de la Apache Software Foundation, atacó justo esos puntos. Su idea central es el RDD (Resilient Distributed Dataset): una colección distribuida que puede mantenerse en memoria a través de múltiples operaciones. Cuando un algoritmo itera, los datos ya están cargados; no hay viaje al disco en cada vuelta. De ahí los benchmarks que muestran a Spark hasta diez veces más rápido en disco y mucho más en memoria para cargas iterativas.

Pero la velocidad no es lo único, ni lo más importante para una empresa. Lo decisivo es la unificación. Spark trae bajo un mismo motor:

  • Spark SQL y los DataFrames, para consultas estructuradas con un lenguaje familiar.
  • Spark Streaming, para procesar flujos en micro-lotes casi en tiempo real.
  • MLlib, la biblioteca de machine learning lista para usar.
  • GraphX, para análisis de redes y relaciones.

Esa integración importa porque reduce la cantidad de tecnologías que un equipo debe dominar y operar. Y como Spark corre sobre YARN y lee directamente de HDFS, no obliga a tirar la inversión en Hadoop: se monta encima. En nuestros proyectos de analítica, esa convivencia es la regla, no la excepción.

Batch contra streaming: ¿cuál necesita su empresa?

Esta es la pregunta que más confusión genera en los comités de tecnología. La respuesta honesta es que casi siempre necesita ambos, pero para cosas distintas.

  • Batch (por lotes): procesa grandes volúmenes acumulados en ventanas definidas. Sirve para el cierre contable, la consolidación de ventas del día, el reentrenamiento nocturno de un modelo, los reportes regulatorios. La latencia de minutos u horas es aceptable porque la decisión no es inmediata.
  • Streaming (en flujo): procesa eventos a medida que ocurren. Sirve para detección de fraude en una transacción, alertas de operación, personalización en sesión, monitoreo de sensores. Aquí cada segundo cuenta.

Un error común es querer resolver todo con streaming porque suena moderno. El streaming es más exigente de operar y depurar; introducir esa complejidad donde el negocio tolera un reporte cada hora es desperdiciar esfuerzo. El criterio de consultor es simple: deje que la velocidad de la decisión defina la velocidad del procesamiento, no al revés.

Casos reales que estamos viendo en LATAM

Los patrones se repiten más de lo que uno esperaría. Algunos ejemplos concretos de lo que estas arquitecturas habilitan:

  • Retail: unificar ventas de tienda física, e-commerce y campañas para construir una vista única del cliente. Con Spark, recalcular segmentos sobre millones de tickets pasa de toda la noche a un par de horas, y eso cambia la frecuencia con que el negocio puede reaccionar.
  • Banca y fintech: scoring y detección de fraude. El histórico se entrena en batch con MLlib; la evaluación del evento individual va por streaming. Es el ejemplo perfecto de por qué un motor unificado evita mantener dos pilas separadas.
  • Telecomunicaciones: el clásico análisis de fuga (churn) sobre registros de detalle de llamadas, un volumen que justifica de sobra un clúster.
  • Logística: consolidar eventos de rastreo para estimar tiempos de entrega y detectar desviaciones temprano.

En todos, el salto de valor aparece cuando el dato deja de ser un costo de almacenamiento y empieza a alimentar decisiones repetibles. Ahí es donde la conversación se conecta con inteligencia artificial: sin una base de datos accesible y procesable, cualquier modelo es una promesa sin cimiento.

El dato como activo: lo que no es técnico

Quiero ser claro en algo que se nos olvida entre tanto framework. Hadoop y Spark son medios, no fines. Una empresa puede tener el mejor clúster y seguir tomando decisiones a ciegas si no ordena tres cosas:

  • Gobierno: quién es dueño de cada dato, con qué definición y calidad. Sin esto, el clúster acumula un pantano de datos, no un activo.
  • Casos de uso priorizados: arrancar por un problema de negocio con valor medible, no por "montar la plataforma". La tecnología sigue al caso, nunca al revés.
  • Capacidades del equipo: Spark baja la barrera, pero alguien tiene que entender el dominio y la pregunta. La herramienta no sustituye el criterio.

Cuando estas tres piezas están alineadas, la inversión en infraestructura se paga sola. Cuando no, se convierte en el proyecto que nadie quiere auditar.

Preguntas frecuentes

¿Spark reemplaza a Hadoop?
No. Spark reemplaza a MapReduce como motor de procesamiento, pero suele apoyarse en HDFS para almacenar y en YARN para gestionar recursos. Piense en Hadoop como la bodega y en Spark como la maquinaria que trabaja dentro de ella.

¿Necesito Spark si mis datos no son tan grandes?
Quizá no todavía. Si sus volúmenes caben con holgura en una base relacional bien dimensionada, esa puede ser la opción más sensata. Spark gana cuando el volumen, la velocidad o la variedad superan lo que una arquitectura tradicional maneja con comodidad. La regla es resolver el problema, no comprar tecnología por moda.

¿En qué lenguaje se programa Spark?
Principalmente Scala, que es su lenguaje nativo, pero ofrece APIs muy completas en Python (PySpark), Java y R. Eso le permite aprovechar el talento que ya tiene en casa en lugar de contratar perfiles escasos.

¿Cuánto tarda en verse valor?
Con un caso de uso acotado y datos disponibles, un piloto bien enfocado puede mostrar resultados en cuestión de semanas. Los proyectos que prometen transformación total en un solo gran despliegue son los que suelen fracasar.

El primer paso

Si su empresa ya acumula datos pero todavía no los convierte en decisiones, el camino no empieza comprando un clúster: empieza eligiendo bien el primer caso de uso y diseñando la arquitectura adecuada para él. En SUMāTO ayudamos a las organizaciones de la región a hacer exactamente eso, desde el diagnóstico hasta la puesta en producción, conectando analítica e inteligencia artificial con objetivos de negocio concretos. Lo invito a una conversación de diagnóstico, sin compromiso, para mirar juntos dónde está su dato y qué puede empezar a rendir este mismo año. Escríbanos en sumatogroup.com/contacto y demos el primer paso.