You are on page 1of 26

Seminar

Apache

Airflow
GVHD: ThS. Nguyễn Hồ Duy Tri
SVTH:
19520814 - Nguyễn Thị Phương Nhi
19521425 - Nguyễn Quốc Khánh
20521643 - Bùi Thị Thanh Ngân
20522090 - Phạm Lê Trưởng

Apache Airflow Trang 1/26


Các khái niệm

Tổng quan về
Case Study
Apache Airflow
Cách hoạt động

Apache

Airflow

Setup Demo
Apache Airflow

Apache Airflow Trang 2/26


Các khái niêm vê
`
.

Apache Airflow

Apache Airflow Trang 3/26


Apache Airflow là gì?
Apache Airflow là một công cụ mã nguồn mở được sử dụng để
lập lịch, quản lý, và giám sát các quy trình xử lý dữ liệu. Nó được
sử dụng rộng rãi trong các hệ thống xử lý dữ liệu lớn để tự động
hóa các quy trình xử lý dữ liệu phức tạp
Airflow phát triển dựa trên AirBnb vào 10/2014 và quản lí các
công việc dựa trên một đồ thị DAG ( đồ thị có hướng và không có
chu trình) trong đó mỗi node trong đồ thị là một task nhỏ

Apache Airflow Trang 4/26


Các ứng dụng quản lý luồng công việc được sử dụng
nhiều hiện nay
Apache Airflow
Apache NiFi
Luigi
Azkaban
Oozie

Trong đó, Apache Airflow và Apache NiFi có lượng người sử


dụng đông đảo nhất bởi các tính năng vượt trội của chúng

Apache Airflow Trang 5/26


So sánh Apache Airflow và Apache NiFi

Apache Airflow Apache NiFi

Cung cấp tính năng xác thực và phân quyền Có tính năng xác thực và phân quyền, nhưng
mạnh mẽ không mạnh mẽ

Mở rộng hệ thống một cách linh hoạt, có thể thêm


Có khả năng mở rộng, nhưng không linh hoạt
các công việc mới, mở rộng máy chủ và tăng
trong việc quản lý và lập lịch công việc
cường khả năng xử lý dữ liệu

Hỗ trợ tích hợp với nhiều nguồn dữ liệu và công Có tích hợp với nhiều công nghệ xử lý dữ liệu thời
cụ khác nhau như Hadoop, Spark, Hive, gian thực, nhưng không có mức độ tích hợp sâu
BigQuery,… như Airflow

Apache Airflow Trang 6/26


Apache Airflow có những lợi thế hơn vì:
Quản lý và lập lịch công việc: Cung cấp một giao diện đồ họa dễ sử dụng để quản lý và lập
lịch các công việc.
Tích hợp dễ dàng: Tích hợp tốt với nhiều công cụ và dịch vụ phổ biến như Hadoop, Spark,
Hive, BigQuery
Mở rộng linh hoạt: Cho phép mở rộng hệ thống một cách linh hoạt. Người dùng có thể thêm
các công việc mới, mở rộng máy chủ và tăng cường khả năng xử lý dữ liệu một cách dễ dàng
Xác thực và phân quyền: Airflow cung cấp tính năng xác thực và phân quyền mạnh mẽ.
Người dùng có thể xác định quyền truy cập cho từng cá nhân và nhóm người, giúp bảo mật dữ
liệu của người dùng
Quản lý lỗi và theo dõi: Airflow cung cấp các công cụ để quản lý lỗi và theo dõi quá trình
thực thi công việc. Người dùng có thể dễ dàng xem các báo cáo lỗi và theo dõi tiến trình của các
công việc

Apache Airflow Trang 7/26


Các khái niệm trong Apache Airflow
DAG
DAG (Directed Acyclic Graph) là khái niệm cốt lõi của Airflow, tập
hợp các task lại với nhau, được tổ chức với các phần phụ thuộc
(dependencies) và mối quan hệ để cho biết chúng nên chạy như thế
nào. Nó mô tả tất cả các bước xử lý dữ liệu trong một quy trình
Các tác vụ trong DAG thường được xử lý tuần tự hoặc song song
theo một lịch trình được định sẵn

Apache Airflow Trang 8/26


Các khái niệm trong Apache Airflow
DAG

Mỗi DAG được xác định trong 1 file


DAG, nó định nghĩa một quy trình xử lý
dữ liệu, được biểu diễn dưới dạng một đồ
thị có hướng không chu trình, trong đó
các nút là các tác vụ (tasks) và các cạnh
là các phụ thuộc giữa các tác vụ

Apache Airflow Trang 9/26


Các khái niệm trong Apache Airflow
TASK
Task là một đơ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 là một bước trong quy trình và có
thể được lập lịch thực hiện tùy theo các điều kiện cụ thể.
Có ba loại task cơ bản:
Operator, mẫu tác vụ được xác định trước mà bạn có thể xâu
chuỗi lại với nhau một cách nhanh chóng để xây dựng hầu hết
các phần DAG của mình.
Sensor, một lớp con đặc biệt của Người vận hành hoàn toàn có
nhiệm vụ chờ đợi một sự kiện bên ngoài xảy ra.
TaskFlow – decorated task, là một hàm Python tùy chỉnh được
đóng gói dưới dạng Task.

Apache Airflow Trang 10/26


Các khái niệm trong Apache Airflow
OPERATOR

Mỗi operator đại diện cho một công việc cụ thể trong quy trình, ví dụ như
đọc dữ liệu từ một nguồn dữ liệu, xử lý dữ liệu, hoặc ghi dữ liệu vào một nguồn
dữ liệu khác.

BashOperator EmailOperator PythonVirtualenvOperator

DummyOperator PythonOperator S3FileTransformOperator

MySqlOperator PostgresOperator SparkSqlOperator

10

Apache Airflow Trang 11/26


Các khái niệm trong Apache Airflow
SENSOR
Sensor là một loại Operator được sử dụng để giám sát các sự kiện và điều
kiện, và thực hiện các hành động tương ứng. Sensor thường được sử dụng để
đợi cho đến khi một điều kiện nào đó xảy ra trước khi tiếp tục thực hiện quy
trình

FileSensor TimeSensor HttpSensor

HdfsSensor SqlSensor S3KeySensor

ExternalTaskSensor

11

Apache Airflow Trang 12/26


Các khái niệm trong Apache Airflow
VÒNG ĐỜI CỦA TASK

12

Apache Airflow Trang 13/26


Các khái niệm trong Apache Airflow
SCHEDULER

Scheduler đọc các tệp DAG, kích hoạt các tác vụ theo các phần phụ
thuộc và theo dõi việc thực thi chúng. Nó luôn đồng bộ với tất cả các quy
trình công việc được lưu trong thư mục DAG và kiểm tra xem có thể bắt đầu
bất kỳ tác vụ nào hay không. Theo mặc định, việc tra cứu đó diễn ra mỗi
phút một lần nhưng bạn có thể định cấu hình tham số này.
Khi một tác vụ nhất định đã sẵn sàng để thực thi, người lập lịch sẽ gửi nó cho
executor

13

Apache Airflow Trang 14/26


Các khái niệm trong Apache Airflow
EXECUTOR VÀ WORKER
Executor là một cơ chế chịu trách nhiệm hoàn thành task. Sau khi nhận được
lệnh từ bộ lập lịch, nó bắt đầu phân bổ tài nguyên cho công việc đang diễn ra.
Có hai loại trình thực thi Airflow:
Executor local : trên cùng một máy chủ với bộ lập lịch;
Executor remoted: hoạt động trên các máy khác nhau, cho phép mở rộng
quy mô và phân phối công việc trên các máy tính.
Bất kể loại nào, executor cuối cùng sẽ giao nhiệm vụ cho worker - các quy
trình riêng biệt thực sự thực hiện các task

14

Apache Airflow Trang 15/26


Các khái niệm trong Apache Airflow
WEB SERVER
Máy chủ web Airflow chạy giao diện người dùng giúp đơn giản hóa
việc giám sát và khắc phục sự cố data pipelines

15

Apache Airflow Trang 16/26


Apache Airflow hoạt động như thế nào?

16

Apache Airflow Trang 17/26


Case Study

17

Apache Airflow Trang 18/26


Problem: Lots of task, lots of dependencies
Tại Sift có hơn 30 bước để chạy quy trình đào tạo mô hình . Có các công việc MapReduce,

Apache Crunch và Apache Spark đang chạy nhiều quy trình trích xuất, đào tạo và đánh giá

tính năng. Và Sift có một đường dẫn dữ liệu nhập và xuất dữ liệu từ các cụm HBase và các

nguồn dữ liệu khác. Sift đã viết nhiều tập lệnh Java, shell và Python để xử lý tất cả các bước

này

Thật khó để theo dõi tất cả các quy trình và tập lệnh này bởi:

Các dependencies ở những nơi khác nhau

Các công cụ khác không cung cấp cách thể hiện sự phụ thuộc giữa các công việc định kỳ

Việc theo dõi tiến trình nhiệm vụ hoặc triển khai chức năng dừng và khởi động lại từ các

điểm tùy ý trong biểu đồ phụ thuộc là điều không hề đơn giản.

18

Apache Airflow Trang 19/26


Solve problem: Using Apache Airflow

Example DAG

19

Apache Airflow Trang 20/26


Solve problem: Using Apache Airflow

Example Time Duration Chart

20

Apache Airflow Trang 21/26


Solve problem: Using Apache Airflow

Example GantChart

21

Apache Airflow Trang 22/26


Solve problem: Using Apache Airflow

22

Apache Airflow Trang 23/26


Setup

Airflow

23

Apache Airflow Trang 24/26


Bước 1: Cài Đặt Python Bước 2: Cài Đặt Vscode

Bước 3: Cài Đặt Anaconda Bước 4: Cài Đặt Airflow

24

Apache Airflow Trang 25/26


Demo

25

Apache Airflow Trang 26/26

You might also like