Big Data: Apache Spark complementa a Hadoop para llegar al tiempo real

Spark

Si ingresamos a cualquier página de proveedores de tecnología para Big Data como puede ser Cloudera, por ejemplo, encontramos que Apache Spark es “el estándar abierto para procesamiento flexible en memoria de analíticos avanzados, ya sea en modo batch o tiempo real. De hecho, Spark es en parte el cumplimiento de la promesa de analíticos en tiempo real o casi real en contextos Hadoop para Big Data.

Apache Spark es un framework para procesamiento de datos en general; es open source y se convierte en complemento de Apache Hadoop. Con Spark, es más fácil desplegar Hadoop en forma más rápida en aplicaciones Big Data end-to-end. Puede combinar analíticos procesados en batchs, streams e interactivamente. Es el reemplazante natural de MapReduce, la tecnología que desarrolló Google en su momento, en los ecosistemas Hadoop.

 

La evolución de Hadoop

Hadoop ha evolucionado notablemente desde su aparición como proyecto open source originado en Yahoo! Son muchas hoy las organizaciones en las que las implementaciones de Hadoop ya están saliendo de su etapa de prueba o piloto para ir pasando a formar parte de la producción. El ecosistema de proveedores también va creciendo a la par de la demanda.

Se han perfeccionado las tecnologías de manejo y consulta de Hadoop en forma notable. Sin embargo, todavía hay muchos detalles que frenan a los que podrían ser los mayores proyectos Big Data. Es que el ambiente Hadoop requiere de un file system especializado de almacenamiento de datos, HDFS (Hadoop Distributed File System) para poder almacenar archivos de gran volumen a lo largo de múltiples servidores y mantener el control de todos ellos. Y aquí se presenta un problema de velocidad o tiempos, según se lo mire desde la física o desde la necesidad del negocio.

La velocidad de Hadoop

Si bien HDFS permite administrar terabytes de datos, su velocidad de procesamiento se ve limitada a la de los discos que los almacenan. Especialmente cuando se trata de información tremendamente grande o requerida en tiempo real. A menos que se tenga la posibilidad de contar con arreglos de discos completamente SSD (Solid State Drives), algo que puede ser prohibitivo para muchas empresas debido a su costo, se estará a merced de las 7.200 revoluciones por minuto de los discos duros.

Aunque la potencia de Hadoop ha sido concebida para aprovechar las bondades de la computación distribuida, su mayor utilización ha sido en el procesamiento batch. Para ejecutar los procesamientos batch, Hadoop utiliza MapReduce y generalmente se trata de procesos nocturnos en los que las respuestas aparecen al día siguiente de iniciados. Big Data promete analíticos en tiempo real, pero a menudo no puede cumplir esa promesa.

 

Qué es y qué hace Apache Spark

Spark comenzó como un proyecto de la Universidad de California, Berkeley AMPLab en 2009 y fue donado como proyecto open source a Apache Foundation en 2012. De AMPLab surgió una compañía llamada DataBricks, la cual se encargó del futuro desarrollo de Apache Spark.

Según Patrick Wendell, uno de los fundadores y director de ingeniería en DataBricks, fue parte del equipo que creó Spark en Berkeley y destaca que este desarrollo se enfocó a tres aspectos centrales:

  • MapReduce está basado en tecnología “vieja” de Google y se trabaja sobre discos, mientras que Spark corre en memoria.
  • Facilidad de uso. “MapReduce era realmente difícil de programar. Muy poca gente podía hacerlo. Los desarrolladores pasaban mucho tiempo tratando de escribir para MapReduce y resultaba en una enorme pérdida de tiempo. Spark cuenta con una API (Application Programming Interface) muy amigable para el desarrollador,” nos dice Wendell. Spark, cabe destacarlo, soporta ocho diferentes lenguajes de programación, incluyendo a Phyton, Java y R.
  • Crear algo realmente compatible. Spark puede funcionar sobre Amazon EC2 (Elastic Cloud 2), sobre Mesos de Apache y varios otros entornos cloud. Puede leer y escribir datos en una variedad de bases de datos, como PostgreSQL, Oracle, MySQL y con todos los formatos de archivos Hadoop.

 

