Ayudando al Internet industrial de las cosas, el dominio de servicios de big data industrial: los componentes arquitectónicos de AirFlow [32]

Punto de conocimiento 05: Componentes de la arquitectura de AirFlow

  • Objetivo : comprender los componentes arquitectónicos de AirFlow

  • camino

    • paso 1: Arquitectura
    • paso 2: componentes
  • implementar

    • arquitectura

      imagen-20211005110933346

      • Cliente: Desarrollar el cliente del programa programado por AirFlow, utilizado para desarrollar el programa Python de AirFlow
      • Maestro: el nodo maestro en la arquitectura distribuida, responsable de ejecutar WebServer y Scheduler
      • Trabajador: Responsable de ejecutar Ejecución para ejecutar la Tarea en el flujo de trabajo enviado
    • componentes

      imagen-20211005111759153

      A scheduler, which handles both triggering scheduled workflows, and submitting Tasks to the executor to run.
      An executor, which handles running tasks. In the default Airflow installation, this runs everything inside the scheduler, but most production-suitable executors actually push task execution out to workers.
      A webserver, which presents a handy user interface to inspect, trigger and debug the behaviour of DAGs and tasks.
      A folder of DAG files, read by the scheduler and executor (and any workers the executor has)
      A metadata database, used by the scheduler, executor and webserver to store state.
      
      • Servidor web: proporciona una interfaz interactiva y monitoreo, lo que permite a los desarrolladores depurar y monitorear el funcionamiento de todas las tareas.
      • Programador: responsable de analizar y programar las tareas de tareas para enviarlas a Ejecución para su ejecución.
      • Ejecutor: el componente de ejecución es responsable de ejecutar la Tarea asignada por el Programador y ejecutarse en el Trabajador.
      • Directorio DAG: el directorio del programa DAG, coloque el programa desarrollado por usted mismo en este directorio y el servidor web y el programador de AirFlow lo leerán automáticamente.
        • airflow pone todos los programas en un directorio
        • Detectar automáticamente si hay un nuevo programa en este directorio
      • MetaData DataBase: base de datos de almacenamiento de metadatos de AirFlow, que registra la información de todos los programas DAG
  • resumen

    • Comprender los componentes arquitectónicos de AirFlow

