Relación entre Spark2x y otros componentes
Relación entre Spark y HDFS
Los datos calculados por Spark provienen de múltiples fuentes de datos, como archivos locales y HDFS. La mayoría de los datos provienen de HDFS que pueden leer datos a gran escala para computación paralela Después de ser computados, los datos se pueden almacenar en HDFS.
Spark implica Driver y Executor. El Driver programa las tareas y el Executor ejecuta las tareas.
Figura 1 describe el proceso de lectura de archivos.
- Driver se interconecta con HDFS para obtener la información del File A.
- El HDFS devuelve la información de block detallada acerca de este archivo.
- Driver establece un grado paralelo basado en la cantidad de datos de block y crea varias tasks para leer los blocks de este archivo.
- Executor ejecuta las tareas y lee los blocks detallados como parte del conjunto de datos distribuido resistentes (RDD).
Figura 2 describe el proceso de escritura de archivos.
- Driver crea un directorio donde se va a escribir el archivo.
- Basándose en el estado de distribución de RDD, se calcula el número de tasks relacionadas con la escritura de datos, y estas tareas se envían al Executor.
- Executor ejecuta estas tareas y escribe los datos de RDD en el directorio creado en 1.
Relación con Yarn
La computación y programación de Spark pueden implementarse usando el modo de Yarn. Spark disfruta de los recursos informáticos proporcionados por los clústeres de Yarn y ejecuta tareas de forma distribuida. Spark en Yarn tiene dos modos: Yarn-cluster y Yarn-client.
- Modo de Yarn-cluster
Figura 3 describe el marco de operación.
Proceso de implementación de Spark on Yarn-cluster:
- El cliente genera la información de la aplicación y, a continuación, envía la información a ResourceManager.
- ResourceManager asigna el primer container (ApplicationMaster) a SparkApplication e inicia el driver en el container.
- ApplicationMaster se aplica a los recursos de ResourceManager para ejecutar el container.
ResourceManager asigna los containers a ApplicationMaster, que se comunica con los NodeManagers relacionados e inicia el executor en el container obtenido. Después de iniciar el executor, se registra con drivers y se aplica a las tareas.
- Los controladores asignan tareas a los ejecutores.
- Los executors ejecutan tareas e informan el estado de funcionamiento a Drivers.
- Modo de Yarn-client
Figura 4 describe el marco de operación.
Proceso de implementación de Spark on Yarn-client:
En el modo Yarn-cliente, el Driver se despliega y se inicia en el client. En el modo Yarn-client, el cliente de una versión anterior es incompatible. Se recomienda el modo Yarn-cluster.
- El cliente envía la solicitud de aplicación Spark a ResourceManager y empaqueta toda la información necesaria para iniciar ApplicationMaster y envía la información a ResourceManager. A continuación, ResourceManager devuelve los resultados al cliente. Los resultados incluyen información como ApplicationId y el límite superior, así como el límite inferior de los recursos disponibles. Después de recibir la solicitud, ResourceManager encuentra un nodo apropiado para ApplicationMaster y lo inicia en este nodo. ApplicationMaster es un papel en Yarn, y el nombre del proceso en Spark es ExecutorLauncher.
- En función de los requerimientos de recursos de cada tarea, ApplicationMaster puede solicitar una serie de containers para ejecutar tareas desde ResourceManager.
- Después de recibir la lista de container recién asignados (de ResourceManager), ApplicationMaster envía información a los NodeManagers relacionados para iniciar los containers.
ResourceManager asigna los containers a ApplicationMaster, que se comunica con los NodeManagers relacionados e inicia el executor en el container obtenido. Después de iniciar el executor, se registra con drivers y se aplica a las tareas.
Containers en ejecución no se suspenderá para liberar recursos.
- Drivers asignan task a los executors. Los executors ejecutan tareas e informan el estado de funcionamiento a Drivers.