3 Spark I Componentes  Sum

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

¿Cuál es una característica principal de Apache Spark que lo diferencia de MapReduce?

  • Spark es un motor unificado de cálculo en memoria. (correct)
  • MapReduce ofrece bibliotecas para procesamiento paralelo y distribuido.
  • Spark solo puede procesar datos de fuentes HDFS.
  • MapReduce es más intuitivo para la programación distribuida.

¿Cuál de las siguientes NO es una forma en que el motor de Spark puede ser utilizado?

  • Mediante una instrucción de la API de programación que recibe una consulta SQL como string.
  • Directamente a través de especificaciones SQL contra Spark (Hive).
  • Exclusivamente mediante el uso de MapReduce sin APIs. (correct)
  • A través de la API de DataFrames (R, Python, Java y Scala).

¿Qué ocurre con los cálculos en Spark en relación con la memoria y el disco?

  • Todos los cálculos se escriben inmediatamente en disco para asegurar la persistencia de los datos.
  • Todos los cálculos se llevan a cabo en memoria y solo se escriben resultados a disco cuando es necesario. (correct)
  • La decisión de usar memoria o disco se basa en el tamaño de los datos, independientemente de la operación.
  • Los cálculos se realizan únicamente en disco, similar a MapReduce.

¿Cuál es el componente principal de Spark donde residen las estructuras de datos fundamentales, como los RDDs?

<p>Spark Core. (B)</p> Signup and view all the answers

¿Cómo se gestionan los recursos para la ejecución de Spark en un clúster?

<p>Mediante un gestor de recursos que asigna máquinas, CPU y memoria a Spark. (A)</p> Signup and view all the answers

¿Cuál es la función principal de Spark SQL y su API estructurada?

<p>Manejar tablas de datos distribuidas, estructuradas en columnas. (D)</p> Signup and view all the answers

¿Qué módulo de Spark ha sido reemplazado por Spark Structured Streaming?

<p>Spark Streaming. (D)</p> Signup and view all the answers

¿Qué representa el término 'driver' en la arquitectura de Spark?

<p>El código del programa principal (secuencial) que utiliza la biblioteca de Spark. (D)</p> Signup and view all the answers

¿Cuál es la función del objeto sparkSession en Spark?

<p>Establecer la comunicación con el gestor de clúster y configurar los recursos. (B)</p> Signup and view all the answers

¿Qué término describe el proceso JVM que se ejecuta en cada nodo y ocupa los recursos asignados?

<p>Executor. (A)</p> Signup and view all the answers

¿Qué concepto representa la unidad mínima de ejecución de trabajos en Spark?

<p>Task. (A)</p> Signup and view all the answers

¿Qué son los RDDs (Resilient Distributed Datasets)?

<p>Abstracciones fundamentales de Spark, colecciones no ordenadas de objetos distribuidas en memoria RAM. (D)</p> Signup and view all the answers

¿Qué significa que un RDD sea 'inmutable'?

<p>Su contenido no se puede modificar una vez creado; se obtienen nuevos RDDs aplicando transformaciones. (D)</p> Signup and view all the answers

¿Cuál es la recomendación de los creadores de Spark respecto al uso de RDDs a partir de la versión 2.0?

<p>Usar siempre DataFrames y su API correspondiente en lugar de RDDs. (C)</p> Signup and view all the answers

¿Qué caracteriza a una transformación 'narrow' en Spark?

<p>No requiere movimiento de datos, aplicándose localmente a cada partición. (A)</p> Signup and view all the answers

¿Cuál es el destino del resultado de una 'acción' en Spark?

<p>Se devuelve al 'driver'. (D)</p> Signup and view all the answers

¿Qué es un DAG (Directed Acyclic Graph) en el contexto de Spark?

<p>Un grafo que representa la secuencia de transformaciones para la resiliencia. (C)</p> Signup and view all the answers

¿Cuál es el propósito fundamental de la función cache() en Spark?

<p>Almacenar un RDD en la memoria RAM de los 'workers' para evitar recálculos. (C)</p> Signup and view all the answers

En el contexto de Spark, ¿qué implica la serialización del código de una función?

<p>Su conversión a un formato que permite enviarlo por la red a los nodos para su ejecución. (C)</p> Signup and view all the answers

¿Qué tipo de RDD se considera un PairRDD en Spark?

<p>Un RDD de tuplas de dos elementos (clave, valor). (B)</p> Signup and view all the answers

¿Cuál es el objetivo principal de las operaciones join y reduceByKey en Spark?

<p>Agrupar y combinar datos con la misma clave. (A)</p> Signup and view all the answers

¿Qué variable se usaba en versiones anteriores de Spark para efectuar la conexión con el gestor de clúster, y ahora está envuelta por sparkSession?

