Toàn tập về Apache Airflow - Phần 1

25 tháng 06, 2024 - 2642 lượt xem

Xin chào mọi người mình là Huy Mac, cựu sinh viên của ĐH Bách Khoa Hà Nội. Hiện tại mình đang làm Data Platform engineer cho một Dev Center thuộc một tập đoàn công nghệ đa quốc gia. Thông qua Techmaster mình muốn chia sẻ một cách có hệ thống các kiến thức về data và mình cũng hy vọng nó sẽ giúp cho các bạn có thể hình dung rõ hơn về nghề data mà mình đang làm nhé.

Apache Airflow

Apache Airflow là một mã nguồn mở để điều phối các data pipeline từ cơ bản tới phức tạp. Ban đầu được phát triển bởi Airbnb và sau đó được mở mã nguồn như một phần của Apache Software Foundation. Airflow được thiết kế để giúp các tổ chức tự động hóa, lập lịch và giám sát một loạt các task, làm cho nó trở thành một trong những công cụ tốt nhất để quản lý các data pipeline, ETL (Extract, Transform, Load) và tự động hóa luồng công việc. Do đó, loạt bài viết này sẽ mang đến cho bạn một kiến thức rộng rãi trong lĩnh vực kỹ thuật dữ liệu.

Airflow logo

Giới thiệu:

Đây là bài viết giới thiệu cho loạt bài “Apache Airflow” của mình, trong suốt loạt bài này, chúng ta sẽ thấy các khái niệm khác nhau liên quan đến Apache Airflow cùng một số ví dụ thực tế trên môi trường production.

  1. Kiến trúc của Airflow
  2. Vòng đời của Airflow Task
  3. Các Operator của Airflow
  4. API TaskFlow của Airflow
  5. Airflow Catchup & Backfill
  6. Airflow Scheduling
  7. Airflow Hooks
  8. Xcom & sensors

Bây giờ hãy cùng xem một số tính năng chính của Apache Airflow.

Cơ bản nhất, hãy giả sử chúng ta có 3 task khác nhau khi thực hiện một dự án AI-ML, bao gồm:

  1. Thu thập dữ liệu - Data Ingestion.
  2. Làm sạch dữ liệu - Data Cleansing.
  3. Áp dụng ML và tạo mô hình - AI/ML.

Nếu bạn muốn tạo một pipeline và tất cả các task này cần được thực hiện tuần tự, thì đó là lúc mà bạn nên nghĩ tới Apache Airflow. Đây là một công cụ lập lịch (orchestration) nơi bạn có thể lên lịch và thực hiện các task theo một thứ tự.

