نیک آموز > وبلاگ > مهندسی داده > بررسی آپاچی Airflow؛ ۱۰ نکته مهم درباره مزایا و معایب
بررسی آپاچی Airflow؛ ۱۰ نکته مهم درباره مزایا و معایب

بررسی آپاچی Airflow؛ ۱۰ نکته مهم درباره مزایا و معایب

نوشته شده توسط: تیم فنی نیک آموز
تاریخ انتشار: ۲۷ دی ۱۴۰۰
آخرین بروزرسانی: 25 اسفند 1404
زمان مطالعه: 9 دقیقه
۲.۷
(۳)

هنگام شروع کار در بررسی آپاچی Airflow، مهندسان داده سوالاتی مشابه دو مورد زیر دارند:

نظر افراد متخصص در مورد آپاچی Airflow چیست؟
آپاچی Airflow چه مشکلاتی دارند که باید از آن مطلع باشم؟

در این مقاله از نیک آموز، به این می‌پردازیم که چرا Airflow محبوب است (مزایا) و برخی از مشکلات آن (معایب) کدام است. در این مقاله فرض بر این است که شما دانش اولیه‌ای از آپاچی Airflow و مفهوم DAGها و تسک‌ها دارید.

 

 💡 با شرکت در دوره Data Lakehouse مقدماتی، مبانی معماری مدرن داده را به‌صورت اصولی بیاموزید و یادگیری حرفه‌ای خود را آغاز کنید.

 

فهرست محتوایی

مزایای بررسی آپاچی Airflow

۱) مدیریت وابستگی

مدیریت وابستگی ارائه دهنده جریان داده از طریق خط پردازش داده است. می‌توان آن را به صورت روال انجام تسک‌ها، task A -> Task B -> Task C برای یک مورد ساده تجسم کرد، اما در موارد استفاده واقعی بسیار پیچیده‌‌تر است به عنوان مثال یک سناریوی fan-out را در نظر بگیرید که در آن Task A انجام می‌شود، تسک‌های Task B, Task C, Task D به صورت موازی انجام می‌شوند و سپس Task E انجام می‌شود.
قبل از Airflow، مدیریت وابستگی‌های پیچیده با نوشتن کل خط پردازش داده در یک اسکریپت یا داشتن پایگاه داده‌ای با قابلیت زمان‌بندی برنامه و تعداد اجرا انجام می‌شد. یکی از اهداف اصلی Airflow مدیریت وابستگی‌ها بود. Airflow این کار را بسیار خوب انجام می‌دهد، جریان داده استاندارد، شاخه‌های پیچیده با استفاده از BranchPythonOperator، تلاش مجدد تسک، اجرای catchup و غیره را امکان‌پذیر می‌کند.

 

مزایای بررسی آپاچی Airflow
مزایای بررسی آپاچی Airflow

 

۲) قالب‌ها و ماکروها

کل مدل Airflow طوری طراحی شده است که بر اساس یک برنامه زمان‌بندی شده کار کند، معمولاً این کار را با اجرای اسکریپت‌ها با بازه‌های زمانی متفاوت اجرا می‌کند. به این ترتیب گزینه‌ای برای داشتن اسکریپت‌های قالب وجود دارد که می‌توانند با مقدار زمانی مناسب در زمان اجرای DAG کامل شوند. به عنوان مثال:

from airflow import DAG
from airflow.operators.mysql_operator import MySqlOperator
default_arg = {'owner': 'airflow', 'start_date': '2020-02-28'}
dag = DAG('simple-mysql-dag',
default_args=default_arg,
schedule_interval='0 0 * * *')
mysql_task = MySqlOperator(dag=dag,
mysql_conn_id='mysql_default',
task_id='mysql_task'
sql='<path>/sample_sql.sql',
params={'test_user_id': -99})
mysql_task

و فایل SQL در sample_sql.sql به صورت زیر پیاده‌سازی می‌گردد:

USE your_database;
DROP TABLE IF EXISTS event_stats_staging;
CREATE TABLE event_stats_staging
AS SELECT date
, user_id
, sum(spend_amt) total_spend_amt
FROM event
WHERE date = {{ macros.ds }}
AND user_id <> {{ params.test_user_id }}
GROUP BY date, user_id;
INSERT INTO event_stats (
date
, user_id
, total_spend_amt
)
SELECT date
, user_id
, total_spend_amt
FROM event_stats_staging;
DROP TABLE event_stats_staging;

در کد بالا، هنگامی که DAG در حال اجرا است Macros.ds با Execution_time جایگزین می‌شود. علاوه بر ماکروهای داخلی، می‌توانید پارامترها را در زمان اجرا با ارسال آن در قسمت پارامترهای اپراتور تسک نیز ارسال کنید.