Según Wendell, la adopción de Spark ha crecido gracias a la demanda de velocidad. Tiempo es dinero. Gran parte de los primeros desarrollos Hadoop trabajaron en procesamiento batch off-line, donde la latencia y la performance no eran muy importantes.

Apache Spark ya está en el portafolio de los proveedores de tecnología Hadoop para la combinación Big Data-Cloud. Lleva la parte de procesamiento MapReduce a memoria, con lo que Hadoop logra una impresionante mejora en velocidad. En algunas aplicaciones, la velocidad se multiplica por 100, según desarrolladores. Esto abre a Hadoop a muchos nuevos Data Types debido a su potencial en procesamiento en tiempo real.

 

Facilidad de integración y beneficios inmediatos

Spark puede usarse en la red de almacenamientos que ya existe en una empresa. Ya que no es un sistema de almacenamiento, podrá conectar con Hadoop y comenzar a funcionar muy rápido. Según Wendell, se ha prestado especial atención a la gobernabilidad y la seguridad. “Lo que hacemos es acelerar la velocidad de lo que ya se está tratando de hacer,” nos dice, aunque no hay que olvidar que para que ello ocurra, hay que darle a todos esos servidores distribuiods toda la memoria que necesitan para procesar todo in-memory.

A partir de Spark se tiene la capacidad de lograr analíticos en tiempo real. Es por eso que son muchos los proveedores de servicios cloud que brindan alguna clase de solución Hadoop los que han incorporado a Spark como elemento estándar. Entre ellos tenemos a Cloudera, Hortonworks y a MapR.

 

Los logros de los usuarios

En una reciente conferencia que se realizó alrededor de la tecnología Spark, la empresa Toyota Motor brindó un ejemplo de la velocidad que se logra con Spark. La compañía monitorea la satisfacción e inquietudes de sus clientes a través de las redes o medios sociales. La compañía descubrió que los resultados de las encuestas a clientes no eran muy realísticos y por eso enfatizó en el monitoreo de Twitter y Facebook. La compañía creó un sistema completo sobre Spark para detectar palabras clave en los medios sociales.

En su implementación inicial de la medición de la experiencia de sus clientes a través de medios sociales, realizada con un proceso Hadoop batch, se tardaban unas 160 horas, casi seis días. El mismo proceso, rediseñado para Spark, se realiza en sólo cuatro horas. Por otra parte, se pudo realizar un tamizado de la avalancha de datos y se pudieron filtrar cosas como promociones de los concesionarios, material irrelevante y otros que involucraban productos Toyota. Como resultado de esta depuración, se redujo a la mitad el volumen de datos a procesar.

 

Otras aplicaciones en las que Spark es efectivo son las relacionadas con la industria financiera y la banca, donde la detección de fraudes y de señales de lavado de dinero son hoy imprescindibles y deben realizarse en la forma más cercana al tiempo real, sino en tiempo completamente real.

 

No todo es procesamiento en memoria

Según Wendell, varios de los beneficios de Spark no surgen sólo del procesamiento en memoria, si bien esa puede ser la piedra angular de su tecnología. Se puede decir que esa es una mitad. La otra mitad, siempre según Wendell, se debe a optimización. “Los demás sistemas no fueron diseñados teniendo en cuenta la latencia y allí hemos realizado grandes mejoras,” afirma. Luego, prosigue comentando que todavía queda mucho trabajo por delante y que existe un gran proyecto en marcha entre DataBricks y Apache y el objetivo es mejorar el rendimiento de Spark. Por el momento, no quiso hacer comentarios sobre los detalles del proyecto.

Prakash Naunduri, CEO de la firma de analíticos Paxata, la cual ha experimentado y trabajado con Spark, coincide con Wendell respecto a lo que falta por hacer. “Si bien Spark ofrece una forma estandarizada para crear aplicaciones analíticas altamente distribuidas e interactivas, todavía tiene mucho por recorrer. Spark carece de la seguridad necesaria y necesita mejorar su soporte para el trabajo con múltiples usuarios concurrentes,” afirma.

En síntesis, faltan cosas, pero los beneficios son reales.

Artículo con extractos del trabajo del columnista de Datamation, Andy Patrizio.