وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

اجرای جریان هوا به صورت محلی با داکر: راهنمای فنی

0 12
زمان لازم برای مطالعه: 10 دقیقه


معرفی

Apache Airflow و Docker دو ابزار قدرتمندی هستند که شیوه مدیریت داده ها و استقرار نرم افزار را متحول کرده اند. Apache Airflow یک پلت فرم منبع باز است که به شما امکان می دهد تا به صورت برنامه نویسی، برنامه ریزی و نظارت بر گردش کار را انجام دهید. داکر، روی از سوی دیگر، پلتفرمی است که توسعه دهندگان را قادر می سازد تا برنامه ها را در کانتینرها بسته بندی کنند – اجزای اجرایی استاندارد شده که کد منبع برنامه را با کتابخانه های سیستم عامل و وابستگی های مورد نیاز برای اجرای آن کد در هر محیطی ترکیب می کنند.

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

راه اندازی شما Local محیط

برای شروع، باید نرم افزار زیر را نصب کنید روی ماشین شما:

  • پایتون (نسخه 3.6 یا بالاتر)
  • داکر (نسخه 20.10.11)
  • Docker Compose (نسخه 2.2.1)

نصب Python، Docker و Airflow ساده است. برای پایتون و داکر، می توانید راهنمای نصب رسمی سیستم عامل خاص خود را دنبال کنید. برای جریان هوا، می توانید آن را با استفاده از آن نصب کنید pip، نصب کننده بسته پایتون.

پایتون را نصب کنید

Apache Airflow به زبان پایتون نوشته شده است، بنابراین باید پایتون را نصب کنید روی ماشین شما می توانید آن را از وب سایت رسمی پایتون. در زمان نگارش، Airflow به پایتون 3.6 یا بالاتر نیاز دارد.

برای بررسی نصب پایتون و دیدن نسخه آن، a را باز کنید terminal پنجره و نوع:

$ python --version

Docker را نصب کنید

Docker به ما اجازه می دهد تا تنظیمات جریان هوا را کانتینری کنیم. می توانید Docker را از وب سایت رسمی داکر. نسخه ای را انتخاب کنید که برای سیستم عامل شما مناسب است.

پس از نصب، می توانید با باز کردن a بررسی کنید که آیا Docker به درستی نصب شده است terminal پنجره و تایپ:

$ docker --version

Docker Compose را نصب کنید

Docker Compose ابزاری است که به ما امکان تعریف و مدیریت چندcontainer برنامه های Docker، که همان چیزی است که راه اندازی جریان هوا ما خواهد بود. معمولاً با نصب Docker همراه است روی ویندوز و مک، اما ممکن است نیاز به نصب جداگانه داشته باشد روی برخی از توزیع های لینوکس می توانید بررسی کنید که آیا Docker Compose نصب شده است و نسخه آن را با تایپ کردن ببینید:

$ docker-compose --version

اگر نصب نشده است، می توانید دنبال کنید راهنمای نصب رسمی Docker Compose.

ساختار پروژه

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

در اینجا یک ساختار پیشنهادی برای پروژه شما آورده شده است:

my_project/
│
├── airflow/                  # Directory for all Airflow-related files
│   ├── dags/                 # Directory to store your Airflow DAGs
│   │   ├── dag1.py
│   │   ├── dag2.py
│   │   └── ...
│   │
│   ├── Dockerfile            # Dockerfile for building your custom Airflow image
│   ├── docker-compose.yml    # Docker Compose file for defining your services
│
└── ...                       # Other directories and files for your project

در این ساختار:

  • این airflow/ دایرکتوری جایی است که همه فایل های مربوط به جریان هوا را در آن ذخیره می کنید. این کار تنظیم جریان هوا را از بقیه پروژه‌تان جدا نگه می‌دارد و مدیریت آن را آسان‌تر می‌کند.

  • این dags/ دایرکتوری داخل airflow/ دایرکتوری جایی است که شما Airflow DAG های خود را ذخیره می کنید. اینها اسکریپت های پایتون هستند که گردش کار شما را تعریف می کنند. در فایل Docker Compose خود، این دایرکتوری را به آن نگاشت می کنید /usr/local/airflow/dags در ظروف جریان هوای شما

  • این Dockerfile درون airflow/ دایرکتوری برای ساخت تصویر سفارشی Airflow Docker شما استفاده می شود. این فایل حاوی دستورالعمل‌هایی برای مقداردهی اولیه پایگاه داده Airflow و کپی کردن سفارشی شما است airflow.cfg فایل در تصویر

  • این docker-compose.yml فایل داخل airflow/ دایرکتوری جایی است که شما خدمات خود (وب سرور، زمانبندی، پایگاه داده و غیره) را برای Docker Compose تعریف می کنید.