۳) اپراتورها

آپاچی Airflow اپراتورهای زیادی دارد که می‌توانید برای ساخت خط پردازش داده خود از آنها استفاده کنید. اگر در حال شروع کار با Airflow برای پروژه خود هستید، قبل از پیاده‌سازی، اپراتور مورد استفاده خود را جستجو کنید. در صورتی که یک مورد استفاده منحصر به فرد دارید، می‌توانید با ارث بردن از BaseOperator یا نزدیک‌ترین اپراتور موجود، اپراتور خود را بنویسید، شاید تنها چیزی که نیاز دارید یکسری تغییرات کوچک در یک اپراتور موجود باشد.

 

 💡 اگر می‌خواهید مسیر تحول معماری‌های داده را بهتر درک کنید، پیشنهاد می‌کنیم مقاله «تکامل معماری‌های داده از Data Warehouse تا Data Lake و Data Lakehouse» را مطالعه کنید.

 

۴) رابط کاربری و لاگ‌ها

آپاچی Airflow یک رابط کاربری عالی دارد که در آن می‌توانید وضعیت DAGهای خود را ببینید، زمان‌های اجرا را بررسی کنید، لاگ‌ها را بررسی کنید، تسک‌ها را دوباره اجرا کنید و موارد دیگر. به طور پیش‌فرض، این موارد برای هر کسی که به سرور دسترسی دارد باز است، اما در صورت نیاز می‌توانید احراز هویت اضافی را تنظیم کنید. لاگ‌ها را می‌توان با حافظه خارجی همگام‌سازی کرد و راهی آسان برای بررسی خطاها و غیره فراهم کرد.

 

رابط کاربری و لاگ‌ها
رابط کاربری و لاگ‌ها

 

۵) براساس اصول تابعی

آپاچی Airflow بر اساس اصول تابعی طراحی شده است. ایده‌های کلیدی تغییرناپذیری داده‌ها و idempotence هستند. تغییرناپذیری داده‌ها به معنای، ذخیره داده‌های خام و پردازش آنها و ذخیره داده‌های پردازش شده به طور جداگانه است. این روال گزینه‌ای را در اختیار ما قرار می‌دهد تا در صورت بروز خطا، فرآیند داده را دوباره اجرا کنیم. فرآیند idempotence فرآیندی است که در آن با یک ورودی یکسان در اجراهای متعدد، خروجی همیشه یکسان خواهد بود. این روال باعث می‌شود که فرآیند تست و اجرای مجدد آسان‌تر شود.
با پیروی از این اصول، داده‌ها از طریق خط پردازش داده جریان می‌یابد، در هر تسک تبدیل داده انجام شده و خروجی‌ای تولید می‌شود که در تسک بعدی مورد استفاده است. در انتهای خط پردازش داده، داده‌های خام و داده‌های تبدیل شده را خواهید داشت. این مفاهیم به ما در مدیریت، عیب‌یابی و Backfill داده‌ها کمک می‌کند. Backfill فرآیندی است که در آن به دلیل تغییر در منطق تجاری، خطای کد و غیره باید خط پردازش داده خود را دوباره اجرا کنید.

۶) متن باز

آپاچی Airflow یک پروژه متن باز بسیار فعال با یک جامعه فعال بزرگ است. این بدان معناست که برای اکثر مشکلاتی که با آن مواجه هستید، می‌توانید به صورت آنلاین پاسخی پیدا کنید، می‌توانید کد منبع را بخوانید تا بفهمید که چگونه کار می‌کند و سپس پیاده‌سازی خود را انجام دهید.

 

با دوره مهندسی داده، مهارت‌های کلیدی برای طراحی، پردازش و مدیریت داده‌های بزرگ را به‌صورت حرفه‌ای بیاموزید.

 

معایب آپاچی Airflow

۱) مدل پردازش داده برای مهندسان تازه‌کار گویا نیست

مهندسان تازه‌کار برای درک روشی که قرار است از آپاچی Airflow استفاده شود، مشکل دارند. رایج‌ترین شکایت نوشتن موارد تست است. نوشتن موارد تست برای خطوط پردازش داده که داده‌های خام را مدیریت می‌کنند بسیار دشوار است. پیشرفت‌هایی در این زمینه صورت گرفته است، مانند great_expectations. شکایات دیگر از نوشتن تسک‌های non-idempotent ناشی می‌شود که در صورت شکست و تلاش مجدد منجر به داده‌های تکراری یا داده‌های نامرتب یا خرابی می‌شود.