<p>SparkContext (A)</p> Signup and view all the answers

¿Qué representa el término 'job' en el contexto de Spark?

<p>Todo el procesamiento necesario para llevar a cabo una acción del usuario. (A)</p> Signup and view all the answers

¿Qué define un 'stage' en el procesamiento de Spark?

<p>El procesamiento que puede llevarse a cabo sin mover datos entre nodos. (B)</p> Signup and view all the answers

¿Qué tarea realiza la operación map sobre un RDD en Spark?

<p>Ejecutar una función sobre cada elemento del RDD, transformándolo. (D)</p> Signup and view all the answers

¿Cuál de las siguientes opciones describe mejor el propósito de la acción collect en Spark?

<p>Devolver todos los elementos contenidos en el RDD como una colección del lenguaje al 'driver'. (B)</p> Signup and view all the answers

En términos de diseño de aplicaciones Spark con RDD, ¿qué restricción importante existe para realizar operaciones de agregación y otras operaciones entre RDDs?

<p>Necesita un RDD con formato 'pairRDD' para poder realizar operacione. (B)</p> Signup and view all the answers

Según el contenido, ¿qué paso es necesario para poder realizar un operación de join entre dos RDDs que tienen datos en formato diferente?

<p>Realizar una transformación para manipular cada RDD para que ambos tengan el mismo formato. (A)</p> Signup and view all the answers

Flashcards

¿Qué es MapReduce?

Paradigma de programación distribuida que presenta deficiencias.

¿Qué es Apache Spark?

Motor unificado de cálculo en memoria para procesamiento paralelo y distribuido.

¿Qué es Spark SQL?

API con funciones para manejar tablas de datos distribuidas con nombre y tipo.

¿Qué es Spark Streaming/Structured Streaming?

Módulo para operar sobre datos en tiempo real.

Signup and view all the flashcards

¿Qué es Spark MLlib?

Módulo con algoritmos de Machine Learning distribuidos.

Signup and view all the flashcards

¿Qué es Spark Core?

Principal módulo que contiene las estructuras de datos fundamentales de Spark.

Signup and view all the flashcards

¿Gestores de recursos de Spark?

Representa tres gestores de recursos de un clúster.

Signup and view all the flashcards

¿Qué es un RDD?

Abstracción fundamental de Spark que representa una colección distribuida e inmutable de datos.

Signup and view all the flashcards

¿Qué es una transformación en Spark?

Operación que se ejecuta sobre un RDD y devuelve un nuevo RDD transformado.

Signup and view all the flashcards

¿Qué es una acción en Spark?

Operación que recibe un RDD y devuelve un resultado al driver.

Signup and view all the flashcards

¿Qué es el DAG?

Gráfico de ejecución que mantiene la trazabilidad de las transformaciones en Spark.

Signup and view all the flashcards

¿Qué es una partición en Spark?

Subconjunto de objetos de un RDD presentes en un mismo nodo.

Signup and view all the flashcards

¿Qué es un 'executor' en Spark?

Proceso que se ejecuta en un nodo y ocupa los recursos indicados.

Signup and view all the flashcards

¿Qué es un 'worker' en Spark?

Nodo del clúster en el que se crean 'executors'.

Signup and view all the flashcards

¿Qué es un 'job' en Spark?

Procesamiento necesario para llevar a cabo una acción del usuario.

Signup and view all the flashcards

¿Qué es un 'stage' en Spark?

Procesamiento que puede llevarse a cabo sin mover datos entre nodos.

Signup and view all the flashcards

¿Qué es una 'task' en Spark?

Procesamiento aplicado por un core físico a una partición de un RDD.

Signup and view all the flashcards

¿Qué es la inmutabilidad en RDDs?

Propiedad de que el contenido de un RDD no puede modificarse una vez creado.

Signup and view all the flashcards

Study Notes

Spark I

  • Explora Apache Spark, un framework intuitivo para la programación distribuida que mejora MapReduce.

Introducción y objetivos

  • El objetivo es comprender la superioridad de Spark sobre MapReduce.
  • Identificar los módulos de Spark y sus funciones.
  • Comprender la arquitectura y el funcionamiento interno de Apache Spark.
  • Aplicar funciones comunes de procesamiento de datos con Apache Spark.

Apache Spark

  • Surgió en Berkeley en 2009, para superar las deficiencias de MapReduce.
  • Es un motor de cálculo unificado en memoria y un conjunto de bibliotecas para el procesamiento paralelo y distribuido de datos en clústeres.
  • Es un framework de propósito general capaz de implementar cualquier algoritmo.

Características unificadas de Spark

  • El motor es independiente de la forma en que se use Spark y es compatible con:
    • API de DataFrames (R, Python, Java, Scala).
    • Herramientas externas de consultas SQL (Hive, Tableau, PowerBI).
    • Instrucciones de API de programación que reciben consultas SQL.
  • Se traduce cualquier opción en un grafo de tareas, optimizado automáticamente por Spark.

