Giới thiệu
Airflow là một công cụ hữu ích cho DataEngineer dùng để lập lịch việc này đến việc kia, ….
- Airflow cung cấp các khái niệm như “DAG” (Directed Acyclic Graph), “Task”, “Operator”, “Sensor” để mô tả quy trình xử lý dữ liệu
DAG
Hiểu đại khái là một đồ thị có hướng không có chu trình (do điểm đầu cuối ko trùng)
Mỗi DAG được định nghĩa trong 1 file trong folder dags
Các nút trong đồ thị là các tác vụ xử lý dữ liệu
Vòng đời của 1 tác vụ bao gồm:
- No status: 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
- Upstream failed
- Quêud
- Running
- Success
- Failed
- Up for retry
-> Quy trình lý tưởng nhất cho một tác vụ No status -> Scheduled -> Queued -> Running -> Success
Task
Đơn vị cơ bản để thực hiện một công việc nhỏ trong quy trình xử lý dữ liệu.
Mỗi task trong Airflow có các thuộc tính và phương thức sau (lưu ý vì khi code phải có đủ):
- task_id
- owner
- depends_on_part
- retries: số lần thử lại nếu task thất bại
- retry_delay: khoảng thời gian giữa các lần thử lại
- start_date, end_date
- execution_timeout: thời gian tối đa cho phép để thực hiện task
- n_failure_callback, on_success_calLback: hàm được gọi khi task thất bại hay thành công.
Operator
Sensor
Cài đặt
Do máy tôi không đủ bộ nhớ nên tôi thuê luôn một con server chạy trên nền amazon linux để cài. Chạy lần lượt từng lệnh dưới đây để cài.
1 | sudo yum update -y |
Airflow hiện đã hỗ trợ cài chỉ bằng các lệnh pip thay vì dùng container tại here. Nhưng mà cài bằng container sẽ là tốt nhất theo recommend của họ