شخصی کردن راه‌اندازی Airflow-Docker

قبل از اینکه بتوانید Airflow را اجرا کنید، باید پایگاه داده آن را مقداردهی اولیه کنید. در یک راه اندازی Dockerized، مقداردهی اولیه پایگاه داده جریان هوا و سفارشی سازی آن airflow.cfg فایل را می توان در داکر انجام داد container، نه روی را host دستگاه.

برای انجام این کار، می توانید از یک Dockerfile برای ساخت یک تصویر سفارشی Airflow Docker استفاده کنید. در این Dockerfile، می توانید دستوراتی را برای مقداردهی اولیه پایگاه داده Airflow و سفارشی کردن آن مشخص کنید airflow.cfg فایل.

در اینجا یک نمونه Dockerfile آورده شده است:


FROM apache/airflow:latest


ENV AIRFLOW_HOME=/usr/local/airflow


USER root


RUN mkdir -p ${AIRFLOW_HOME} && chown -R airflow: ${AIRFLOW_HOME


USER airflow


RUN airflow db init


RUN echo "(core)" > ${AIRFLOW_HOME}/airflow.cfg && \
    echo "airflow_home = ${AIRFLOW_HOME}" >> ${AIRFLOW_HOME}/airflow.cfg && \
    echo "executor = LocalExecutor" >> ${AIRFLOW_HOME}/airflow.cfg && \
    echo "" >> ${AIRFLOW_HOME}/airflow.cfg && \
    echo "(webserver)" > ${AIRFLOW_HOME}/airflow.cfg && \
    echo "base_url = http://localhost:8080" >> ${AIRFLOW_HOME}/airflow.cfg && \
    echo "web_server_host = 0.0.0.0" >> ${AIRFLOW_HOME}/airflow.cfg && \
    echo "web_server_port = 8080" >> ${AIRFLOW_HOME}/airflow.cfg{AIRFLOW_HOME}/airflow.cfg

در این Dockerfile ابتدا مقدار را تنظیم می کنیم AIRFLOW_HOME متغیر محیطی به /usr/local/airflow. سپس با استفاده از آن به کاربر ریشه سوئیچ می کنیم USER root بخشنامه این امر ضروری است زیرا برای ایجاد دایرکتوری و تغییر مالکیت آن به مجوزهای ریشه نیاز داریم.

بعد، ما ایجاد می کنیم AIRFLOW_HOME دایرکتوری و تغییر مالکیت آن به airflow کاربر. این کار با استفاده از RUN mkdir -p ${AIRFLOW_HOME} && chown -R airflow: ${AIRFLOW_HOME} فرمان این -p گزینه در mkdir فرمان تضمین می‌کند که اگر دایرکتوری وجود نداشته باشد، ایجاد می‌شود.

پس از آن، به حالت اولیه برمی گردیم airflow کاربر با استفاده از USER airflow بخشنامه این یک روش خوب به دلایل امنیتی است، زیرا اجرای کانتینرها به عنوان کاربر اصلی می تواند خطرات امنیتی ایجاد کند.

سپس پایگاه داده Airflow را با استفاده از RUN airflow db init فرمان

در نهایت، ما آن را سفارشی می کنیم airflow.cfg مستقیماً در داکر فایل کنید container. این کار با استفاده از RUN بخشنامه با یک سری از echo دستورات، که تنظیمات سفارشی ما را به airflow.cfg فایل. این رویکرد به ما اجازه می‌دهد تا آن را سفارشی کنیم airflow.cfg بدون نیاز به ایجاد و سفارشی کردن فایل روی را host دستگاه.

در این Dockerfile، ما از > اپراتور به جای >> عملگر زمانی که برای اولین بار به آن می نویسیم airflow.cfg فایل. این > اپراتور فایل را با متن مشخص شده بازنویسی می کند، در حالی که >> اپراتور متن را به فایل اضافه می کند. با بازنویسی فایل، اطمینان حاصل می کنیم که هر بخش فقط یک بار اعلام شده است.

در اینجا مثالی از روش شما آورده شده است airflow.cfg بخش های پیکربندی شده در فایل به شکل زیر خواهد بود:

(core)

airflow_home = ~/airflow


executor = LocalExecutor

(webserver)

base_url = http://localhost:8080


web_server_host = 0.0.0.0


web_server_port = 8080

هنگامی که این Dockerfile را ایجاد کردید، می توانید تصویر Airflow Docker سفارشی خود را با استفاده از آن بسازید docker build فرمان در اینجا یک مثال است:

$ docker build -t my-airflow-image .

Docker Compose

Docker Compose ابزاری است که به شما امکان تعریف و مدیریت چندcontainer برنامه های Docker. از یک فایل YAML برای مشخص کردن سرویس‌ها، شبکه‌ها و حجم برنامه شما استفاده می‌کند و سپس تمام این مؤلفه‌ها را در یک دستور واحد می‌آورد.

پیکربندی فایل Docker Compose

فایل Docker Compose جایی است که شما خدمات اپلیکیشن خود را تعریف می کنید. برای Airflow، یک فایل Docker Compose ممکن است شامل خدماتی برای وب سرور، زمان‌بندی و پایگاه داده باشد. این فایل باید در همان دایرکتوری Dockerfile شما باشد.

در اینجا یک مثال است:

version: "3"
services:
  webserver:
    build:
      context: .
      dockerfile: Dockerfile
    command: webserver
    volumes:
      - ./dags:/usr/local/airflow/dags
    ports:
      - "8080:8080"
  scheduler:
    build:
      context: .
      dockerfile: Dockerfile
    command: scheduler
    volumes:
      - ./dags:/usr/local/airflow/dags
  postgres:
    image: postgres:latest
    environment:
      - POSTGRES_USER=airflow
      - POSTGRES_PASSWORD=airflow
      - POSTGRES_DB=airflow

در این فایل Docker Compose سه سرویس را تعریف می کنیم: webserver، scheduler، و postgres. این build دستورالعمل به Docker Compose می گوید که با استفاده از Dockerfile در فهرست فعلی یک تصویر بسازد. این volumes دستورالعمل نقشه می دهد ./dags فهرست راهنما روی شما host ماشین به /usr/local/airflow/dags در داکر container، به شما امکان می دهد DAG های خود را ذخیره کنید روی شما host دستگاه. این ports دایرکتوری مپ پورت 8080 روی شما host دستگاه به پورت 8080 در داکر container، به شما امکان می دهد به وب سرور Airflow در آدرس دسترسی داشته باشید http://localhost:8080.

این postgres خدمات استفاده می کند postgres:latest تصویر و متغیرهای محیطی را مستقیماً در فایل Docker Compose تنظیم می کند. این متغیرهای محیطی برای پیکربندی پایگاه داده Postgres استفاده می شوند.

راه اندازی خدمات جریان هوا

برای راه اندازی خدمات Airflow خود، می توانید از docker-compose up فرمان اضافه کردن -d flag سرویس ها را در پس زمینه اجرا می کند. این دستور این است:

$ docker-compose up -d

این دستور تمام سرویس های تعریف شده در فایل Docker Compose شما را شروع می کند. می توانید وضعیت خدمات خود را با استفاده از docker-compose ps فرمان

ایجاد کاربر در جریان هوا

هنگامی که Docker compose خود را با Airflow تنظیم کردید، باید کاربری ایجاد کنید تا بتوانید به رابط وب Airflow دسترسی داشته باشید. این را می توان با اجرای یک دستور در Docker در حال اجرا انجام داد container.

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

$ docker ps

این دستور همه کانتینرهای در حال اجرا Docker و جزئیات آنها را فهرست می کند. به دنبال container وب سرور Airflow را اجرا کرده و آن را یادداشت کنید container شناسه.

در مرحله بعد، می توانید با اجرای دستور زیر یک کاربر جدید در Airflow ایجاد کنید:

$ docker exec -it <container-id> airflow users create --username admin --password admin --firstname First --lastname Last --role Admin --email (email protected)

جایگزین کردن <container-id> با container شناسه ای که قبلاً یادداشت کردید این دستور یک کاربر جدید با نام کاربری “admin”، رمز عبور “admin”، نام “First”، نام خانوادگی “Last”، نقش “Admin” و ایمیل “(email protected)” ایجاد می کند. شما باید این مقادیر را با ارزش های خود جایگزین کنید.

پس از اجرای این دستور، باید بتوانید با استفاده از اعتبار کاربری که ایجاد کرده اید، وارد رابط وب Airflow شوید.

بهینه سازی ها و کاربردها

افزایش عملکرد

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

به عنوان مثال، می توانید با افزودن عبارت، استفاده از حافظه ظروف Docker خود را محدود کنید mem_limit پارامتر فایل Docker Compose شما:

services:
  webserver:
    build:
      context: .
      dockerfile: Dockerfile
    command: webserver
    volumes:
      - ./dags:/usr/local/airflow/dags
    ports:
      - "8080:8080"
    mem_limit: 512m

علاوه بر حافظه، می توانید منابع CPU را نیز مدیریت کنید container می توانید با تنظیم استفاده کنید cpu_shares پارامتر:

services:
  webserver:
    build:
      context: .
      dockerfile: Dockerfile
    command: webserver
    volumes:
      - ./dags:/usr/local/airflow/dags
    ports:
      - "8080:8080"
    mem_limit: 512m
    cpu_shares: 512

این cpu_shares پارامتر به شما اجازه می دهد تا منابع CPU را کنترل کنید container می توانید استفاده کنید. ارزش یک وزن نسبی نسبت به سایر ظروف است. به عنوان مثال، اگر یکی container دارای مقدار 1024 و دیگری دارای ارزش 512، اولین container دو برابر بیشتر از دومی زمان CPU دریافت خواهد کرد.

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

چه زمانی و چرا از Airflow با Docker استفاده می کنم

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

جریان هوا، با برنامه ریزی قوی و orchestration قابلیت ها، برای نیازهای خط لوله داده ما مناسب بود. با این حال، تغییر دهنده واقعی بازی Docker بود. داکر به ما اجازه داد تا تنظیمات جریان هوای خود را کانتینری کنیم، که مزایای زیادی را به همراه داشت.

اول، داکر همکاری با تیم من را بسیار آسان کرد. ما توانستیم تصاویر Docker خود را به اشتراک بگذاریم و اطمینان حاصل کنیم که همه در یک محیط کار می کنند. این “اما کار می کند” را حذف کرد روی ماشین من” مشکل ایجاد کرد و باعث توسعه ما شد process بسیار نرم تر

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

در آخر، زمانی که زمان استقرار خطوط لوله ما برای تولید فرا رسید، داکر آن را ساخت process بدون درز. ما به سادگی مجبور شدیم تصویر Docker خود را به سرور تولید فشار دهیم و آن را اجرا کنیم. نیازی به نگرانی در مورد نصب وابستگی ها یا پیکربندی سرور وجود نداشت. همه چیزهایی که نیاز داشتیم در تصویر داکر ما بسته بندی شده بود.

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

مطالعه موردی: گردش کار تجزیه و تحلیل داده های Quizlet

پذیرش کویزلت Apache Airflow ETLهای تحلیلی آنها را متحول کرده است. در ابتدا مستقر شد روی یک سرور واحد، Airflow استخراج داده های خود را از Google BigQuery ساده کرده است، تجزیه و تحلیل را در SQL اجرا می کند، و نتایج را برای گزارش ها و داشبورد ذخیره می کند. موفقیت این استقرار منجر به گسترش وظایف، از جمله آموزش طبقه‌بندی‌کننده‌های یادگیری ماشین، محاسبه شاخص‌های جستجو، تست A/B و هدف‌گیری کاربر شده است.

با نگاهی به آینده، Quizlet قصد دارد با انتقال پایگاه داده ابرداده به یک نمونه اختصاصی، ادغام با Google Cloud Storage و تغییر به یک سیستم صف توزیع شده، استقرار Airflow خود را بهبود بخشد. در اصل، Apache Airflow یک تغییر دهنده بازی برای Quizlet بوده است و به آنها قدرت می دهد تا کارهای بیشتری انجام دهند و تجارت خود را به جلو ببرند.

نتیجه

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

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

امیدوارم این راهنما مفید بوده باشد و دانش و اطمینان لازم را برای شروع راه اندازی Airflow-Docker خود در اختیار شما قرار داده باشد.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1402-12-30 15:11:05

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید