0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng Dẫn Cài Đặt Apache Airflow Trong 10 Phút

Đăng vào 5 ngày trước

• 4 phút đọc

Hướng Dẫn Cài Đặt Apache Airflow Trong 10 Phút

Có thể bạn đang làm việc trong lĩnh vực trí tuệ nhân tạo nhưng bất ngờ được giao nhiệm vụ xử lý dữ liệu, hoặc đơn giản là sếp thách thức khả năng của bạn. Điều đó không quan trọng, quan trọng là bạn cần phải cài đặt Apache Airflow ngay lập tức. Vậy thì chúng ta bắt đầu nhé!

I. Airflow Làm Gì?

Nhiều người có thể đã tìm hiểu về Apache Airflow nhưng không rõ ràng về nó. Theo kinh nghiệm của mình, Airflow là một công cụ giúp lên lịch và quản lý các tác vụ một cách hiệu quả. Nó cung cấp giao diện trực quan và cho phép chạy song song nhiều tác vụ. Điều này cực kỳ hữu ích nếu bạn cần tự động hóa việc chạy mã hàng ngày, kiểm tra mã, theo dõi kết quả và kiểm tra lỗi thông qua log.

II. Bắt Đầu Cài Đặt Airflow

Khuyến khích sử dụng Ubuntu để cài đặt, vì cài đặt trên Windows có thể gặp nhiều cảnh báo không cần thiết.

Bước 1: Cài Đặt Docker

Nếu bạn đã cài đặt Docker, thật tuyệt! Nếu chưa, hãy làm theo các bước đơn giản sau:

  1. Cài đặt Docker Engine từ đây.
  2. Tải Docker Compose nếu bạn chưa có, từ đường dẫn này.

Lưu ý: Lý do chọn Docker để cài đặt Airflow là vì nó nhanh chóng, giảm thiểu việc cấu hình hàng loạt, và tránh xung đột giữa các dự án. Nếu bạn cài đặt theo phương pháp thông thường, sau này bạn sẽ cần phải thiết lập thêm Celery và Redis để chạy nhiều worker, khá phiền phức.

Bước 2: Tải File docker-compose.yaml

Mở terminal và đến thư mục bạn muốn cài đặt Airflow, sau đó chạy lệnh sau:

bash Copy
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.9.1/docker-compose.yaml'

Nếu bạn gặp vấn đề về mạng, bạn có thể tự động tạo file docker-compose.yaml trong thư mục và sao chép nội dung từ link trên vào đó.

Bước 3: Thiết Lập Một Số Thư Mục Cần Thiết

Giữ cửa sổ terminal mở và gõ:

Trên Linux:

bash Copy
mkdir -p ./dags ./logs ./plugins ./config
echo -e "AIRFLOW_UID=$(id -u)" > .env

Trên Windows:

  • Tạo 4 thư mục: dags, logs, plugins, config.
  • Tạo file .env và điền AIRFLOW_UID=50000 vào đó.

Bước 4: Khởi Chạy Airflow

Bây giờ, để dựng Airflow và tích hợp cơ sở dữ liệu, bạn chỉ cần chạy lệnh sau:

bash Copy
docker compose up

(Với tùy chọn -d nếu bạn muốn chạy trong chế độ nền).

Chờ khoảng 5 phút. Nếu sử dụng Ubuntu, chỉ cần đợi; với Windows, có thể sẽ có một số thông báo tường lửa, hãy chấp nhận để tiếp tục.

Hãy chú ý tới dòng trên terminal, khi thấy thông báo rằng webserver đang chạy trên cổng 8080 thì bạn đã sẵn sàng.

Bước 5: Khám Phá Giao Diện Web

Để tương tác với Airflow, bạn hãy truy cập localhost:8080 trên trình duyệt web. Giao diện rất thân thiện và cung cấp nhiều ví dụ mẫu để bạn tham khảo. Tuy nhiên, tôi thường tắt những ví dụ này để giữ giao diện sạch sẽ và chỉ hiển thị các DAG của riêng mình.

Bước 6: Thiết Kế DAG

DAG (Directed Acyclic Graph) là cấu trúc giúp thiết kế luồng chạy các tác vụ. Airflow hiện đã hỗ trợ cách thiết kế DAG mới nhất thông qua Taskflow API. Dưới đây là mã minh họa cho DAG:

python Copy
from airflow import DAG
from airflow.operators.dummy import DummyOperator
from airflow.utils.dates import days_ago
from airflow.decorators import dag, task

default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'email_on_failure': False,
    'email_on_retry': False,
}

@dag(
    dag_id='example_dag_decorator',
    default_args=default_args,
    description='An example DAG using @dag decorator',
    schedule_interval=None,
    start_date=days_ago(1),
    tags=['example'],
)
def example_dag():

    start = DummyOperator(
        task_id='start',
    )
    
    @task(task_id='op_1')
    def op_1():
        print("op_1 is running")

    @task(task_id='op_2')
    def op_2():
        print("op_2 is running")

    @task(task_id='some_other_task')
    def some_other_task():
        print("some_other_task is running")

    @task(task_id='op_3')
    def op_3():
        print("op_3 is running")

    @task(task_id='op_4')
    def op_4():
        print("op_4 is running")

    end = DummyOperator(
        task_id='end',
    )

    start >> [op_1(), op_2()] >> some_other_task() >> [op_3(), op_4()] >> end

dag_instance = example_dag()

Vậy là xong! Nếu có câu hỏi gì, hãy để lại comment nhé! 🥺👉️👈
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào