Big Data

Apache Spark VS Hadoop Map Reduce

Conoce las principales diferencias que existen entre Apache Spark y Hadoop para procesamientos Big Data.

Publicado el 19 de Marzo de 2019
Compartir

Conoce las principales diferencias que existen entre Apache Spark y Hadoop para procesamientos Big Data.

Similitudes entre Apache Spark y Hadoop

Antes de conocer las diferencias existentes entre ambos sistemas, vamos a ver sus similitudes:

  • Ambos son frameworks para el procesamiento de Big Data que tienen arquitectura en clúster, es decir, que tienen múltiples nodos.
  • Ambos son escalables y tolerantes a fallos.

Diferencias entre Apache Spark y Hadoop

El uso de Spark es ventajoso frente a Hadoop debido a tres razones:

  • La forma de procesar los datos también, Spark es más rápido.
  • El estilo de programación, las APIs son más sencillas de usar.
  • Spark dispone de componentes específicos, como Mlib para aprendizaje automático, GraphX para grafos, Spark Streaming para tiempo real y Spark SQL.

No obstante, ambas tecnologías se pueden combinar, ya que es habitual usar HDFS como sistema de almacenamiento de ficheros y Spark para el procesamiento de datos.

Problemas de velocidad en MapReduce

La aparición de Spark fue posterior al de Hadoop, y fue debido a que hubo problemas de velocidad en el paradigma MapReduce que utiliza Apache Hadoop. Estos problemas de velocidad se dan en casos con muchas operaciones de escritura y lectura de datos en disco.

Los principales casos en los que hay limitaciones de la velocidad en MapReduce son:

  • Procesos iterativos, que requieren almacenamiento tras cada iteración.
  • Procesos intensivos en consultas, ya que hay varios pasos intermedios hasta obtener los resultados finales. Si en lugar de guardar los resultados en disco se guardan en memoria, las operaciones sucesivas se pueden hacer de forma más rápida.

Eficiencia de Spark

Las claves de la eficiencia de Spark son varias:

  • Utiliza memoria en lugar del disco para lo resultados intermedios.
  • El tipo de datos que utiliza el núcleo de Spark, conocido como Spark Core, que son los RDD o Resilient Distributed Datasets.
  • El planificador de grafos, DAG Scheduler, que optimiza las etapas en la ejecución.

Funcionamiento de Spark

En los RRD se dividen los datos en particiones en nodos del clúster, permitiendo operaciones en paralelo, y además se crea un grafo de etapas de trabajo a ejecutar en cada nodo del clúster, a partir las tareas submitidas.

Los grafos se denominan DAG (Directed Acyclic Graph) o grafos acíclicos dirigidos, y hay una componente de Spark, el DAG Scheduler, que genera un plan de ejecución con la secuencia óptima de operaciones que más rápido se pueden ejecutar.

La velocidad sobre las operaciones de los RDD depende de si estas afectan a una o varias particiones. En este sentido se habla de dos tipos de transformaciones:

  • Narrow transformations o transformación estrecha, cuando no es necesario mezclar los datos, por ejemplo, filtrar los valores que cumplen una condición o transformar una escala.
  • Wide transformations o transformaciones anchas, en el caso de que sí que sea necesario mezclar datos de diferentes particiones, como en un groupBy en un join.
  • La operación más costosa es mezclar datos de diferentes particiones, por lo que el planificador minimiza este tipo de operaciones.

Se sigue la siguiente secuencia:

Por ejemplo, si quisiéramos hacer un filtro sobre resultado de unir dos RDD, tendríamos dos alternativas, primero filtrar y luego hacer la unión o primero hacer la unión y luego filtrar. La primera opción es más rápida, ya que el join es más lento.

Para conseguir está optimización Spark tiene una estrategia de ejecución, conocida como lazy evaluation, en la que las operaciones no se ejecutan inmediatamente, si no que se espera que el driver pida los resultados, y es esta espera la que permite al planificador optimizar la ejecución de las tareas.

  • Primero hacer las transformaciones narrow sobre cada RDD.
  • Después se hacen las transformaciones wides sobre el conjunto de RDDs.

Aprende a programar scripts de procesamiento de datos capaces de ejecutarse de forma clusterizada mediante el framework Apache Spark.

curso-spark-sql

Recuerda que puedes comenzar este curso con tu suscripción de OpenWebinars. Si todavía no estás suscrito, aprovecha para hacerlo ahora.


Compartir este post

También te puede interesar...

Especialista en Automatización DevOps

Especialista en Automatización DevOps

17 horas y 57 minutos · Carrera

Conviértete en un especialista DevOps y da un salto en tu lista

Tecnología

Datasets y DataFrames en Apache Spark

04 Julio 2018 Abraham Requena Mesa
Artículos
Ver todos