Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información. Aceptar

Apache Spark VS Hadoop Map Reduce

Pedro Santos González
  • Escrito por Pedro Santos González el 19 de Marzo de 2019
  • 1 min de lectura | Big Data
Apache Spark VS Hadoop Map Reduce
El reproductor de video será cargado en breves instantes.

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.

Relacionado

Te dejamos una selección de cursos, carreras y artículos

Especialista en Automatización DevOps

Especialista en Automatización DevOps

carrera

Incluye 6 cursos:

  • Fundamentos Generales: Orquestación y Automatizacion IT
  • Curso de Ansible
  • Curso Online de Vagrant

y 3 cursos más!

Duración: 22 horas y 32 minutos

Datasets y DataFrames en Apache Spark

Datasets y DataFrames en Apache Spark

Big Data

04 de Julio de 2018

Te contamos que son los Datasets y DataFrames en Apache Spark. Conoce sus características y cómo usarlos en la práctica que te proponemos con este framework revolucionario del big data.

Curso de Introducción al Big Data

Curso de Introducción al Big Data

curso

Aprende los fundamentos del Big Data y que tecnologías se usan en la actualidad en este sector.

Duración: 4 horas y 42 minutos

Estas son algunas de las empresas que ya confían en OpenWebinars

Profesores y profesionales

Nuestros docentes son profesionales que trabajan día a día en la materia que imparten

Conviértete en profesor de OpenWebinars