۲) تغییر زمان‌بندی نیاز به تغییر نام DAG دارد

اگر تصمیم به تغییر زمان‌بندی در پروژه خود داشته باشید، باید نام DAG خود را نیز تغییر دهید. زیرا نمونه‌های تسک قبلی با زمان‌بندی جدید هماهنگ نمی‌شوند.

۳) مشکل CI/CD

اگر آپاچی Airflow را در داکر مستقر می‌کنید، فرآیند CI/CD که کانتینر داکر را مجدداً راه‌اندازی می‌کند، فرآیندهای در حال اجرا را از بین می‌برد، باید استقرار را برای موقعی برنامه‌ریزی کنید که هیچ فعالیتی در میانه اجرا قرار نداشته باشد. در زمان راه اندازی مجدد یا اجرای مجدد اگر تعدادی DAG دارید، این روش خوب است، اما اگر تعداد DAGها زیاد است، توصیه می‌شود از ابزاری مانند git-sync یا S3 sync استفاده کنید، که باعث می‌شود فایل های DAG شما با حافظه خارجی همگام‌سازی شوند و استقرار شما اساسا همگام می‌شود.

۴) از ویندوز بومی پشتیبانی نمی کند

اجرای بومی Airflow روی ویندوز کار ساده‌ای نیست. اما این مشکل را تا حدی می‌توان با استفاده از داکر پوشش داد.

 

سخن پایانی بررسی آپاچی Airflow

 

با وجود تمام معایب آپاچی Airflow، همچنان یک فریم‌ورک پردازش دسته‌ای عالی برای مدیریت خطوط پردازش داده ETL است. شرکت‌های زیادی وجود دارند که از Airflow برای مزایایی که ارائه می‌دهد استفاده می‌کنند. امیدواریم این مقاله ایده‌های خوبی در مورد مزایا و معایب آپاچی Airflow به شما داده باشد.

 

سوالات متداول بررسی آپاچی Airflow

 

۱. آپاچی Airflow چرا برای مدیریت خطوط پردازش داده محبوب شده است؟

آپاچی Airflow به دلیل توانایی بالا در مدیریت وابستگی بین تسک‌ها، زمان‌بندی اجرای فرآیندها و ارائه ابزارهای مناسب برای کنترل جریان داده در خطوط پردازش ETL محبوب شده است. در بسیاری از پروژه‌های مهندسی داده، بررسی آپاچی Airflow نشان می‌دهد که این ابزار می‌تواند ساختار اجرای تسک‌ها را به‌صورت منظم و قابل مدیریت سازمان‌دهی کند.

۲. مدیریت وابستگی در Airflow چه نقشی در پردازش داده دارد؟

مدیریت وابستگی باعث می‌شود ترتیب اجرای تسک‌ها در یک خط پردازش داده مشخص و کنترل‌شده باشد. برای مثال ممکن است یک تسک ابتدا اجرا شود و سپس چند تسک دیگر به صورت موازی اجرا شوند و در نهایت یک تسک نهایی داده‌ها را جمع‌بندی کند. در فرآیند بررسی آپاچی Airflow این قابلیت یکی از مهم‌ترین ویژگی‌ها برای طراحی DAGهای پیچیده محسوب می‌شود.

۳. قالب‌ها و ماکروها در Airflow چه کاربردی دارند؟

قالب‌ها و ماکروها امکان ایجاد اسکریپت‌های انعطاف‌پذیر را فراهم می‌کنند که در زمان اجرای DAG با مقادیر زمانی مناسب تکمیل می‌شوند. این ویژگی کمک می‌کند که اسکریپت‌ها به صورت پویا و بر اساس زمان اجرا داده‌ها را پردازش کنند. در بسیاری از تحلیل‌ها و بررسی آپاچی Airflow این قابلیت به عنوان یکی از عوامل افزایش بهره‌وری در زمان‌بندی تسک‌ها معرفی می‌شود.

۴. اپراتورها در Airflow چه نقشی در ساخت خط پردازش داده دارند؟

اپراتورها اجزایی هستند که وظیفه اجرای عملیات مختلف در یک DAG را بر عهده دارند. کاربران می‌توانند از اپراتورهای آماده استفاده کنند یا در صورت نیاز اپراتورهای سفارشی بسازند. در فرآیند بررسی آپاچی Airflow مشخص می‌شود که وجود اپراتورهای متنوع باعث می‌شود طراحی و توسعه خطوط پردازش داده ساده‌تر و انعطاف‌پذیرتر شود.

۵. رابط کاربری Airflow چه امکاناتی در اختیار کاربران قرار می‌دهد؟