Punto de conocimiento 06: reglas de desarrollo de AirFlow

  • Objetivo : Dominar las reglas de desarrollo de AirFlow.

  • camino

    • Paso 1: desarrollar un programador de Python
    • Paso 2: enviar el programador de Python
  • implementar

    • documento oficial

      • Conceptos: http://airflow.apache.org/docs/apache-airflow/stable/concepts/index.html
    • Ejemplo: http://airflow.apache.org/docs/apache-airflow/stable/tutorial.html

    • Desarrollar un programador de Python

      • Para desarrollar un programa Python, el archivo del programa debe contener las siguientes partes

      • Nota: La operación de este archivo no admite la codificación utf8 y no puede escribir chino.

      • paso 1: paquete de guía

        # 必选:导入airflow的DAG工作流
        from airflow import DAG
        # 必选:导入具体的TaskOperator类型
        from airflow.operators.bash import BashOperator
        # 可选:导入定时工具的包
        from airflow.utils.dates import days_ago
        

        imagen-20211015103936196

      • Paso 2: definir DAG y configuración

        # 当前工作流的基础配置
        default_args = {
                  
                  
            # 当前工作流的所有者
            'owner': 'airflow',
            # 当前工作流的邮件接受者邮箱
            'email': ['[email protected]'],
            # 工作流失败是否发送邮件告警
            'email_on_failure': True,
            # 工作流重试是否发送邮件告警
            'email_on_retry': True,
            # 重试次数
            'retries': 2,
            # 重试间隔时间
            'retry_delay': timedelta(minutes=1),
        }
        
        # 定义当前工作流的DAG对象
        dagName = DAG(
            # 当前工作流的名称,唯一id
            'airflow_name',
            # 使用的参数配置
            default_args=default_args,
            # 当前工作流的描述
            description='first airflow task DAG',
            # 当前工作流的调度周期:定时调度【可选】
            schedule_interval=timedelta(days=1),
            # 工作流开始调度的时间
            start_date=days_ago(1),
            # 当前工作流属于哪个组
            tags=['itcast_bash'],
        )
        
        • Cree una instancia y configuración de un flujo de trabajo DAG
      • paso 3: definir tareas

        • Tipo de tarea: http://airflow.apache.org/docs/apache-airflow/stable/concepts/operators.html

        • comúnmente utilizado

          • BashOperator- ejecuta un comando bash
            • Ejecutar comandos de Linux
          • PythonOperator- llama a una función arbitraria de Python
            • Ejecutar código Python
          • EmailOperator- envía un correo electrónico
            • enviando correo
        • otro

        • BashOperator: definir una tarea de comando de Shell

          # 导入BashOperator
          from airflow.operators.bash import BashOperator
          # 定义一个Task的对象
          t1 = BashOperator(
          	# 指定唯一的Task的名称
              task_id='first_bashoperator_task',
          	# 指定具体要执行的Linux命令
              bash_command='echo "hello airflow"',
          	# 指定属于哪个DAG对象
              dag=dagName
          )
          
        • PythonOperator: definir una tarea de código Python

          # 导入PythonOperator
          from airflow.operators.python import PythonOperator
          
          # 定义需要执行的代码逻辑
          def sayHello():
              print("this is a programe")
          
          #定义一个Task对象
          t2 = PythonOperator(
              # 指定唯一的Task的名称
              task_id='first_pyoperator_task',
              # 指定调用哪个Python函数
              python_callable=sayHello,
              # 指定属于哪个DAG对象
              dag=dagName
          )
          

      • Paso 4: Ejecute la tarea y especifique las dependencias

        • Definir tarea

          Task1:runme_0
          Task2:runme_1
          Task3:runme_2
          Task4:run_after_loop
          Task5:also_run_this
          Task6:this_will_skip
          Task7:run_this_last
          
        • necesidad

          • Task1, Task2 y Task3 se ejecutan en paralelo y ejecutan Task4 una vez finalizada
          • Task4, Task5 y Task6 se ejecutan en paralelo y ejecutan Task7 una vez finalizada

          imagen-20211005121040679

        • el código

          task1 >> task4
          task2 >> task4
          task3 >> task4
          task4 >> task7
          task5 >> task7
          task6 >> task7
          
        • Si solo hay una Tarea, simplemente escriba el nombre del objeto Tarea directamente

          task1
          
    • Enviar el programador de Python

      • ¿Qué tipo de envío debe esperar un tiempo?

      • Envío automático: es necesario esperar la detección automática

        • Coloque el programa desarrollado en el directorio DAG de AirFlow
        • La ruta predeterminada es: /root/airflow/dags
      • Envío manual: ejecute manualmente el archivo para permitir que el flujo de aire escuche la carga.

        python xxxx.py
        
      • Estado de programación

        • Sin estado (el programador creó una instancia de tarea vacía): la tarea programada se ha creado, pero aún no se ha generado ninguna instancia de tarea.

        • Programada (la instancia de tarea determinada por el programador debe ejecutarse): la tarea programada ha generado una instancia de tarea y está esperando para ejecutarse.

        • En cola (el programador envió la tarea al ejecutor para que se ejecute en la cola): la tarea programada comienza en la cola antes de que se ejecute el ejecutor

        • En ejecución (el trabajador tomó una tarea y ahora la está ejecutando): la tarea se está ejecutando en el nodo trabajador

        • Éxito (tarea completada): la ejecución de la tarea se completó con éxito

  • resumen

    • Domina las reglas de desarrollo de AirFlow

Supongo que te gusta

Origin blog.csdn.net/xianyu120/article/details/132204203
Recomendado
Clasificación