90 درصد از دیتاهای کل دنیا در دو سال اخیر یعنی 2023 تا 2025 تولید شده است! با توجه به این حجم دادههای عظیم شرکتها دائماً در تلاشند تا آنها را بهشکلی بهینه پردازش، ذخیره و تحلیل کنند. در سال 2025 مدیریت جریانهای کاری دادهای (Data Workflows) به یک موضوع مهم در صنایع مختلف تبدیل شده. حالا تصور کنید که قرار است روزانه میلیاردها رکورد داده از چندین منبع مختلف جمعآوری، پردازش و ذخیره شوند. این کار اگر ساختاریافته و خودکار نباشد، میتواند به یک کابوس تبدیل شود.
شرکتها و مهندسان داده نیاز دارند که فرآیندهای پیچیده را بهصورت روشمند، زمانبندیشده و بدون خطا اجرا کنند به همین دلیل به سراغ سرویسهایی مثل Apache Airflow میروند.
چرا به ابزارهایی مانند Airflow نیاز داریم؟
اگر تا به حال با فرآیندهای ETL (Extract, Transform, Load)، پردازشهای بیگ دیتا یا حتی زمانبندی اجرای اسکریپتهای خودکار سروکار داشتهاید، احتمالاً میدانید که اجرای دستی این فرآیندها نهتنها وقتگیر است، بلکه مستعد خطای انسانی هم هست.
سرویسهای مختلفی برای مدیریت فرآیندهای ETL (Extract, Transform, Load) وجود دارند، که یکی از راهکارهای متنباز (Open-Source)، مقیاسپذیر و منعطف، Apache Airflow است.
به کمک Apache Airflow میتوانید:
✅ ورکفلوهای دادهای را مانند کد بنویسید و مدیریت کنید.
✅ آنها را زمانبندی کنید و وابستگی بین تسکها را مشخص نمایید.
✅ بهصورت گرافیکی اجرای فرآیندهای خود را نظارت کنید و در صورت بروز خطا، آن را دیباگ کنید.
✅ با سایر ابزارها و سرویسهای ابری مانند AWS، Google Cloud، Apache Spark و… یکپارچهسازی کنید.
در ادامه بهطور کامل بررسی کنیم که Apache Airflow چیست و چگونه میتوان از آن برای مدیریت فرآیندهای دادهای استفاده کرد. به این سوالات پاسخ خواهیم داد:
- این ابزار دقیقاً چه کاری انجام میدهد و چه کاربردهایی دارد؟
- اجزای داخلی Airflow چگونه کار میکنند و چطور با هم ارتباط دارند؟
- چه مزایا و معایبی دارد و آیا برای همهی پروژهها مناسب است؟
- چگونه میتوان آن را روی سیستم یا سرور نصب و اجرا کرد؟
- بهترین روشها برای استفاده از Airflow چیست؟
آشنایی کامل با معماری Apache Airflow
Airflow بر پایهی یک معماری ماژولار طراحی شده که از چندین کامپوننت اصلی تشکیل شده است:
کامپوننت | توضیحات |
Scheduler | زمانبندی و اجرای تسکها را مدیریت میکند. |
Executor | مسئول اجرای تسکها است (پشتیبانی از انواع مختلف مانند CeleryExecutor و KubernetesExecutor). |
Worker | وظایف پردازشی را در محیطهای توزیعشده اجرا میکند. |
Metastore Database | پایگاه دادهای که اطلاعات مربوط به DAGها، تسکها و تاریخچه اجرای آنها را ذخیره میکند. |
Web Server | یک رابط گرافیکی برای نظارت بر وضعیت ورکفلوها فراهم میکند. |
نحوهی تعریف یک DAG در Apache Airflow
در Airflow، DAG (Directed Acyclic Graph) ساختاری است که ترتیب اجرای تسکها را مشخص میکند. هر DAG شامل یک سری تسک (Task) و وابستگی بین آنها است. برای مثال یک DAG ساده میتواند به شکل زیر باشد:
from airflow import DAG
from airflow.operators.bash import BashOperator
from airflow.operators.python import PythonOperator
from datetime import datetime
def my_function():
print(“Apache Airflow در حال اجراست!”)
with DAG(dag_id=”demo_dag”, schedule_interval=”0 0 * * *”, start_date=datetime(2024, 3, 1)) as dag:
task1 = BashOperator(task_id=”print_hello”, bash_command=”echo Hello Airflow!”)
task2 = PythonOperator(task_id=”run_python_task”, python_callable=my_function)
task1 >> task2 # تعیین ترتیب اجرا
در این کد ابتدا یک DAG جدید با نام demo_dag ساختهایم. سپس یک BashOperator داریم که پیغام “Hello Airflow!” را چاپ میکند. پس از آن یک PythonOperator داریم که یک تابع پایتونی را اجرا میکند. نکته مهم: task1 >> task2 یعنی ابتدا task1 اجرا شود و سپس task2.
زمانبندی و اجرای تسکها در Airflow چگونه است؟
یکی از مهمترین قابلیتهای Airflow زمانبندی خودکار تسکها است. میتوانید فاصله زمانی اجرا را با استفاده از schedule_interval تنظیم کنید.
مقدار | توضیح |
@daily | اجرای DAG یکبار در روز |
@hourly | اجرای DAG هر ساعت |
0 0 * * * | اجرای DAG در ساعت ۰۰:۰۰ هر روز |
همچنین Airflow از Backfilling پشتیبانی میکند؛ یعنی میتوان DAGهای قبلی را مجدداً اجرا کرد تا پردازش دادههای تاریخی انجام شود.
آموزش نصب Apache Airflow با روشهای مختلف!
برای نصب Apache Airflow دو روش وجود دارد که در این قسمت هر کدام را بررسی کردهایم.
روش ۱: نصب با pip
اگر بخواهید Airflow را روی یک سیستم ساده اجرا کنید، میتوانید از pip استفاده کنید:
pip install “apache-airflow==2.9.2” –constraint “https://raw.githubusercontent.com/apache/airflow/constraints-2.9.2/constraints.txt”
سپس، پایگاه داده Airflow را راهاندازی کنید:
airflow db migrate
و در نهایت، وبسرور را اجرا کنید:
airflow webserver –port 8080
اکنون Airflow UI روی localhost:8080 در دسترس خواهد بود.
روش ۲: اجرا در Docker
اگر بخواهید Airflow را در یک محیط ایزوله اجرا کنید، میتوانید از Docker استفاده کنید:
docker-compose -f airflow-docker-compose.yml up -d
این روش برای محیطهای توسعه و آزمایشی بیشتر استفاده میشود.
مزایا و معایب Apache Airflow چیست؟
Apache Airflow مزایای متعددی دارد. برای مثال یکی از مهمترین مزیتهای این سرویس متنباز (Open-Source) و رایگان بودناش است. بدین ترتیب یک جامعهی بزرگ از توسعهدهندگان و مهندسان داده در سراسر دنیا روی بهبود آن کار میکنند، باگهای آن را برطرف نمایند و قابلیتهای جدیدی به آن اضافه کنند.
باقی مزایای Apache Airflow هم در لیست زیر آورده شده است:
- انعطافپذیری بالا با امکان تعریف ورکفلوها بهصورت کد
- پشتیبانی از اجرای توزیعشده
- رابط کاربری قوی برای مانیتورینگ و عیبیابی
- یکپارچهسازی آسان با سرویسهای ابری مانند AWS و Google Cloud
معایبی که باید پیش از استفاده از Apache Airflow بدانید نیز در ادامه آوردهایم:
برای مثال یکی از بزرگترین نقاط ضعف Airflow این است که برای پردازش دادههای Real-Time طراحی نشده است. این ابزار بیشتر برای پردازشهای Batch مناسب است، یعنی جریانهای کاری که در فواصل زمانی مشخص اجرا میشوند. یا
- وابستگی به کدنویسی پایتون (افرادی که تجربه برنامهنویسی ندارند، ممکن است کار با آن را سخت بدانند): البته برای تیمهایی که با مهندسان داده و توسعهدهندگان پایتون کار میکنند، این موضوع یک مزیت به شمار میرود!
- مدیریت و راهاندازی نسبتاً پیچیده برای محیطهای بزرگ
بهترین روشها برای کار با Apache Airflow
یکی از بهترین روشهای کار با Apache Airflow این است که از Variables و Jinja برای پارامترسازی استفاده کنید:
from airflow.models import Variable
data_path = Variable.get(“data_path”) # مقدار از UI قابل تنظیم است
از دیگر روشها این است که تسکهای سنگین را موازی اجرا کنید:
task1.set_downstream([task2, task3]) # task2 و task3 همزمان اجرا شوند
بهتر است SLA برای تسکها تعیین کنید:
task1.sla = timedelta(minutes=30) # حداکثر ۳۰ دقیقه برای اجرای تسک
حتما ورکفلوهای خود را در Git نگهداری کنید تا نسخههای مختلف را کنترل کنید.
جمعبندی
Apache Airflow برای مدیریت گردشکارهای دادهای استفاده میشود که به کمک آن میتوان ETLها، پردازش داده، زمانبندی اسکریپتها و تحلیل دادهها را بهینه کرد. اگر در دنیای Big Data، یادگیری ماشین یا Cloud Computing فعالیت میکنید، یادگیری Airflow میتواند مهارت ارزشمندی برای شما باشد.
آیا تا به حال با Apache Airflow کار کردهاید؟ تجربهی خود را با ما به اشتراک بگذارید!