7www.coiicv.org
Bit@cora Julio 2016
El análisis de grandes volúmenes de datos
ha ido avanzando en los últimos años de
la misma forma que ha ido aumentando la
cantidad de información a analizar. Para ello
han ido surgiendo herramientas que per-
miten procesar estos datos de forma dis-
tribuida. Hadoop fue una de las primeras
plataformas para el análisis y cálculo de
Big Data. Posteriormente han ido surgiendo
nuevas herramientas que mejoran a nivel
de rendimiento y eficiencia el procesamien-
to de grandes cantidades de datos.
Desde la aparición de estas herramientas,
han surgido nuevos modelos de programa-
ción como el de MapReduce como marco
de trabajo para la computación distribuida
para dar soporte a grandes volúmenes de
datos en grupos de computadoras.
Apache Hadoop es un framework de pro-
cesamiento y almacenamiento distribuido
que soporta aplicaciones con uso intensi-
vo de datos y facilita la programación de
tareas mediante el paradigma MapReduce.
Emplea el sistema de ficheros HDFS y está
diseñado para trabajar en alta disponibili-
dad, con tolerancia a fallos y en su versión
reciente permite gestionar recursos de ma-
nera muy eficiente.
Uno de los problemas que tenemos en Ha-
doop es el alto coste de las operaciones
map-reduce, lo que da lugar a problemas
de performance y de latencia para grandes
cantidades de datos. Mientras el volumen,
la variedad y la velocidad de los datos va en
aumento, Hadoop, como framework de pro-
cesamiento por lotes, no puede enfrentar-
se completamente a las necesidades de un
análisis en tiempo real. De esta forma, en
los últimos años han sido surgiendo nuevas
herramientas como alterativas a Hadoop
para el manejo de datos masivos. Una de
ellas es Spark.
Apache Spark es un proyecto que trata de
simplificar el modelo de Hadoop, aprove-
chando sus ventajas y tratando de resolver
sus inconvenientes. Spark logra hacer un
uso intensivo de memoria evitando así es-
crituras a disco, facilitando la creación de
procesos con una sencilla y elegante API en
Scala, e integrándose con facilidad con el
ecosistema de Hadoop.
Herramientas para computación distribuida.
De Hadoop a Spark
José Manuel Ortega Candel
Centers Technician de Everis.
@jmortegac
www.linkedin.com/in/jmortega1
8 www.coiicv.org
Bit@cora Julio 2016
Entre las ventajas que tiene Spark frente
a Hadoop/MapReduce se pueden destacar:
•	 La principal ventaja de Spark es la ve-
locidad de procesamiento si la com-
paramos con Hadoop/MapReduce ya
que ofrece la posibilidad de cachear da-
tos en memoria para ser utilizados en
futuras iteraciones.
•	 Rapidez: Es capaz de ejecutar los tra-
bajos por lotes de procesamiento de
entre hasta 100 veces más rápido que
el motor MapReduce de Hadoop, princi-
palmente mediante la reducción del nú-
mero de escrituras y lecturas de disco.
•	 Real time batch procesing: Es capar
de manipular los datos en tiempo real
utilizando Spark Streaming. Esta capa-
cidad permite que las aplicaciones pa-
sen datos para llevar a cabo análisis de
los mismos al mismo tiempo que son
recogidos.
•	 Alta tolerancia a fallos: En lugar de
la persistencia o la existencia de chec-
kpoints en resultados intermedios,
Spark recuerda la secuencia de opera-
ciones que llevó a un determinado con-
junto de datos. Así que cuando falla un
nodo, Spark reconstruye el conjunto de
datos basado en la información almace-
nada. Esto proporciona una cierta es-
tabilidad que permite que no se caida
todo un proceso cuando aparecen fallos
en alguno de los nodos.
•	 Facilidad de uso: La implementación
tanto de stream como de batch pro-
cessing en la parte superior de Spark
podría eliminar gran parte de la com-
plejidad que las organizaciones se es-
tán encontrando en las abstracciones
de MapReduce, y permitirá simplificar el
despliegue, mantenimiento y desarrollo
de aplicaciones.
Spark es un framework de computación
distribuida escrito en Scala que facilita el
análisis de grandes conjuntos de datos in-
tegrando diferentes paradigmas como Base
de datos NoSQL, analítica en tiempo real,
machine learning o análisis de grafos. Se
puede ejecutar de manera local o en cluster
sobre Apache Mesos, Hadoop YARN, o en
modo Standalone.
Spark extiende el modelo MapReduce
que ofrece Hadoop para apoyar más
tipos de cálculos utilizando un paradigma
de programación funcional. Utiliza el
almacenamiento en caché en memoria para
mejorar el rendimiento de los algoritmos
iterativos, que lo hace ideal para las
tareas de teoría de datos, sobre todo de
aprendizaje automático.
Entre las características que ofrece Spark
se pueden destacar:
•	 Spark SQL: permite la consulta de da-
tos estructurados utilizando lenguaje
SQL o una API, que se puede usar con
Java, Scala, Python o R.
•	 Spark Streaming: ofrece la posibilidad
de gestionar grandes datos en tiempo
real. Esto facilita que los datos se ana-
licen según van entrando, sin tiempo
de latencia y a través de un proceso en
continuo movimiento.
Con respecto al aprendizaje automático
(machine learning), Spark ofrece unos
tiempos de cálculo en memoria mucho
más rápidos que cualquier otra plata-
forma. El almacenamiento de los da-
tos en la memoria caché hace que la
iteración de los algoritmos de machine
learning con los datos sea más eficien-
te, debido a que las transformaciones
que se van produciendo de esos datos
también se almacenan en memoria, sin
tener que acceder a disco.
9www.coiicv.org
Bit@cora Julio 2016
•	 Conectividad, multiplataforma:
Spark puede interactuar con datos re-
gistrados en el HDFS (Sistema de fiche-
ros de Hadoop) y bases de datos como
HBase y Cassandra. También proporcio-
na un conjunto de APIs y una consola
interactiva para ejecutar aplicaciones
en Java, Python y Scala.
Conclusiones
Si comparamos ambos sistemas, vemos
que Hadoop distribuye los datos a la vez
que son almacenados, mientras que Spark
tiene una distribución de datos en memoria
y está orientado al procesamiento de datos
en tiempo real.
Apache Spark es una alternativa interesan-
te, especialmente en procesos iterativos
que hacen una reutilización de los datos,
como algoritmos de aprendizaje automá-
tico y machine learning. Además es una
plataforma de computación distribuida de
código abierto que ofrece características
más potentes que muchas otras soluciones
propietarias. Está en constante desarrollo y
se actualiza frecuentemente.
Spark proporciona una API con la que po-
dremos realizar aplicaciones con un alto ni-
vel de abstracción. El programador puede
centrarse en el desarrollo de la aplicación
y Spark se encargará del procesamiento en
paralelo distribuyendo los datos a lo largo
del cluster.