رابط کاربری Airflow امکان مشاهده وضعیت DAGها، بررسی زمان اجرای تسک‌ها، مشاهده لاگ‌ها و اجرای مجدد تسک‌ها را فراهم می‌کند. این امکانات به مهندسان داده کمک می‌کند تا خطاها را سریع‌تر شناسایی و مدیریت کنند. در بسیاری از پروژه‌ها، بررسی آپاچی Airflow نشان می‌دهد که رابط کاربری آن یکی از نقاط قوت مهم این ابزار است.

۶. طراحی Airflow بر اساس اصول تابعی چه مزیتی دارد؟

طراحی بر اساس اصولی مانند تغییرناپذیری داده و idempotence باعث می‌شود داده‌ها به صورت قابل اطمینان پردازش شوند. این رویکرد امکان اجرای مجدد فرآیندها بدون ایجاد نتایج متفاوت را فراهم می‌کند و مدیریت خطاها را ساده‌تر می‌سازد. در تحلیل‌های فنی و بررسی آپاچی Airflow این موضوع به عنوان یکی از پایه‌های پایداری سیستم مطرح می‌شود.

۷. Backfill در خطوط پردازش داده چه مفهومی دارد؟

Backfill به فرآیندی گفته می‌شود که در آن خط پردازش داده به دلیل تغییر در منطق تجاری یا بروز خطا دوباره اجرا می‌شود تا داده‌های قبلی اصلاح یا تکمیل شوند. در بسیاری از پروژه‌های مهندسی داده، بررسی آپاچی Airflow نشان می‌دهد که این قابلیت برای اصلاح داده‌های تاریخی اهمیت زیادی دارد.

۸. چرا یادگیری مدل پردازش داده Airflow برای افراد تازه‌کار دشوار است؟

مهندسان تازه‌کار معمولاً در درک نحوه طراحی خطوط پردازش داده و نوشتن تست برای آن‌ها با چالش مواجه می‌شوند. همچنین ایجاد تسک‌هایی که رفتار idempotent نداشته باشند ممکن است در اجرای مجدد باعث ایجاد داده‌های تکراری یا نامنظم شود. در بسیاری از تحلیل‌ها و بررسی آپاچی Airflow این مسئله به عنوان یکی از چالش‌های اولیه یادگیری مطرح می‌شود.

۹. تغییر زمان‌بندی در Airflow چه محدودیتی ایجاد می‌کند؟

در صورت تغییر زمان‌بندی اجرای یک پروژه، لازم است نام DAG نیز تغییر کند. دلیل این موضوع عدم هماهنگی نمونه‌های قبلی تسک‌ها با زمان‌بندی جدید است. در بررسی آپاچی Airflow این موضوع یکی از محدودیت‌هایی است که هنگام طراحی سیستم‌های زمان‌بندی باید در نظر گرفته شود.

۱۰. با وجود معایب، چرا Airflow همچنان در پروژه‌های داده استفاده می‌شود؟

با وجود برخی محدودیت‌ها مانند پیچیدگی برای تازه‌کاران یا چالش‌های استقرار، Airflow همچنان یک فریم‌ورک قدرتمند برای مدیریت خطوط پردازش داده دسته‌ای محسوب می‌شود. جامعه کاربری فعال، متن‌باز بودن و امکانات گسترده باعث شده در بسیاری از سازمان‌ها همچنان مورد استفاده قرار گیرد و در بسیاری از مقالات مرتبط با بررسی آپاچی Airflow به عنوان یکی از ابزارهای اصلی ETL معرفی شود.

 

 

 

برای یادگیری عمیق‌تر در حوزه داده، ادامه مقالات ما را بخوانید:

 

 

 

منبع

 

https://www.startdataengineering.com/post/apache-airflow-review-the-good-the-bad

چه رتبه ای می‌دهید؟

میانگین ۲.۷ / ۵. از مجموع ۳

اولین نفر باش

title sign
دانلود مقاله
بررسی آپاچی Airflow؛ ۱۰ نکته مهم درباره مزایا و معایب
فرمت PDF
5 صفحه
حجم 1 مگابایت
دانلود مقاله
title sign
معرفی نویسنده
تیم فنی نیک آموز
مقالات
414 مقاله توسط این نویسنده
تیم فنی نیک آموز
title sign
معرفی محصول
دوره Data Lakehouse مقدماتی
حسن احمدخانی

دوره آنلاین Data Lakehouse مقدماتی

طلایی
55,750,000 تومان39,025,000 تومان
نقره‌ای
15,750,000 تومان11,025,000 تومان
title sign
دیدگاه کاربران