Giới thiệu về Apache Airflow
Apache Airflow là gì?
Apache Airflow là một hệ thống mã nguồn mở được phát triển bởi Airbnb và hiện thuộc về Apache Software Foundation. Ra mắt lần đầu vào năm 2014, Airflow nhanh chóng trở thành công cụ hàng đầu cho việc quản lý lịch trình và quy trình trong lĩnh vực phân tích dữ liệu và khoa học dữ liệu.
Airflow cho phép người dùng định nghĩa (define), lập lịch (schedule) và xử lý các công việc phức tạp trong quy trình dữ liệu thông qua ngôn ngữ lập trình Python. Các công việc được mô tả dưới dạng các đồ thị có hướng không chu trình (DAGs - Directed Acyclic Graphs), trong đó mỗi nút đại diện cho một công việc và các cạnh biểu thị sự phụ thuộc giữa các công việc.
Ví dụ về cách sử dụng Apache Airflow
python
from datetime import datetime
from airflow import DAG
from airflow.decorators import task
from airflow.operators.bash import BashOperator
# Thiết lập một DAG cho công việc
with DAG(dag_id="demo", start_date=datetime(2022, 1, 1), schedule="0 0 * * *") as dag:
# Định nghĩa công việc sử dụng BashOperator
hello = BashOperator(task_id="hello", bash_command="echo hello")
@task()
def airflow():
print("airflow")
# Thiết lập sự phụ thuộc giữa các nhiệm vụ
hello >> airflow()
Một trong những tính năng nổi bật của Airflow là khả năng mở rộng linh hoạt. Nó hỗ trợ nhiều công nghệ xử lý dữ liệu như Hadoop, Spark, SQL, Docker và hơn thế nữa, cho phép người dùng áp dụng sức mạnh của nhiều công nghệ khác nhau trong quy trình dữ liệu của họ.
Airflow đi kèm với giao diện web mạnh mẽ giúp người dùng quản lý, giám sát và kiểm soát trạng thái của các công việc trong quy trình. Người dùng có thể theo dõi tiến trình công việc, xem lịch sử thực thi và kiểm tra lỗi, nâng cao tính minh bạch và khả năng kiểm soát.
Với sự hỗ trợ từ Apache và cộng đồng người dùng đông đảo, Airflow đã trở thành một công cụ không thể thiếu cho việc quản lý và tổ chức quy trình dữ liệu phức tạp. Sự linh hoạt, khả năng mở rộng và khả năng tùy chỉnh cao khiến Airflow ngày càng thu hút sự quan tâm trong cộng đồng phân tích và khoa học dữ liệu.
Ứng dụng của Apache Airflow trong Quy trình Machine Learning
Apache Airflow cũng rất hữu ích trong việc xây dựng các quy trình Machine Learning (Machine Learning Pipeline). Dưới đây là một số ứng dụng của Airflow trong bối cảnh này:
- Xử lý Dữ liệu: Airflow cho phép định nghĩa các công việc xử lý dữ liệu trước khi huấn luyện mô hình, chẳng hạn như chuẩn hóa, xử lý dữ liệu thiếu và biến đổi dữ liệu.
- Huấn luyện Mô hình: Bạn có thể lập lịch và quản lý quy trình huấn luyện mô hình trên các tập dữ liệu đã xử lý, bao gồm việc thiết lập để Airflow tự động chạy pipeline định kỳ hoặc khi có dữ liệu mới.
- Đánh giá và So sánh Mô hình: Airflow cho phép tổ chức các nhiệm vụ để đánh giá và so sánh hiệu suất của các mô hình bằng cách tính toán các chỉ số như accuracy, F1-score và AUC.
- Triển khai Mô hình: Sau khi mô hình đã được huấn luyện và đánh giá, Airflow có thể tự động triển khai mô hình vào môi trường sản xuất.
- Giám sát và Quản lý Mô hình: Giao diện web của Airflow giúp theo dõi và quản lý các công việc cũng như hiệu suất của mô hình sau khi triển khai.
Với khả năng linh hoạt và mở rộng, Apache Airflow cho phép bạn xây dựng các pipeline Machine Learning phức tạp, tự động hóa quy trình và nâng cao tính nhất quán cũng như hiệu quả trong việc phát triển và triển khai mô hình Machine Learning.
Hướng Dẫn Cài Đặt Apache Airflow
Trong tài liệu của Airflow có nhiều phương pháp cài đặt, nhưng trong bài viết này, chúng ta sẽ hướng dẫn cách cài đặt Airflow bằng Docker - một phương pháp đơn giản và nhanh chóng cho việc thiết lập cá nhân. Nếu sử dụng trong tổ chức, bạn nên cân nhắc sử dụng Helm Chart. Đầu tiên, hãy đảm bảo rằng máy của bạn đã cài đặt Docker và Docker Compose phiên bản từ v1.29.1 trở lên.
Các bước cài đặt:
-
Tải file docker-compose.yaml: Sử dụng lệnh sau để tải file cấu hình Airflow về máy:
bashcurl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.6.1/docker-compose.yaml'
-
Nội dung file docker-compose.yaml: File này sẽ định nghĩa các dịch vụ cần thiết cho Airflow như webserver, scheduler, worker, postgres và redis. Dưới đây là mô tả ngắn gọn về các dịch vụ:
- airflow-scheduler: Quản lý nhiệm vụ và trigger các công việc khi có điều kiện thích hợp.
- airflow-webserver: Giao diện web cho phép người dùng tương tác với Airflow tại địa chỉ
http://localhost:8080
. - airflow-worker: Chạy các nhiệm vụ được gửi từ scheduler.
- postgres: Cơ sở dữ liệu để lưu trữ thông tin của Airflow.
- redis: Gửi thông điệp giữa scheduler và worker.
-
Chạy lệnh cài đặt: Để khởi động tất cả các dịch vụ, bạn cần chạy lệnh sau:
bash
echo -e "AIRFLOW_UID=$(id -u)
AIRFLOW_GID=0" > .env
docker compose up
4. **Kiểm Tra Các Container**: Sử dụng lệnh `docker ps` để kiểm tra trạng thái của các container. Nếu mọi thứ chạy ổn định, bạn sẽ thấy các container trong trạng thái healthy.
Bây giờ bạn đã cài đặt xong Airflow! Hãy truy cập `http://<địa chỉ_ip_máy_bạn>:8080` để khám phá các tính năng của Airflow.
# Tổng Kết
Trong phần một của bài viết, chúng ta đã tìm hiểu khái niệm cơ bản về Apache Airflow cùng với cách cài đặt hệ thống này qua Docker. Ở phần hai, chúng ta sẽ đi sâu vào những khái niệm chính và cách sử dụng Airflow.
# Tài liệu tham khảo
[Apache Airflow Documentation](https://airflow.apache.org/docs/apache-airflow/stable/installation/index.html)
source: viblo