Etapas de chispa - Conozca los tipos y ventajas de las etapas de chispa

Tabla de contenido:

Anonim

Descripción general de las etapas de chispa

Una etapa en un proceso de ejecución no es más que un nivel a través del cual cada una de las tareas tiene que pasar. Todo el trabajo de chispa se divide en muchas etapas para el procesamiento eficiente de datos. Cada tarea se ejecuta en una partición separada.

Cada vez que el usuario envía una solicitud de trabajo de chispa a Spark, el controlador de Spark la acepta e identifica los diferentes tipos de acciones / transformaciones presentes en la aplicación. Además, estas operaciones se organizarán en un diagrama de flujo llamado DAG. Se crea un DAG (Gráfico Acíclico Dirigido) cada vez que se llama una acción o una transformación en el RDD que a su vez llama al DAGScheduler.

El significado de DAG es el siguiente:

  • Dirigido: todos los nodos están conectados entre sí creando un gráfico acíclico. La secuencia de esto está determinada por las acciones llamadas en el RDD.
  • Acíclico: los nodos no están conectados como un ciclo cíclico, es decir, si una acción o transformación se realizó una vez, no se puede volver a su valor original.
  • Gráfico: todo el patrón formado por los bordes y vértices dispuestos juntos en un patrón específico se llama gráfico. Los vértices no son más que los RDD y los bordes son las acciones llamadas en el RDD.

DAGScheduler es el que divide las etapas en una serie de tareas. El DAGScheduler luego pasa la información de la etapa al administrador del clúster (YARN / Spark autónomo) que activa el programador de tareas para ejecutar las tareas. El controlador de chispa convierte el plan lógico en un plan de ejecución física. Los trabajos de Spark se ejecutan en el método de canalización donde todas las tareas de transformación se combinan en una sola etapa.

Transformaciones

Hay 2 tipos de transformaciones que tienen lugar:

1. Transformaciones estrechas : son transformaciones que no requieren el proceso de barajar. Estas acciones se pueden ejecutar en una sola etapa.

Ejemplo: map () y filter ()

2. Transformaciones amplias : son transformaciones que requieren barajar en varias particiones. Por lo tanto, requiere que se creen diferentes etapas para la comunicación a través de diferentes particiones.

Ejemplo: ReduceByKey

Tomemos un ejemplo para comprender mejor cómo funciona esto.

Ejemplo: en este ejemplo, veremos cómo funciona un simple conteo de palabras usando Spark DAGScheduler.

  • val data = sc.textFile ("data.txt")

Resultado: datos: org.apache.spark.rdd.RDD (String) = data.txt MapPartitionsRDD (46) en el archivo de texto en: 24

Primero, se realiza una operación de archivo de texto para leer el archivo de texto de entrada dado desde la ubicación HDFS.

  • data.flatMap (_. split ("")). map (i => (i, 1)). reduceByKey (_ + _). collect

Resultado: res21: Array ((String, Int)) = Array ()

A continuación, se realiza una operación flatMap para dividir las líneas en todo el archivo de entrada en diferentes palabras. Luego se realiza una operación de mapa para formar pares (clave, valor) como (palabra, 1) para cada una de las palabras. Y se llama a la función reduceByKey para encontrar la suma de los recuentos de cada palabra. Finalmente, la acción colectiva dará el resultado final al recopilar todos los datos.

Durante este programa, Spark crea 2 etapas porque aquí se realiza una transformación. Mientras se realiza la operación de transformación, se debe barajar porque los datos se deben barajar entre 2 o más particiones diferentes. Por lo tanto, para esto, se crea una etapa y luego se crea otra etapa única para la tarea de transformación.

También internamente estas etapas se dividirán en tareas. En este ejemplo, cada etapa se divide en 2 tareas, ya que existen 2 particiones. Cada partición ejecuta una tarea individual.

Tipos de etapas de chispa

Estos son los dos tipos de etapas de chispa que se dan a continuación

1. ShuffleMapStage

Esta es básicamente una etapa intermedia en el proceso de ejecución de DAG. La salida de esta etapa se utiliza como entrada para las etapas posteriores. El resultado de esto es en forma de archivos de salida del mapa que luego se pueden usar al reducir la tarea. Un ShuffleMapStage se considera listo cuando todas sus salidas de mapa están disponibles. A veces, las ubicaciones de salida pueden faltar en los casos en que las particiones se pierden o no están disponibles.