Proceso En Memoria de Spark

  • Los cálculos se realizan en memoria, los resultados se escriben en disco solo explícitamente o cuando el usuario los requiera.
  • El movimiento de datos (shuffle) se produce solo cuando que es indispensable, a diferencia de MapReduce.
  • Se logra un rendimiento superior en tareas iterativas como el machine learning.

Componentes de Spark

  • Apache Spark es una API distribuida intuitiva, que abstrae la comunicación en red y opera de manera similar a SQL.
  • Existen API para Java, Scala, Python (PySpark) y R (SparkR).

Módulo Spark Core

  • Es el principal, contiene las estructuras de datos fundamentales como RDD (Resilient Distributed Dataset).
  • Las acciones se traducen a operaciones sobre RDD y se ejecutan por el motor.

Gestores de Recursos

  • Los tres módulos inferiores representan los gestores de recursos de un clúster donde se ejecuta Spark.
  • Se encargan de asignar máquinas, CPU y memoria principal a Spark.

Spark SQL y API estructurada

  • API para tablas de datos distribuidas en columnas con nombre y tipo (DataFrames).
  • Incluye una función para ejecutar sentencias SQL en DataFrames.

Spark Streaming

  • Opera de forma distribuida en datos en tiempo real (streams de datos).
  • Reemplazado por Spark Structured Streaming a partir de Spark 2.0 para simplificar el procesamiento de flujos de datos.

Mllib y Graphx

  • Spark MLlib contiene algoritmos distribuidos de Machine Learning.
  • Spark GraphX gestiona el procesamiento de grafos a través de RDD y ha sido reemplazado por GraphFrames.

Arquitectura de Spark

  • Al escribir una aplicación para "Spark", se escribe una aplicación secuencial utilizando las bibliotecas de Spark para el leguaje Java, Scala, Python o R.
  • Al ejecutar el código, se realiza sobre el driver, que puede ser interno o externo al clúster.
  • SparkSession es un objeto necesario en la ejecución, en el momento de su creación se debe indicar la dirección IP y en que puerto se encuentra un clúster de Spark configurado.

Ejecución de Programas en Spark

  • La ejecución es secuencial, excepto cuando el flujo del programa llega a ciertas funciones específicas de Spark que desencadenan la ejecución distribuida.
  • Para la creación del objeto SparkSession, se configura el número de nodos, la memoria RAM y el número de cores físicos que se reservan en cada nodo.
  • Un executor es un proceso de la JVM que se ejecuta en el nodo utilizando los recursos indicados (cores, RAM, disco duro).

Proceso Executor

  • El gestor de clúster crea el proceso executor y muere cuando la aplicación finaliza.
  • La unidad mínima de ejecución de trabajos es una tarea (task), cada una necesita un core libre.
  • Cada nodo del clúster donde se crean executors se denomina worker.

Resilient Distributed Datasets (RDD)

  • Los RDD son la abstracción fundamental de Spark.
  • Un RDD es una colección no ordenada distribuida en la memoria RAM de los nodos del clúster.
  • La colección está dividida en particiones, donde cada una está en la memoria RAM de un nodo distinto.

Características RDD

  • Resilient ('resistente', 'adaptable'): Se puede reconstruir la información aunque algunas máquinas fallen.
  • Distributed ('distribuido'): Los objetos están divididos en la memoria principal de los nodos del clúster.
  • Dataset: Es un conjunto de datos procesándose de forma paralela para transformarlos.
  • Los RDD se almacenan en la memoria RAM de los nodos sin replicación de datos.

Reconstrucción de Particiones RDD

  • Si un nodo falla, las particiones se reconstruyen gracias al DAG.

Inmutabilidad en los RDD

  • No se puede modificar el contenido de un RDD una vez creado.
  • Las transformaciones se ejecutan en paralelo sobre las particiones del RDD, resultando en un nuevo RDD.

Partición

  • Es un subconjunto de los objetos del RDD que están presentes en un mismo nodo.
  • Unidad mínima de datos sobre la que se ejecuta una tarea de transformación.
  • Idealmente, se debe recomendar que cada RDD esté dividido entre doble o el triple que los procesadores del clúster.

DataFrames

  • A partir de Spark 1.6, se introdujeron los DataFrames en Spark.
  • Desde Spark 2.0, se recomienda utilizar DataFrames sobre RDD.
  • Los DataFrames permiten optimizaciones automáticas de código por Catalyst, el analizador de Spark.

