Introducción a Apache Spark y sus diferencias con Hadoop

2/25
Recursos
Transcripción

¿Qué es Apache Spark?

Apache Spark es un potente marco de trabajo especializado en el procesamiento de grandes volúmenes de datos, comúnmente llamado big data. Es célebre por su capacidad de realizar operaciones en tiempo casi real, una característica que lo diferencia de otros marcos como Hadoop, el cual se centra más en el almacenamiento masivo de datos. Spark permite procesar información de manera mucho más rápida y eficiente al manejar tareas dentro de la memoria RAM, contribuyendo significativamente a mejorar la velocidad de procesamiento de los datos.

¿Con qué lenguajes se puede usar Spark?

Una de las grandes ventajas de Spark es su versatilidad en cuanto a los lenguajes de programación con los que se puede integrar. Spark soporta los siguientes lenguajes:

  • Scala: Es el lenguaje nativo de Spark y funciona directamente en la máquina virtual de Java (JVM).
  • Java: Aunque es compatible, el desarrollo con Java suele ser más complejo, especialmente para programadores principiantes.
  • Python: Este lenguaje de alto nivel es más accesible y popular, facilitando la adopción de Spark para aquellos que ya están familiarizados con Python.
  • R: Ideal para tareas estadísticas y de análisis de datos, R también es compatible con Spark.

Gracias a esta diversidad, Spark se adapta a las necesidades y preferencias de los diferentes desarrolladores, permitiendo un uso eficiente de sus funcionalidades.

¿Cuáles son las limitaciones de Spark?

Aunque Spark ofrece grandes ventajas para el procesamiento de datos, también tiene ciertas limitaciones que es importante considerar:

  1. No es una base de datos OLTP: Las aplicaciones OLTP (Online Transaction Processing) requieren actualizar, ingresar y borrar datos en tiempo real, algo para lo que Spark no está diseñado. Funciona mejor cuando se conecta a estructuras tipo data warehouse o data lake.

  2. Gestión de memoria: Spark sobresale al trabajar en memoria RAM, pero esto también puede ser una limitación si las necesidades de procesamiento superan la capacidad disponible de RAM. En tales casos, debe optarse por un procesamiento híbrido que también utilice almacenamiento en disco.

  3. No depende de un sistema de archivos específico: Spark no está restringido a un sistema de archivos particular, permitiendo flexibilidad al poder trabajar con diferentes sistemas como Amazon Web Services (AWS), HDFS (de Hadoop), bases de datos data warehouse y archivos de texto.

¿Qué diferencia a Spark de Hadoop?

La relación entre Spark y Hadoop es interesante, ya que Spark puede considerarse una evolución de Hadoop, superando algunas de sus limitaciones inherentes:

  • Velocidad de procesamiento: Spark procesa datos directamente en la memoria RAM para reducir el tiempo de espera, mientras que Hadoop realiza operaciones desde el disco duro, lo que generalmente es más lento.

  • Módulos integrados: Spark incluye de manera nativa módulos para machine learning, streaming de datos y procesamiento de grafos, lo que facilita tareas complejas y reduce la necesidad de herramientas externas adicionales. Hadoop, por su parte, requiere herramientas complementarias como Mahout para machine learning.

  • Flexibilidad: Mientras que Hadoop tiene un enfoque más rígido basado en un sistema de almacenamiento distribuido, Spark permite integrarse con diferentes sistemas de archivos y servicios, aumentando así su adaptabilidad en distintos entornos computacionales.

¿Cuáles son las novedades de Spark 3.0?

La versión más reciente de Spark, liberada en junio de 2020, trae consigo varias mejoras significativas en optimización y funcionalidad:

  • Mejoras en el planificador de tareas: El optimizador automático de Spark ahora es más robusto, corrigiendo eficientemente detalles en las tareas que ejecutan los usuarios.

  • Optimizaciones adicionales: Se han implementado mejoras internas que optimizan el procesamiento de la información, incrementando la eficiencia y rapidez con la que Spark maneja operaciones complejas.

Estas actualizaciones perfeccionan la habilidad de Spark para realizar tareas de big data de manera más eficiente, ofreciendo un rendimiento superior para los desarrolladores que deciden integrarlo en sus proyectos.

Ahora que conoces más sobre Apache Spark y sus capacidades, te animo a seguir explorando esta potente herramienta para big data y considerar cómo puede optimizar tus procesos de tratamiento de datos. ¡El conocimiento es el primer paso hacia una implementación exitosa!

Aportes 29

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

OLAP: Es un sistema de recuperación de datos y análisis de datos en linea.
OLTP: Es un sistema transaccional en línea y gestiona la modificación de la base de datos

<h1>Resumen de la clase</h1>

Apuntes de la clase

Suelo tomar los mejores comentarios y los agrego a mis apuntes…

Apache Spark es un framework de trabajo para el desarrollo de grandes datos o big data y se preocupa de la velocidad y continuidad del procesamiento de datos, en contraparte de Hadoop que se preocupa por un almacenamiento grande de datos.

Podemos utilizar multiples lenguajes

  • Java
  • Scala (Spark corre nativamente aquí)
  • Python
  • R

¿Que nos es Apache Spark? No es una base de datos

  • OLAP: Es un sistema de recuperación de datos y análisis de datos en linea.

  • OLTP: Es un sistema transaccional en línea y gestiona la modificación de la base de datos.

Spark debe estar conectado a un Data warehouse para poder aprovechar toda su funcionalidad.