Esta etapa puede contener muchas operaciones de canalización como map () y filter () antes de la ejecución de barajar. ShuffleMapStage utiliza los registros internos outputLocs y _numAvailableOutputs para rastrear el número de salidas del mapa aleatorio. Un solo ShuffleMapStage se puede usar comúnmente en varios trabajos.

2. ResultStage

Como su propio nombre sugiere, esta es la etapa final en un trabajo de Spark que realiza una operación en una o más particiones de un RDD para calcular su resultado. La inicialización de registros y contadores internos se realiza mediante ResultStage.

El DAGScheduler envía las tareas que faltan, si las hay, al ResultStage para su cálculo. Para el cálculo, requiere varios parámetros obligatorios, como stageId, stageAttempId, la variable de difusión de la tarea serializada, partición, TaskLocations preferido, outputId, algunas propiedades locales, TaskMetrics de esa etapa en particular. Algunos de los parámetros opcionales requeridos son Id. De trabajo, Id. De aplicación e Id. De intento de aplicación.

Ventajas de las etapas de chispa

A continuación se presentan las diferentes ventajas de Spark Stages:

1. Asignación dinámica de ejecutores

Al ver la línea de tiempo del evento de trabajo de Spark, podemos ver que la asignación de ejecutores se realiza de forma dinámica. Esto significa que los ejecutores son llamados desde el clúster dependiendo de la carga de trabajo durante el curso de la ejecución de la tarea. Luego se devuelve al clúster tan pronto como finaliza su trabajo. Esto ahorra la memoria de asignación de recursos y permite que las otras aplicaciones que se ejecutan en el mismo clúster reutilicen los ejecutores. Por lo tanto, la utilización general del clúster aumentará y será óptima.

2. Almacenamiento en caché

Los RDD se almacenan en caché durante las operaciones realizadas en ellos en cada etapa y se almacenan en la memoria. Esto es útil para ahorrar tiempo computacional cuando el resultado final requiere que los mismos RDD se lean nuevamente desde HDFS.

3. Ejecución paralela

Los trabajos de chispa que son independientes entre sí se ejecutan en paralelo a menos que se requiera una combinación aleatoria o que la entrada de una etapa dependa de su salida anterior.

4. Visualización de DAG

Esto es muy útil en casos de cálculos complejos en los que intervienen muchas operaciones y sus dependencias. Al ver esta visualización de DAG, se puede rastrear fácilmente el flujo e identificar los bloqueos de rendimiento. Además, se puede ver cada una de las tareas ejecutadas por cada etapa haciendo clic en las etapas que se muestran en esta visualización. En esta vista ampliada, se muestran todos los detalles de los RDD que pertenecen a esta etapa.

5. Tolerancia a fallos

Debido a la operación de almacenamiento en caché realizada en los RDD, DAG tendrá un registro de cada acción realizada en ellos. Por lo tanto, supongamos que en cualquier caso se pierde un RDD, puede recuperarse fácilmente con la ayuda de DAG. El administrador de clústeres se puede usar para identificar la partición en la que se perdió y el mismo RDD se puede colocar nuevamente en la misma partición para la recuperación de pérdida de datos.

Debido a los beneficios mencionados anteriormente, Apache Spark se está utilizando ampliamente en lugar del MapReduce utilizado anteriormente. Las etapas de chispa no son más que una versión extendida de MapReduce. Dado que MapReduce requería que los datos se leyeran y escribieran en el HDFS varias veces, se introdujo Spark que realiza estas acciones en su memoria.

Conclusión

Por lo tanto, podemos concluir que las etapas de Spark son más eficientes debido a su cálculo en memoria, mayor velocidad de procesamiento incluso para el procesamiento iterativo.

Artículos recomendados

Esta es una guía de Spark Stages. Aquí discutimos los Tipos de transformación y los Tipos y ventajas de las etapas de chispa. También puede echar un vistazo a los siguientes artículos para obtener más información:

  1. Cómo instalar Spark
  2. Spark Streaming
  3. Carrera en Spark
  4. Preguntas de la entrevista de Spark
  5. Descripción general y los 6 principales componentes de Spark