Transformaciones en Spark

  • Se ejecutan sobre un RDD y devuelven otro nuevo con cambios.
  • Son 'lazy' (perezosas): no se ejecutan hasta encontrar una acción.
  • Spark registra la transformación en un grafo de ejecución (DAG).

Resiliencia

  • El DAG guarda la secuencia de transformaciones.
  • Las transformaciones sin shuffle (movimiento de datos entre nodos) son 'narrow'.
  • Las operaciones shuffle implican escritura local en disco del emisor y receptor.

Acciones en Spark

  • Reciben un RDD y calculan un resultado, enviado al driver.
  • El tipo de dato enviado al driver no es un RDD, sino un tipo nativo del lenguaje (Java/Scala/Python/R).
  • El resultado debe caber en la memoria de la máquina donde se ejecuta el proceso driver.

Proceso de Transformación

  • Una acción desencadena el cálculo de todas las transformaciones.
  • Después de materializar un RDD, se aplica la transformación y se libera el anterior.
  • Un RDD en caché permanece en la RAM de los nodos sin necesidad de recalcularlo.

Funcionamiento por Defecto del DAG

  • Las operaciones de lectura de datos son el punto de partida.
  • Cualquier operación a un RDD exige reconstruir las transformaciones previas, a menos que haya RDD intermedios en caché.

Utilización

  • El DAG reconstruye cualquier RDD, si este se debe a una referencia a él o por fallo de algún nodo.

Otras Operaciones

  • Ciertas operaciones de la API de Spark no son transformaciones ni acciones, sino que sirven para configurar. como el cache().

Transformaciones RDD Comunes

  • Spark serializa el código de la función y lo envía a los nodos.
  • map: Transforma cada elemento del RDD y devuelve un nuevo RDD.
  • flatMap: Similar a map, pero devuelve un RDD del tipo interior.
  • filter: Devuelve un RDD con los elementos que cumplen una condición (true).
  • sample: Devuelve una muestra aleatoria del RDD.
  • union: Devuelve un RDD con la unión de dos RDD.
  • intersection: Devuelve la intersección de dos RDD.
  • distinct: Elimina elementos repetidos.

Transformaciones Específicas con PairRDD

  • groupByKey: Agrupa por clave para elementos en tuplas.
  • reduceByKey: Agrega los elementos para cada clave con una función especificada.
  • sortByKey: Ordena los elementos por clave.
  • join: Combina dos RDD con elementos que tienen la misma clave.

Acciones en RDD

  • Las acciones llevan resultados al driver, con la limitación de espacio en la memoria del proceso driver.
  • reduce: Agrega datos con una función específica.
  • collect: Devuelve todos elementos del RDD y puede causar errores por memoria.
  • count: Devuelve el número de elementos en el RDD.
  • take: Devuelve los n primeros elementos del RDD.
  • first: Devuelve el primer elemento del RDD.
  • takeSample: Devuelve n elementos aleatorios del RDD.
  • takeOrdered: Devuelve los n primeros elementos ordenados del RDD.
  • countByKey: Cuenta el número de elementos para cada clave en RDD.
  • saveAsTextFile: Guarda los contenidos de RDD en un fichero de texto.

Funciones Lambda

  • Se crea una función func_multiplicar para aplicar el método map() de Spark, que serializa el código y se envía por los nodos.
  • Para llevar a cabo la transformación map, no es necesario el movimiento de datos, en cambio es una transformación narrow.

Un RDD Duo

  • Para Spark es una tupla de 2 elementos que admite operaciones adicionales como reduceByKey.
  • Esta función requiere movimiento de datos o transformaciones broad.

Funciones Filter

  • Map crea una función anónima lambda, y también aplica un filtro.

Funciones Join

  • Aplica una función join, un pairRDD formado por una nueva tupla creada por un RDD original.

Funciones Take

  • Es un acción que lleva el resultado al driver y debe de caber en él.
  • Desencadena toda la realización de los procedimientos en Python .

Jobs, stages y tasks

  • Un job (trabajo) de Spark es el procesamiento necesario para llevar a cabo una acción del usuario.
  • Cada Job se divide en una serie de stages (etapas).
  • Un stage es todo el procesamiento que puede llevarse a cabo sin mover datos entre nodos.

El Task

  • Cada nodo hace un procesamiento aplicado a diferentes particiones de un dataframe.
  • Una task es una transformación que forma una etapa.
  • Es el procesamiento aplicado por un core físico de la CPU sobre una partición de un RDD.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Apache Spark Lecture Quiz
10 questions

Apache Spark Lecture Quiz

HeartwarmingOrange3359 avatar
HeartwarmingOrange3359
Data Extraction in Apache Spark
42 questions
Introduction à Apache Spark
13 questions

Introduction à Apache Spark

RockStarEnlightenment8066 avatar
RockStarEnlightenment8066
Use Quizgecko on...
Browser
Browser