[AAF] Tìm hiểu về Apache Airflow

Tác giả: 30/05/2025

Trong thời đại dữ liệu lớn và tự động hóa quy trình xử lý dữ liệu, Apache Airflow đang trở thành công cụ không thể thiếu đối với các kỹ sư dữ liệu và nhà phân tích. Là một nền tảng mã nguồn mở mạnh mẽ, Airflow cho phép lập lịch, theo dõi và quản lý các workflow (luồng công việc) phức tạp một cách hiệu quả. Trong bài viết này, chúng ta sẽ cùng khám phá Apache Airflow là gì, lý do tại sao nó lại quan trọng trong hệ sinh thái dữ liệu hiện đại và cách triển khai Airflow trong thực tế để tối ưu hóa quy trình ETL, xử lý dữ liệu và tự động hóa tác vụ.

Apache AirFlow là gì?

  • Apache Airflow là một công cụ mã nguồn mở được sử dụng để lập lịch, quản lý, và giám sát các quy trình xử lý dữ liệu. Nó được sử dụng rộng rãi trong các hệ thống xử lý dữ liệu lớn để tự động hóa các quy trình xử lý dữ liệu phức tạp.
  • Airflow có thể tự động hóa quy trình công việc của bạn bằng DAGs ( Directed Acyclic Graphs ), cung cấp các khái niệm như “DAG”, “Task”, “Operator”, “Sensor” để mô tả các quy trình xử lý dữ liệu.
  • Airflow bao gồm các components sau:
    • Scheduler: chạy workflow ( luồng công việc ) , gửi các tasks tới executor
    • Executor: quản lý các workers, xử lý các tác vụ đang chạy
    • Webserver: giao diện web cho phép kiểm tra, kích hoạt, sửa lỗi các tasks và DAGs
    • Folder of DAG files: đọc bởi scheduler và executor ( với mọi worker mà executor có )
    • Metadata database: nơi lưu trạng thái của scheduler, executor, webserver

Như thế nào là DAGs?

  • Directed Acyclic Graph là một đồ thị có hướng không chu trình, mô tả tất cả các bước xử lý dữ liệu trong một quy trình
  • Quy trình công việc thường được xác định với sự trợ giúp của Đồ thị theo chu kỳ có hướng (DAG)
  • Mỗi DAG được xác định trong 1 file DAG, nó định nghĩa một quy trình xử lý dữ liệu, được biểu diễn dưới dạng một đồ thị có hướng không chu trình, trong đó các nút là các tác vụ (tasks) và các cạnh là các phụ thuộc giữa các tác vụ.
  • Các tác vụ trong DAG thường được xử lý tuần tự hoặc song song theo một lịch trình được định sẵn
  • Khi một DAG được thực thi, nó được gọi là một lần chạy DAG

  • Vòng đời của 1 trạng thái nhiệm vụ gồm có các trạng thái sau :
    • No status: tác vụ chưa được xếp hàng để thực hiện
    • Scheduled: Bộ lập lịch đã xác định rằng các phụ thuộc của nhiệm vụ được đáp ứng và đã lên lịch cho nó chạy
    • Removed: Vì một lý do nào đó, tác vụ đã biết mất khỏi DAG kể từ khi bắt đầu chạy
    • Upstream failed: tác vụ ngược dòng không thành công
    • Queued: Nhiệm vụ đã được giao cho Executor và đang đợi 1 worker có sẵn để thực thi
    • Running: Tác vụ đang được chạy bởi một worker
    • Sucess: Tác vụ chạy xong không có lỗi
    • Failed: Tác vụ có lỗi trong khi thực thi và không chạy được
    • Up for retry: Tác vụ không thành công nhưng vẫn còn các lần thử lại và sẽ được lên lịch lại

Hướng dẫn cài đặt môi trường cho AAF.

Một máy chủ ảo có sẵn các phần dưới đây (nếu bạn chưa có VPS , hãy tham khảo tại đây ) :

  • Python: 3.7, 3.8, 3.9, 3.10
  • Minimum RAM: 4GB

Tiến hành cài đặt Airflow bằng pip

  • Cài đặt các dependencies của Linux:

sudo apt-get install libmysqlclient-dev
sudo apt-get install libssl-dev
sudo apt-get install libkrb5-dev

  • Setup đường dẫn tới Airflow

export AIRFLOW_HOME=~/airflow

  • Assign 3 biến environment: AIRFLOW_VERSION, PYTHON_VERSION và CONSTRAINT_URL

export AIRFLOW_VERSION=3.0.0
export PYTHON_VERSION="$(python --version | cut -d " " -f 2 | cut -d "." -f 1-2)"
export CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"

  • Lưu lại các thay đổi

source .bashrc

  • Cài đặt Airflow bằng pip

pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"

  • Khởi chạy các components của airflow

airflow api-server -p 8080
airflow scheduler

Các bạn mở trình duyệt lên, vào localhost:8080 để xem kết quả nhé

 

 

Ở bài viết sau , Nhân Hòa sẽ hướng dẫn cho bạn khởi chạy một file DAG.

Bài viết tham khảo :