
Điều phối Luồng dữ liệu với Apache Airflow
Khi một hệ thống dữ liệu phát triển, việc chạy các tác vụ riêng lẻ (script Python, job Spark, lệnh dbt) một cách thủ công sẽ nhanh chóng trở thành một cơn ác mộng: thiếu tin cậy, khó giám sát và không thể mở rộng. Data Orchestration (Điều phối Dữ liệu) chính là kỷ luật kỹ thuật giải quyết vấn đề này, và Apache Airflow là công cụ mã nguồn mở tiêu chuẩn của ngành. Khóa học này sẽ dạy bạn cách biến một tập hợp các script rời rạc thành một hệ thống tự động hóa vững chắc, đáng tin cậy.
Chương trình sẽ giới thiệu cho bạn triết lý cốt lõi của Airflow: “Pipeline as Code”, nơi bạn sử dụng toàn bộ sức mạnh và sự linh hoạt của Python để định nghĩa các luồng công việc. Bạn sẽ học cách xây dựng các DAGs (Directed Acyclic Graph) để mô tả sự phụ thuộc và trình tự của các tác vụ. Bạn sẽ làm chủ các Operators – những khối xây dựng cơ bản để thực thi mọi thứ, từ việc chạy một lệnh Bash, một hàm Python, cho đến việc khởi chạy các job trên hệ thống khác. Đặc biệt, bạn sẽ học cách tích hợp Airflow với toàn bộ hệ sinh thái dữ liệu đã học, biến nó thành “nhạc trưởng” điều phối cho Spark, dbt và các dịch vụ cloud.
Thời lượng: 24h

KẾT QUẢ ĐẠT ĐƯỢC

TƯ DUY VỀ DATA ORCHESTRATION
Hiểu sâu sắc tại sao cần điều phối pipeline, các nguyên tắc về lịch trình, sự phụ thuộc, và cơ chế chạy lại (retry) khi có lỗi.

LÀM CHỦ KIẾN TRÚC AIRFLOW
Nắm vững vai trò và sự tương tác giữa các thành phần cốt lõi: Scheduler, Webserver, Worker, Executor và Metadata Database.

XÂY DỰNG CÁC DAGs PHỨC TẠP
Thành thạo việc viết pipeline dưới dạng mã Python (DAGs), sử dụng các loại Operators, thiết lập sự phụ thuộc logic và quản lý luồng chạy.

TÍCH HỢP VỚI CÁC HỆ THỐNG KHÁC
Có khả năng xây dựng các DAGs điều phối các công cụ đã học như Spark và dbt, tạo nên một pipeline end-to-end thực thụ.

VẬN HÀNH VÀ GIÁM SÁT PIPELINE TRONG THỰC TẾ
Thành thạo Airflow UI để giám sát, gỡ lỗi và quản lý các pipeline, đồng thời áp dụng các best practice để vận hành hệ thống một cách ổn định


