Spark para Dummies

sparkSpark, al igual que Hadoop, es básicamente un marco de desarrollo que proporciona una serie de plataformas interconectadas, sistemas y estándares para llevar a cabo proyectos de Big Data.

Spark también es de código abierto y pertenece a la Apache Software Foundation. De código abierto quiere decir que el código puede ser utilizado libremente por cualquier persona; aun más: puede ser modificado por cualquier persona para crear otras versiones dirigidas a resolver nuevas problemáticas. Los desarrolladores y las empresas que las producen, están constantemente refinando y actualizando los programas, añadiendo nuevas funcionalidades o mayor eficiencia. Spark fue el proyecto de Apache más participativo el año pasado, y no sólo de Apache, sino de todas las aplicaciones de código abierto de Big Data, con más de 500 colaboradores en más de 200 organizaciones.

contributors spark

Según los expertos, Spark es más avanzado y más reciente que Hadoop, y está diseñado para trabajar mediante el procesamiento de fragmentos de datos «en memoria«. Esto significa que transfiere los datos de los discos duros físicos a la memoria del sistema, donde el procesamiento es mucho más rápido (hasta 100 veces más rápido en algunas operaciones).

La plataforma Spark está muy de moda, y lo utilizan muchas grandes empresas para el almacenamiento y análisis de enormes cantidades de datos multi-petabytes, debido a su velocidad: el año pasado, Spark alcanzó un récord mundial al completar una prueba de clasificación de 100 terabytes de datos en 23 minutos, cuando el récord anterior era de 71 minutos con Hadoop. Además, es idóneo para aplicaciones de Machine Learning (Aprendizaje Automático), una de las prácticas de mayor crecimiento y más emocionante dentro de las ciencias de la computación (ver post anterior).

Apache Spark está diseñado desde sus inicios para ser fácil de instalar y usar – siempre que se tengan ciertos conocimientos de informática- y para ser utilizado en múltiples aplicaciones de negocio. Muchos proveedores ofrecen sus propias versiones (al igual que  Hadoop), orientados a industrias concretas, configuraciones customizadas para proyectos y usos concretos, y servicios de consultoría para su implantación y funcionamiento .

Spark utiliza la computación en clúster (grupos de máquinas unidas por una red de alta capacidad, que funcionan como una gran máquina) para obtener una mayor potencia de cálculo y almacenamiento, lo cual se traduce en que puede utilizar los recursos de muchos procesadores unidos entre sí. Es una solución escalable, es decir, que si se necesita más capacidad, sólo se tienen que añadir más procesadores en el sistema. Con el almacenamiento distribuido, los grandes ficheros de datos recogidos para el análisis se almacenan en muchos discos duros físicos individuales más pequeños, lo cual acelera las operaciones de lectura/escritura, porque la «cabeza» que lee la información de los discos tiene menos distancia física para desplazarse sobre la superficie del disco. Al igual que con la potencia de procesamiento, se puede añadir más capacidad de almacenamiento cuando sea necesario y, además, utiliza hardware comercial (discos duros estándar) que mantiene bajos los costes de infraestructura.

cluster
A diferencia de Hadoop, Spark no viene con su propio sistema de archivos: en vez de eso, se puede integrar con muchos sistemas de archivos incluyendo el de Hadoop HDFS, MongoDB y el sistema S3 de Amazon. Otro elemento diferencial es Spark Streaming, que permite que las aplicaciones que se desarrollen realicen análisis en streaming, datos en tiempo real, redes sociales, ficheros de log, etc. En las industrias como el marketing, el análisis en tiempo real proporciona grandes ventajas; por ejemplo, personalizar los anuncios en base al comportamiento real del usuario, en lugar de en el comportamiento histórico, aumentando la posibilidad de obtener una compra.

Una breve introducción de Apache Spark, el futuro del Big Data, que espero que resulte útil.