Historia de Apache Spark

<h3>Spark VS Hadoop</h3>
  • Spark se enfoca en procesamiento de datos desde la memoria ram.

  • Posee naturalmente un modulo para ML, streaming y grafos.

  • No depende de un sistema de archivos.

Comparto notas sobre Apache Spark

  • Qué es y que no es

  • Sobre que lenguajes corre Spark

  • Un comparativo entre Spark y Hadoop

Apache Spark:

definido como “Motor de procesamiento unificado para procesamiento de Big Data” por el paper premiado por la ACM el 2016.

Spark es un Framework de procesamiento distribuido construido en Scala, basado en la programación funcional.

Todo nace del paper de Google File system y Google Map reduce el cual es la inspiración para el desarrollo de Hadoop por Yahoo! Posterior a ello parte del equipo de Hadoop empiezan el Proyecto Spark en la universidad de Berkeley en el laboratorio AMPLab.

Hadoop es la composición de MapReduce + HDFS (Hadoop Distributed File System)

Spark almacena los estados entre procesamiento en memoria, mientras que MapReduce lo hace en disco.

A continuación, se describen los siguientes modelos:

OLTP (On-Line Transaction Processing). Se caracteriza por bases de datos transaccionales con una gran cantidad de transacciones cortas (INSERT, DELETE, UPDATE) on-line. Suelen ser BD de sistemas críticos como ERP, CRM…

OLAP (On-line Analytical Processing). Se caracteriza por ser un modelo con volumen de transacciones bajo. Hay dos modelos: multidimensional o tabular y están optimizadas para leer datos que normalmente implican agregaciones y donde el tiempo de respuesta de consulta de datos debe ser rápido (es una medida de efectividad). Normalmente hay información histórica agregada almacenada en esquemas multidimensionales (generalmente esquema en estrella).

Fuente

Wow las bases de datos OLTP es la enfocada en transacciones, la OLAP es enfocada en analitica.

Framework de desarrollo de bigdata.

Spark se puede utilizar con lenguajes:
Java
Scala
Python
R

Spark es un **framework **(conjunto de tecnologías) de desarrollo de **procesos **de Big Data enfocado en la **velocidad **y **continuidad **del proceso.

Les comparto un fragmento del libro SPARK: The definitive Guide. Bill Chambers y Matei Zaharia (pag. 180):

“Spark está diseñado para funcionar como una base de datos online analytic processing (OLAP), y no una online transaction processing (OLTP) database. Esto significa que no está orientado a un propósito de realizar queries de extrema baja latencia. A pesar de que el soporte para la modificación en el lugar seguramente será algo que surja en el futuro, no es algo que esté disponible actualmente.”
Por ejemplo, transacciones de banco (OLTP) son operaciones que no podemos arriesgarnos a que fallen si implementamos Spark de por medio, ya que podría morir el nodo trabajador de Spark o algún otro fallo.

Creo que hay varios vacios en la ruta de data engineering,

Al menos una clase dedicada al ecosistema de Databricks estaria bien.

Spark se preocupa de mantener la información en la RAM

No entiendo por que Platzi no ha recurrido a REGRABAR o pasar por QA cada clase. No dudo del expertis del profesor pero que se trabe y piense demasiado las cosas me hace dudar y hasta me desespera un poco. NADA EN CONTRA DEL PROFESOR.

Me encantó la manera detallada en la que explica el profesor, normalmente no hago comentarios sin contenido pero lo tenía que decir, un buen curso de Spark no donde sea se consigue. Felicidades a Platzi y al profesor y mucha suerte de quiénes lo podemos aprender.

Regularmente escojo los cursos como escojo la comida en un nuevo restaurante, cierro los ojos y pongo el dedo al azar, igualmente lo hice acá y cayo en un curso buenísimo. 😃

La verdad yo no tenía idea sobre la diferencia entre data lake y data warehouse: https://aws.amazon.com/big-data/datalakes-and-analytics/what-is-a-data-lake/

muy interesante la clase

Marco de trabajo en Spark: Conjunto de tecnologías o desarrollos enfocados al trabajo de datos.

Buen día. Es al revés: Spark está hecho para interactuar con el enfoque OLAP, ya que es adecuado para el manejo de Big Data y analítica. El enfoque OLTP es para bases de datos transaccionales, por ejemplo, aquellas que manejan el almacenamiento de aplicaciones web.

buena intro!

Oscar eres un gran profesor, solo verte 2 minutos y se te nota el proceso de pensamiento, reflexión y pasión por el tema…Gracias!!!

Muy buena introducción

Big Data es un concepto abstracto o una filosofía. Spark y Hadoop traen a la realidad ese concepto.

Ya en trabajado con Spark en un entrenamiento acelerado.
Llego para llevar varcios teóricos y fortalecer lo aprendido.

Buen ritmo y seguimos.

Documentación oficial

Apache Spark is a unified analytics engine for large-scale data processing. It provides high-level APIs in Java, Scala, Python and R, and an optimized engine that supports general execution graphs. It also supports a rich set of higher-level tools including Spark SQL for SQL and structured data processing, MLlib for machine learning, GraphX for graph processing, and Structured Streaming for incremental computation and stream processing.

https://spark.apache.org/docs/latest/

Spark se enfoca en la velocidad de procesamiento y la distribución de datos entre los clusters.

No depende de un sistema de archivos.

segunda clase y ya amo el curso, amo que se expliquen a detalles los conceptos 💚