Các tính năng và thành phần chính của Apache Airflow bao gồm:

  1. DAGs (Directed Acyclic Graphs): Airflow sử dụng DAG để biểu diễn một luồng công việc. Một DAG là một tập hợp các task với các phụ thuộc được định nghĩa, và nó đảm bảo rằng các task được thực hiện theo đúng thứ tự mà không có phụ thuộc tuần hoàn.

    DAGs

  2. Scheduler: Airflow có một scheduler, xác định khi nào và làm thế nào để chạy các task trong một DAG dựa trên các phụ thuộc và khoảng thời gian lập lịch đã được định nghĩa. Người dùng có thể chỉ định khi nào và tần suất thực hiện các task, chẳng hạn như hàng giờ, hàng ngày hoặc theo khoảng thời gian tùy chỉnh.

  3. Operators: Operators là các khối xây dựng của các task trong Airflow. Mỗi operator đại diện cho một task đơn lẻ và định nghĩa task đó làm gì. Airflow cung cấp một loạt các operator tích hợp sẵn, như PythonOperator, BashOperator, và nhiều hơn nữa. Người dùng cũng có thể tạo các operator tùy chỉnh để phù hợp với nhu cầu cụ thể của họ.

  4. Executors: Airflow hỗ trợ các loại executor khác nhau để thực hiện các task, chẳng hạn như LocalExecutor, CeleryExecutor, và KubernetesExecutor. Lựa chọn executor phụ thuộc vào môi trường triển khai và yêu cầu về khả năng mở rộng.

  5. Plugins: Người dùng có thể mở rộng chức năng của Airflow bằng cách tạo các plugin bổ sung các operator tùy chỉnh, sensors, hooks, và executors.

  6. Web UI: Airflow bao gồm một giao diện người dùng dựa trên web cho phép người dùng xem và quản lý DAGs, giám sát trạng thái task, và kích hoạt các lần chạy thủ công.

  7. Logging and Monitoring: Airflow cung cấp các khả năng ghi log và giám sát tích hợp sẵn để giúp người dùng theo dõi tiến trình và trạng thái của các luồng công việc. Nó tích hợp với các công cụ như Apache Log4j và cho phép tích hợp với các hệ thống giám sát bên ngoài.

  8. Metadata Database: Airflow dựa vào một cơ sở dữ liệu metadata, chẳng hạn như PostgreSQL hoặc MySQL, để lưu trữ metadata về DAGs, task, lịch sử thực hiện task và các thông tin liên quan khác.

  9. Extensibility: Airflow có tính mở rộng cao và có thể được tích hợp với các công cụ lưu trữ, xử lý và trực quan hóa dữ liệu khác nhau, làm cho nó trở thành một lựa chọn linh hoạt cho các luồng công việc kỹ thuật dữ liệu và khoa học dữ liệu.

Hướng dẫn cài đặt

https://airflow.apache.org/docs/apache-airflow/2.9.0/start.html

export AIRFLOW_VERSION=2.9.0
export PYTHON_VERSION="$(python -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')"
export CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"

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

Hướng dẫn chạy

airflow standalone

Kiểm tra logs, bạn sẽ thấy mật khẩu đăng nhập

airflow standalone

Truy cập http://localhost:8080/. Đăng nhập bằng tài khoản admin và mật khẩu mBZenFVDafDnnFB4 ở trên. Nếu mọi thứ đều ổn, đây là trang web của Airflow

Airflow web UI

Truy cập menu Docs trong giao diện người dùng và mở Swagger UI, nó sẽ mở tài liệu swagger / API cho bạn bây giờ bạn có thể thực sự sử dụng API để tương tác với Airflow.

http://localhost:8080/api/v1/ui/

Vì chúng ta đã cấu hình Airflow với Postgresql, hãy xem cơ sở dữ liệu Postgresql của chúng ta nơi tất cả các dữ liệu này được ghi lại.

airflowdb

Kết luận

Với bài viết khởi đầu này, chúng ta đã bắt đầu với Apache AirFlow, đã biết các tính năng chính của nó. Trong thế giới dựa trên dữ liệu, Apache Airflow nổi bật như một công cụ để thay đổi lối tư duy đã cũ. Công cụ giúp đơn giản hóa các luồng công việc phức tạp, tự động hóa các task và đảm bảo tính hiệu quả. Bản chất mã nguồn mở và sự hỗ trợ của cộng đồng làm cho Airflow trở thành một công cụ cần có cho bất kỳ ai trong lĩnh vực kỹ thuật dữ liệu. Bằng cách chọn Airflow, bạn đang chọn các quy trình hợp lý hóa và nâng cao năng suất. Airflow là công cụ quan trọng của bạn đến thành công trong bối cảnh dữ liệu hiện nay.

Phần tiếp theo?

Kiến trúc và Vòng đời của Task.

Bình luận

avatar
Tạ Văn Dũng 2024-06-26 05:12:13.320307 +0000 UTC

Bài viết rất hay

Avatar
avatar
DevSecOps Edu VN 2024-06-29 02:59:11.215297 +0000 UTC

chờ các bài tiếp ạ

Avatar
* Vui lòng trước khi bình luận.
Ảnh đại diện
  +4 Thích
+4