Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2023-04-14 GMT+08:00

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.

Figura 1 Proceso de lectura de archivos
El proceso de lectura de archivos es el siguiente:
  1. Driver se interconecta con HDFS para obtener la información del File A.
  2. El HDFS devuelve la información de block detallada acerca de este archivo.
  3. Driver establece un grado paralelo basado en la cantidad de datos de block y crea varias tasks para leer los blocks de este archivo.
  4. 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.

Figura 2 Proceso de escritura de archivos
El proceso de escritura de archivos es el siguiente:
  1. Driver crea un directorio donde se va a escribir el archivo.
  2. 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.
  3. 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.

    Figura 3 Marco de operación de Spark on Yarn-cluster

    Proceso de implementación de Spark on Yarn-cluster:

    1. El cliente genera la información de la aplicación y, a continuación, envía la información a ResourceManager.
    2. ResourceManager asigna el primer container (ApplicationMaster) a SparkApplication e inicia el driver en el container.
    3. 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.

    4. Los controladores asignan tareas a los ejecutores.
    5. Los executors ejecutan tareas e informan el estado de funcionamiento a Drivers.
  • Modo de Yarn-client

    Figura 4 describe el marco de operación.

    Figura 4 Marco de operación de Spark on Yarn-client

    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.

    1. 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.
    2. En función de los requerimientos de recursos de cada tarea, ApplicationMaster puede solicitar una serie de containers para ejecutar tareas desde ResourceManager.
    3. 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.

    4. Drivers asignan task a los executors. Los executors ejecutan tareas e informan el estado de funcionamiento a Drivers.