Yêu cầu tiên quyết:
-
- Kỹ năng lập trình Python vững vàng (đặc biệt là hàm, class, dictionary).
- Hiểu biết về các công cụ như Spark, dbt để có “nhiệm vụ” cho Airflow điều phối.
- Sử dụng thành thạo giao diện dòng lệnh.
Nội dung khóa học
1. Giới thiệu Data Orchestration & Airflow
- Khái niệm Data Orchestration:
- Tại sao việc tự động hóa, kết nối nhiều bước xử lý dữ liệu lại quan trọng trong các hệ thống hiện đại.
- Những rủi ro khi pipeline xử lý dữ liệu không được orchestration (ví dụ: thất lạc dữ liệu, khó kiểm soát lịch trình, không retry khi lỗi, không truyền dữ liệu giữa các công cụ).
- Apache Airflow overview:
- Khái niệm DAG (Directed Acyclic Graph) – biểu diễn một pipeline dữ liệu có tuần tự, có phụ thuộc.
- Operators: các đơn vị thực thi logic trong DAG (chạy Python, Bash, Trigger, chờ file, kết nối API…).
- Vai trò của Scheduler trong việc lên lịch chạy DAG tự động.
- Kiến trúc Airflow:
- Thành phần Webserver (giao diện quản lý, theo dõi), Scheduler (quản lý lịch trình), Worker (thực thi task), Metadata Database (lưu trạng thái, lịch sử task).
- Minh họa flow xử lý một DAG trong Airflow – từ lúc phát hiện tới khi hoàn thành.
2. DAGs và Operators
- Định nghĩa DAG:
-
- Viết DAG bằng Python: đặt tên, mô tả, thiết lập lịch trình chạy (schedule_interval).
- Quy tắc đặt thứ tự, phụ thuộc giữa các task (set_upstream, set_downstream, >>, <<).
- Các loại Operators phổ biến:
-
- PythonOperator: chạy script, function Python trực tiếp.
- BashOperator: thực hiện lệnh shell (gọi Spark-submit, dbt CLI…).
- DummyOperator: đánh dấu hoặc làm task “giả lập” khi pipeline phức tạp.
- BranchPythonOperator: tạo điều kiện rẽ nhánh workflow.
- TriggerDagRunOperator: khởi chạy DAG khác từ một DAG.
- Sensors:
-
- Ý nghĩa của sensor: “đợi một điều kiện mới bắt đầu chạy task kế tiếp”.
- FileSensor, HttpSensor, S3KeySensor – ví dụ kiểm tra file xuất hiện, API trả về kết quả, file mới trên S3/GCS.
3. Quản lý pipeline dữ liệu
- Thiết lập dependency giữa task:
- Đặt mối quan hệ cha-con (parent-child), đảm bảo task chỉ chạy khi các task trước thành công.
- Xử lý task song song, task có điều kiện, rẽ nhánh logic.
- Retry, SLA, và xử lý lỗi:
- Thiết lập số lần retry, thời gian chờ giữa các lần, gửi cảnh báo khi task quá thời hạn (SLA miss).
- Bắt và log lỗi, fail gracefully, tự động phục hồi pipeline.
- Airflow Variables, Connections, XComs:
- Dùng Variables để cấu hình động cho DAG (vd: đường dẫn file, tham số môi trường).
- Dùng Connections để quản lý thông tin đăng nhập kết nối các hệ thống (database, cloud, API…).
- Dùng XComs (cross-communication) để truyền dữ liệu giữa các task trong một DAG.
- Templates & Macros:
- Truyền tham số vào task, custom hóa pipeline theo ngày chạy, tự động hóa câu lệnh động với macro Airflow.
4. Tích hợp Airflow với hệ sinh thái dữ liệu
- Trigger Spark jobs từ Airflow:
- Dùng BashOperator hoặc SparkSubmitOperator để khởi chạy Spark job trên cluster (YARN, Databricks, EMR…).
- Theo dõi log Spark, kiểm soát trạng thái job.
- Chạy dbt models từ Airflow:
- Gọi dbt CLI qua BashOperator, quản lý trạng thái dbt run/test.
- Lên lịch chạy tự động các model/seed/test dbt sau khi có data mới.
- Kết nối với cloud services:
- Sử dụng Operators/sensors cho AWS S3, GCP BigQuery, Azure Data Lake.
- Lấy dữ liệu, chuyển file, trigger các workflow cloud tự động.
- Kết nối API & hệ thống ngoài:
- Sử dụng HttpOperator, SimpleHttpOperator để lấy dữ liệu từ REST API, trigger hệ thống khác khi pipeline hoàn thành.
5. Vận hành và triển khai Airflow
- Airflow UI:
- Theo dõi trạng thái DAG, lịch sử chạy, xem log, kiểm tra nguyên nhân lỗi.
- Kích hoạt/tắt DAG, xóa task failed, trigger thủ công.
- Airflow CLI:
- Chạy và debug DAGs từ command line: trigger DAG, clear, test task, xem status.
- Triển khai Airflow trên Docker Compose:
- Cài đặt Airflow môi trường local nhanh chóng bằng Docker.
- Hiểu cấu trúc các services: webserver, scheduler, worker, database.
- Scheduler Production:
- Tối ưu Airflow cho production: cấu hình worker, scheduler, phân bổ tài nguyên, bảo mật.
6. Best Practices và CI/CD
- Quản lý DAG repository với Git:
- Quản lý version, phân nhánh, code review, rollback khi pipeline lỗi.
- CI/CD cho DAGs:
- Tích hợp Airflow DAG vào pipeline CI/CD (GitHub Actions, Jenkins…).
- Kiểm thử tự động, kiểm tra cấu trúc, lint code, tự động deploy lên server khi merge code mới.
- Tối ưu performance và custom DAGs:
- Cách viết DAG hiệu quả, giảm overhead, tối ưu tài nguyên, chia nhỏ pipeline cho dễ bảo trì.
- Sử dụng plugins và custom operators để mở rộng tính năng (ví dụ: gửi thông báo Slack, tạo operator riêng cho nghiệp vụ đặc biệt).
7. BÀI THỰC HÀNH CUỐI KHÓA: Xây dựng DAG End-to-End điều phối pipeline phân tích dữ liệu
- Yêu cầu: Xây dựng một DAG duy nhất thực hiện các bước sau theo thứ tự:
- Chờ đợi một file dữ liệu mới xuất hiện trong một thư mục (FileSensor).
- Chạy một Spark job để xử lý file dữ liệu thô đó và lưu kết quả vào một bảng trung gian.
- Chạy dbt run để biến đổi dữ liệu từ bảng trung gian thành các bảng data mart cho phân tích.
- Chạy dbt test để kiểm tra chất lượng dữ liệu của các data mart.
- Gửi một email thông báo (sử dụng EmailOperator) khi pipeline hoàn thành thành công.

Bài viết liên quan
