herramientas para computación distribuida. de hadoop a spark

3
7 www.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

Upload: jose-manuel-ortega-candel

Post on 05-Apr-2017

58 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Herramientas para computación distribuida. De Hadoop a Spark

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 CandelCenters Technician de Everis.

@jmortegacwww.linkedin.com/in/jmortega1

Page 2: Herramientas para computación distribuida. De Hadoop a Spark

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.

Page 3: Herramientas para computación distribuida. De Hadoop a Spark

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.