Cómo ejecutar aplicaciones Spark en CDH 5
(1) Trabajo: Cálculo paralelo que contiene múltiples tareas, generalmente generadas por operaciones.
(2) Etapa: la unidad de programación del trabajo.
(3) Tarea: Unidad de trabajo enviada al ejecutor.
(4) TaskSet: un grupo de tareas relacionadas que no tienen dependencias aleatorias entre sí.
Una aplicación consta de un controlador y varios trabajos. Una misión consta de múltiples fases. Una etapa consta de múltiples tareas sin dependencias mezcladas entre ellas.
Arquitectura de una aplicación Spark:
(1) En términos simples:
El controlador solicita recursos del clúster, el clúster asigna los recursos e inicia el ejecutores. Posteriormente, los resultados se devuelven al conductor o se escriben en el mundo exterior.
(2) Complejo:
Enviar la aplicación, construir el sparkContext, construir el gráfico DAG, enviarlo al programador para su análisis, analizarlo en etapas, enviarlo al clúster , el administrador de tareas del clúster lo programará y el clúster iniciará el ejecutor de Spark. El controlador pasa el código y los archivos al ejecutor, quien realizará varias operaciones para completar la tarea. El rastreador de bloques del controlador registrará los bloques de datos generados por el ejecutor en cada nodo. Una vez completada la tarea, los datos se escriben en HDFS u otro tipo de base de datos.
(3) Integral:
La aplicación Spark realizará varios cálculos de conversión y finalmente activará tareas a través de operaciones. Después del envío, el gráfico DAG se construye primero a través de sparkContext de acuerdo con las dependencias del RDD, y luego el gráfico DAG se envía a DAGScheduler para su análisis. El proceso de análisis se completa de forma aleatoria. El gráfico DAG se envía a DAGScheduler para su análisis. El análisis se basa en la mezcla aleatoria, el análisis inverso y la fase de construcción, y también existen dependencias entre las fases. El proceso consiste en analizar el gráfico DAG en etapas y calcular las dependencias entre etapas. Luego envíe un TaskSet al programador subyacente, envíelo a taskScheduler para su procesamiento en Spark, genere un administrador de TaskSet y finalmente envíelo al ejecutor para su cálculo. Administrador de TaskSet, y luego a taskScheduler, y luego Comentarios a DAGScheduler y escribir datos una vez completado todo el trabajo.