Herramientas para computación distribuida. De Hadoop a Spark

  • 1.
    7www.coiicv.org Bit@cora Julio 2016 Elanálisis de grandes volúmenes de datos ha ido avanzando en los últimos años de la misma forma que ha ido aumentando la cantidad de información a analizar. Para ello han ido surgiendo herramientas que per- miten procesar estos datos de forma dis- tribuida. Hadoop fue una de las primeras plataformas para el análisis y cálculo de Big Data. Posteriormente han ido surgiendo nuevas herramientas que mejoran a nivel de rendimiento y eficiencia el procesamien- to de grandes cantidades de datos. Desde la aparición de estas herramientas, han surgido nuevos modelos de programa- ción como el de MapReduce como marco de trabajo para la computación distribuida para dar soporte a grandes volúmenes de datos en grupos de computadoras. Apache Hadoop es un framework de pro- cesamiento y almacenamiento distribuido que soporta aplicaciones con uso intensi- vo de datos y facilita la programación de tareas mediante el paradigma MapReduce. Emplea el sistema de ficheros HDFS y está diseñado para trabajar en alta disponibili- dad, con tolerancia a fallos y en su versión reciente permite gestionar recursos de ma- nera muy eficiente. Uno de los problemas que tenemos en Ha- doop es el alto coste de las operaciones map-reduce, lo que da lugar a problemas de performance y de latencia para grandes cantidades de datos. Mientras el volumen, la variedad y la velocidad de los datos va en aumento, Hadoop, como framework de pro- cesamiento por lotes, no puede enfrentar- se completamente a las necesidades de un análisis en tiempo real. De esta forma, en los últimos años han sido surgiendo nuevas herramientas como alterativas a Hadoop para el manejo de datos masivos. Una de ellas es Spark. Apache Spark es un proyecto que trata de simplificar el modelo de Hadoop, aprove- chando sus ventajas y tratando de resolver sus inconvenientes. Spark logra hacer un uso intensivo de memoria evitando así es- crituras a disco, facilitando la creación de procesos con una sencilla y elegante API en Scala, e integrándose con facilidad con el ecosistema de Hadoop. Herramientas para computación distribuida. De Hadoop a Spark José Manuel Ortega Candel Centers Technician de Everis. @jmortegac www.linkedin.com/in/jmortega1
  • 2.
    8 www.coiicv.org Bit@cora Julio2016 Entre las ventajas que tiene Spark frente a Hadoop/MapReduce se pueden destacar: • La principal ventaja de Spark es la ve- locidad de procesamiento si la com- paramos con Hadoop/MapReduce ya que ofrece la posibilidad de cachear da- tos en memoria para ser utilizados en futuras iteraciones. • Rapidez: Es capaz de ejecutar los tra- bajos por lotes de procesamiento de entre hasta 100 veces más rápido que el motor MapReduce de Hadoop, princi- palmente mediante la reducción del nú- mero de escrituras y lecturas de disco. • Real time batch procesing: Es capar de manipular los datos en tiempo real utilizando Spark Streaming. Esta capa- cidad permite que las aplicaciones pa- sen datos para llevar a cabo análisis de los mismos al mismo tiempo que son recogidos. • Alta tolerancia a fallos: En lugar de la persistencia o la existencia de chec- kpoints en resultados intermedios, Spark recuerda la secuencia de opera- ciones que llevó a un determinado con- junto de datos. Así que cuando falla un nodo, Spark reconstruye el conjunto de datos basado en la información almace- nada. Esto proporciona una cierta es- tabilidad que permite que no se caida todo un proceso cuando aparecen fallos en alguno de los nodos. • Facilidad de uso: La implementación tanto de stream como de batch pro- cessing en la parte superior de Spark podría eliminar gran parte de la com- plejidad que las organizaciones se es- tán encontrando en las abstracciones de MapReduce, y permitirá simplificar el despliegue, mantenimiento y desarrollo de aplicaciones. Spark es un framework de computación distribuida escrito en Scala que facilita el análisis de grandes conjuntos de datos in- tegrando diferentes paradigmas como Base de datos NoSQL, analítica en tiempo real, machine learning o análisis de grafos. Se puede ejecutar de manera local o en cluster sobre Apache Mesos, Hadoop YARN, o en modo Standalone. Spark extiende el modelo MapReduce que ofrece Hadoop para apoyar más tipos de cálculos utilizando un paradigma de programación funcional. Utiliza el almacenamiento en caché en memoria para mejorar el rendimiento de los algoritmos iterativos, que lo hace ideal para las tareas de teoría de datos, sobre todo de aprendizaje automático. Entre las características que ofrece Spark se pueden destacar: • Spark SQL: permite la consulta de da- tos estructurados utilizando lenguaje SQL o una API, que se puede usar con Java, Scala, Python o R. • Spark Streaming: ofrece la posibilidad de gestionar grandes datos en tiempo real. Esto facilita que los datos se ana- licen según van entrando, sin tiempo de latencia y a través de un proceso en continuo movimiento. Con respecto al aprendizaje automático (machine learning), Spark ofrece unos tiempos de cálculo en memoria mucho más rápidos que cualquier otra plata- forma. El almacenamiento de los da- tos en la memoria caché hace que la iteración de los algoritmos de machine learning con los datos sea más eficien- te, debido a que las transformaciones que se van produciendo de esos datos también se almacenan en memoria, sin tener que acceder a disco.
  • 3.
    9www.coiicv.org Bit@cora Julio 2016 • Conectividad, multiplataforma: Spark puede interactuar con datos re- gistrados en el HDFS (Sistema de fiche- ros de Hadoop) y bases de datos como HBase y Cassandra. También proporcio- na un conjunto de APIs y una consola interactiva para ejecutar aplicaciones en Java, Python y Scala. Conclusiones Si comparamos ambos sistemas, vemos que Hadoop distribuye los datos a la vez que son almacenados, mientras que Spark tiene una distribución de datos en memoria y está orientado al procesamiento de datos en tiempo real. Apache Spark es una alternativa interesan- te, especialmente en procesos iterativos que hacen una reutilización de los datos, como algoritmos de aprendizaje automá- tico y machine learning. Además es una plataforma de computación distribuida de código abierto que ofrece características más potentes que muchas otras soluciones propietarias. Está en constante desarrollo y se actualiza frecuentemente. Spark proporciona una API con la que po- dremos realizar aplicaciones con un alto ni- vel de abstracción. El programador puede centrarse en el desarrollo de la aplicación y Spark se encargará del procesamiento en paralelo distribuyendo los datos a lo largo del cluster.