Jinsi ya Kutumia Airflow: Mwongozo wa Vitendo, wa Kuanzia Mwisho Hadi Mwisho kwa Ujenzi wa Mifumo ya Data Inayotegemeka
Ikiwa unasafirisha data au kuratibu kazi za ML, pengine umesikia wimbo ule ule: "Weka tu kwenye Airflow." Ukweli ni kwamba, Apache Airflow huangaza unapotaka kuonekana, kutegemeka, na udhibiti wa mtiririko wa kazi tata. Katika mwongozo huu wa vitendo, tutaeleza hatua kwa hatua jinsi ya kutumia Airflow—kutoka dhana msingi hadi mifumo iliyo tayari kwa uzalishaji—ili uweze kusafirisha mifumo unayoiamini.
Tutafanya iweze kutekelezeka: utapata mfumo wa akili kwa DAGs na kazi, mifano ya moja kwa moja na TaskFlow API, chaguzi za upelekaji, mikakati ya majaribio, na mbinu bora. Mwishowe, utatoka "Naweza kuendesha mafunzo" hadi "Naweza kuendesha hii katika prod."
Kumbuka: Kwa uchunguzi wa kina na marejeleo, hati rasmi ni bora na husasishwa mara kwa mara.
Apache Airflow ni Nini Hasa?
Airflow ni mratibu—sio kichakata data. Hupanga, huagiza, na hufuatilia kazi unayoendesha kwingineko (hifadhidata, maghala, kazi za Spark, APIs, kontena). Unaeleza mtiririko wa kazi kama DAGs (Grafu Zilizoongozwa za Acyclic), ambazo ni faili za Python zinazoandika kazi na utegemezi wao. Kisha Airflow hutekeleza kazi hizo kulingana na ratiba yako, vigezo, na mazingira.
- DAG: Ufafanuzi wa mtiririko wa kazi (grafu ya kazi na utegemezi).
- Kazi: Kitengo cha kazi (kitendakazi cha Python, utekelezaji wa SQL, amri ya Bash, kichochezi cha kazi ya nje, n.k.).
- Operator: Kiolezo cha aina ya kazi (mfano,
PythonOperator, BashOperator, KubernetesPodOperator).
- Scheduler: Huamua nini cha kuendesha na lini.
- Executor: Huendesha kazi (ndani ya nchi, na Celery, Kubernetes, n.k.).
- UI: Kituo chako cha udhibiti kwa uendeshaji, kumbukumbu, majaribio upya, na ukoo.
Anza na mafunzo rasmi mara tu unapoweka Airflow; hukupa picha kubwa haraka.
Kusakinisha na Kuendesha Airflow kwa Njia Sahihi
Airflow hubadilika. Chagua njia inayolingana na hatua yako:
- Uendelezaji wa ndani (kuanza haraka):
- Tumia Docker Compose ya kuanza haraka iliyotolewa na mradi. Huzungusha seva ya wavuti, kipanga ratiba, hifadhidata, na zaidi na chaguo-msingi bora.
- Nzuri kwa kujifunza na kurudia kwenye DAGs.
- Timu ndogo au maandalizi:
- Celery Executor au Kubernetes Executor na Postgres inayosimamiwa.
- Hifadhi kumbukumbu katika S3/GCS na ufungashe utegemezi na picha yako au
requirements.txt.
- Kubernetes Executor kwa elasticity au Celery Executor na wafanyakazi wanaojiongeza kiotomatiki.
- Siri za nje (Vault), ufuatiliaji thabiti (kumbukumbu + vipimo), na upelekaji wa bluu/kijani kwa masasisho.
Kidokezo: Weka msingi wako wa msimbo wa Airflow uliodhibitiwa na toleo, uliomo, na ujaribiwe kabla ya kukuza. Ukurasa wa "Mbinu Bora" unaeleza mifumo iliyo tayari kwa uzalishaji.
Dhana Muhimu Utakazotumia Kila Siku
DAGs: Mtiririko wako wa Kazi kama Msimbo
DAG ni faili ya Python ambayo inafafanua:
- Metadata ya DAG: id, ratiba, tarehe ya kuanza, lebo.
- Hoja chaguo-msingi: majaribio upya, wamiliki, SLAs.
Fikiria DAG kama "nini" na "lini," na kazi kama "jinsi gani."
Kazi na Operators
Operators ni vipengele vilivyotengenezwa tayari kwa kazi za kawaida. Mifano:
- PythonOperator / TaskFlow
@task kwa msimbo wa Python
- BashOperator kwa amri za shell
- SimpleHttpOperator kwa APIs
- KubernetesPodOperator kwa kazi zilizomo
- Watoaji wa SQL (mfano, Snowflake, BigQuery, Postgres) kwa kazi ya ghala
TaskFlow API: Njia ya Kisasa, ya Pythonic
TaskFlow API hukuruhusu kuandika kazi kama vitendakazi vya Python na @task, kurudisha thamani zinazopita kupitia XCom, na kuzitunga kwa usafi. Hupunguza boilerplate na kuboresha usomaji—inapendekezwa sana.
DAG Yako ya Kwanza ya Airflow (Toleo la TaskFlow)
Hapo chini kuna mfano mdogo wa mtindo wa ETL ili kuonyesha mawazo muhimu: upangaji, TaskFlow, utegemezi, na upitishaji wa data wa XCom.
from datetime import datetime
from airflow import DAG
from airflow.decorators import task
with DAG(
dag_id="weather_etl_example",
start_date=datetime(2024, 1, 1),
schedule="0 * * * *", # hourly
catchup=False,
tags=.
Upangaji, Catchup, na Backfills
schedule: Cron au presets (@daily, @hourly).
start_date + catchup: Ikiwa catchup=True, Airflow itajaza tena uendeshaji kutoka tarehe ya kuanza. Kwa mifumo ya mtindo wa utiririshaji, weka catchup=False.
- Backfills za mikono: Tumia UI au CLI kuendesha tena vipindi vya kihistoria.
Kanuni ya vitendo ya kidole gumba: washa catchup kwa kazi za bechi za uamuzi; zima kwa mifumo ya muda halisi au API iliyo na kiwango kidogo.
Kupitisha Data Kati ya Kazi (XCom) kwa Usalama
- Vitu vidogo: kurudisha thamani na TaskFlow ni sawa.
- Malipo makubwa: hifadhi katika hifadhi ya vitu (S3/GCS) na ufunguo katika XCom.
- Epuka data nyeti katika XCom; tumia backends za siri (mfano, Vault) na vigezo vya mazingira.
Urambazaji wa Kazi Inayobadilika na Mizigo ya Kazi ya Fan-out
Airflow inaweza kutoa kazi kwa nguvu wakati wa utekelezaji kulingana na ingizo—bora kwa seti za data zilizogawanywa au kazi za wapangaji wengi.
- Weka DAGs ziwe za uamuzi na zisizobadilika.
- Tenganisha upangaji (Airflow) kutoka kwa hesabu (Spark, dbt, maghala).
- Tumia TaskFlow API kwa uwazi na usafi wa XCom.
- Weka vigezo vya DAGs; tumia vigezo kwa busara.
- Fuatilia, tahadhari, na uandike mifumo yako.
Jinsi ya Kufanya Kazi na Maghala ya Data na ML
- Maghala ya data: Tumia operators wa mtoa huduma (mfano, SnowflakeOperator, BigQueryInsertJobOperator) kwa kazi za SQL. Hifadhi SQL katika faili au moduli zilizowekwa toleo.
- dbt: Chochea dbt kupitia Bash/KubernetesPodOperator au operators maalum wa dbt katika watoa huduma.
- ML: Ratibu utengenezaji wa vipengele, mafunzo, na hitimisho la bechi kama kazi tofauti; akiba ya vizalia katika hifadhi na vipimo vya kumbukumbu.
Upangaji wa Kina: Seti za Data na Utegemezi wa Msalaba wa DAG
- Seti za data huruhusu DAG moja kutoa seti ya data ya kimantiki ambayo huchochea DAG nyingine inaposasishwa—safi kuliko vichochezi vya ad-hoc.
- Kwa mifumo ya urithi, ExternalTaskSensor inafanya kazi, lakini seti za data zinaeleza zaidi.
Usalama na Uzingatiaji
- Tumia udhibiti wa ufikiaji unaotegemea jukumu (RBAC) katika UI.
- Tenga mazingira kwa kila timu au mpaka wa uaminifu.
- Weka njia za ukaguzi kupitia kumbukumbu na historia ya mabadiliko ya muunganisho.
Masasisho na Utoaji Toleo
- Jaribu masasisho katika maandalizi na mizigo ya kazi kama ya uzalishaji.
- Bandika na usasishe watoa huduma kwa makusudi.
- Soma maelezo ya toleo kwa mabadiliko maalum ya executor na uachaji.
Orodha ya Haraka ya DAG Yako ya Kwanza ya Uzalishaji
- Umiliki wazi (lebo ya
owner) na arifa zimeundwa.
retries imewekwa na kurudi nyuma kwa busara.
- Kazi zisizobadilika na utegemezi wazi.
- Malipo madogo ya XCom; data kubwa katika hifadhi.
- Kumbukumbu zimesafirishwa hadi hifadhi ya kudumu; vipimo vimesafirishwa nje.
- Mpango wa kusambaza (canary au bluu/kijani) na hatua za kurudisha nyuma.
Mfano: DAG ya Kweli ya Upakiaji wa Ghala
Mfumo huu hutoa faili za kila siku, huzithibitisha, na kuzipakia kwenye jedwali la ghala, na ramani inayobadilika kwa kila kizigeu na vitambuzi vinavyoweza kuahirishwa.
from datetime import datetime
from airflow import DAG
from airflow.decorators import task
from airflow.sensors.filesystem import FileSensor
- Kagua Mbinu Bora kabla ya kukuza hadi uzalishaji.
- Gundua hati za mtoa huduma kwa mifumo yako (maghala, mawingu, zana za ML).
Kwa njia: Harakisha uandishi na msaidizi wa AI
Inafaa kuzingatia: ikiwa unaandaa DAG nyingi, msaidizi wa AI anayeelewa msimbo anaweza kuharakisha boilerplate, kutoa stubs za TaskFlow, na hata kupendekeza marekebisho ya utegemezi. Ikiwa unataka kisaidizi chepesi kando ya kihariri chako na kivinjari, Sider.AI inaweza kuwa muhimu kwa uandishi upya wa haraka wa msimbo na maelezo wakati wa uendelezaji. Mambo Muhimu ya Kuzingatia
- Tumia Airflow kuratibu, sio kuhesabu.
- Pendelea TaskFlow API kwa DAGs safi, zinazoweza kujaribiwa.
- Weka data nje ya XCom; pitisha marejeleo badala yake.
- Tumia vitambuzi/operators vinavyoweza kuahirishwa ili kuokoa nafasi.
- Weka, jaribu, na uendeleze kupitia mazingira.
- Tegemea mafunzo rasmi na mbinu bora kama nyota yako ya kaskazini.
Maswali Yanayoulizwa Mara kwa Mara
Q1: Njia rahisi zaidi ya kujifunza jinsi ya kutumia Airflow ni ipi?
Anza na Mafunzo rasmi ili kuelewa DAGs, kazi, upangaji, na UI. Kisha jenga mfumo mdogo wa TaskFlow na urudie na mwongozo bora wa mbinu kwa utayari wa uzalishaji.
Q2: Je, ninapaswa kutumia TaskFlow API au operators wa kawaida katika Airflow?
Tumia TaskFlow API kwa mifumo mingi ya Pythonic kwa sababu ni safi na hushughulikia marejesho ya XCom kawaida. Operators wa kawaida bado ni wazuri kwa kazi zisizo za Python kama vile Bash, SQL, au kazi za kontena.
Q3: Ninawezaje kupitisha data kubwa kati ya kazi za Airflow?
Epuka kuweka malipo makubwa katika XCom. Hifadhi data katika S3/GCS au hifadhidata na upitishe marejeleo au URI pekee kupitia XCom ili kuweka kazi ziwe za haraka na za kuaminika.
Q4: Ninapaswa kuchagua executor gani kwa Airflow katika uzalishaji?
Kwa elasticity na utengaji, Kubernetes Executor ni chaguo-msingi thabiti. Kwa usanidi rahisi, Celery Executor hufanya kazi vizuri—hakikisha tu kujiongeza kiotomatiki, kumbukumbu thabiti, na siri za nje.
Q5: Ninawezaje kushughulikia utegemezi katika DAGs nyingi za Airflow?
Tumia Seti za Data kwa vichochezi vya msalaba wa DAG wakati mfumo mmoja hutoa data kwa mwingine. Vinginevyo, ExternalTaskSensor inaweza kuratibu uendeshaji, lakini Seti za Data ni safi kwa upangaji unaoendeshwa na data.