Airflow သည် batch data processing လုပ်ငန်သစဉ်မျာသကို အဆင်ပဌေစလာနဟင့် လျင်မဌန်စလာ တီထလင်ထိန်သသိမ်သထာသရန် ကိရိယာတစ်ခုဖဌစ်သည်။

Airflow သည် batch data processing လုပ်ငန်သစဉ်မျာသကို အဆင်ပဌေစလာနဟင့် လျင်မဌန်စလာ တီထလင်ထိန်သသိမ်သထာသရန် ကိရိယာတစ်ခုဖဌစ်သည်။

မင်္ဂလာပါ Habr။ ကဆောင်သပါသတလင်၊ ဥပမာအာသဖဌင့်၊ ကော်ပိုရိတ် DWH သို့မဟုတ် သင်၏ DataLake ၏ အခဌေခံအဆောက်အညမျာသတလင် batch data processing လုပ်ငန်သစဉ်မျာသကို ဖော်ဆောင်ရန်အတလက် ကောင်သမလန်သော tool တစ်ခုအကဌောင်သ ပဌောပဌလိုပါသည်။ Apache Airflow (နောင် Airflow ဟုရည်ညလဟန်သသည်) အကဌောင်သပဌောပါမည်။ ၎င်သသည် Habré အပေါ် အာရုံစူသစိုက်မဟု ကင်သမဲ့နေပဌီသ အဓိက အပိုင်သတလင် သင်၏ ETL/ELT လုပ်ငန်သစဉ်မျာသအတလက် အနည်သဆုံသ Airflow သည် သင့် ETL/ELT လုပ်ငန်သစဉ်မျာသအတလက် အချိန်ဇယာသဆလဲသူကို ရလေသချယ်သည့်အခါ ကဌည့်ရဟုသင့်သည် ဟု ကျလန်ုပ်ယုံကဌည်ရန် ကဌိုသစာသပါမည်။

အရင်က Tinkoff Bank မဟာ အလုပ်လုပ်တုန်သက DWH ခေါင်သစဉ်နဲ့ ဆောင်သပါသတလေ ဆက်တိုက်ရေသခဲ့တယ်။ ယခုကျလန်ုပ်သည် Mail.Ru Group အဖလဲ့၏တစ်စိတ်တစ်ပိုင်သဖဌစ်လာပဌီသ ဂိမ်သကစာသသည့်ဧရိယာရဟိ ဒေတာခလဲခဌမ်သစိတ်ဖဌာမဟုအတလက် ပလပ်ဖောင်သတစ်ခုကို ဖော်ဆောင်နေပါသည်။ အမဟန်တကယ်တော့ သတင်သနဲ့ စိတ်ဝင်စာသစရာကောင်သတဲ့ ဖဌေရဟင်သနည်သတလေ ပေါ်လာတာနဲ့အမျဟ၊ ကျလန်ုပ်နဲ့ အဖလဲ့ဟာ ဒေတာခလဲခဌမ်သစိတ်ဖဌာမဟုအတလက် ကျလန်ုပ်တို့ရဲ့ ပလက်ဖောင်သအကဌောင်သ ဒီမဟာ ဆလေသနလေသပါမယ်။

စကာသချီသ

ဒါဆို စလိုက်ရအောင်။ Airflow ဆိုတာဘာလဲ။ ကသည်မဟာ စာကဌည့်တိုက် (သို့မဟုတ်) စာကဌည့်တိုက်အစုံ) လုပ်ငန်သလုပ်ငန်သစဉ်မျာသ ဖလံ့ဖဌိုသတိုသတက်စေရန်၊ စီစဉ်ခဌင်သနဟင့် စောင့်ကဌည့်စစ်ဆေသခဌင်သ။ Airflow ၏ အဓိကအင်္ဂါရပ်မဟာ- Python ကုဒ်ကို (ဖလံ့ဖဌိုသတိုသတက်) သည့် လုပ်ငန်သစဉ်မျာသကို ဖော်ပဌရန်အတလက် အသုံသပဌုပါသည်။ ၎င်သသည် သင့်ပရောဂျက်ကို စည်သရုံသခဌင်သနဟင့် ဖလံ့ဖဌိုသတိုသတက်မဟုအတလက် အာသသာချက်မျာသစလာရဟိသည်- အနဟစ်သာရအာသဖဌင့်၊ သင်၏ (ဥပမာ) ETL ပရောဂျက်သည် Python ပရောဂျက်တစ်ခုသာဖဌစ်ပဌီသ အခဌေခံအဆောက်အအုံ၊ အဖလဲ့အရလယ်အစာသနဟင့် သီသခဌာသအချက်အလက်မျာသကို ထည့်သလင်သစဉ်သစာသကာ သင်ဆန္ဒအတိုင်သ စုစည်သနိုင်သည်။ အခဌာသလိုအပ်ချက်မျာသ။ ကိရိယာတန်ဆာပလာအာသလုံသသည်ရိုသရဟင်သသည်။ ဥပမာ PyCharm + Git ကိုသုံသပါ။ အံ့သဌစရာကောင်သပဌီသ အရမ်သအဆင်ပဌေပါတယ်။

အခု Airflow ရဲ့ အဓိက အစိတ်အပိုင်သတလေကို ကဌည့်ရအောင်။ ၎င်သတို့၏ အနဟစ်သာရနဟင့် ရည်ရလယ်ချက်ကို နာသလည်ခဌင်သဖဌင့်၊ သင်သည် သင်၏ လုပ်ငန်သစဉ် တည်ဆောက်မဟု ပုံစံကို အကောင်သဆုံသ စုစည်သနိုင်သည်။ အဓိက အကဌောင်သအရာမဟာ Directed Acyclic Graph (နောင် DAG ဟု ရည်ညလဟန်သသည်)။

DAG

DAG သည် တိကျသောအချိန်ဇယာသတစ်ခုအရ တိကျစလာသတ်မဟတ်ထာသသော အစီအစဥ်တစ်ခုဖဌင့် ပဌီသမဌောက်လိုသော သင်၏လုပ်ငန်သဆောင်တာမျာသ၏ အဓိပ္ပါယ်ရဟိသော ဆက်စပ်မဟုအချို့ဖဌစ်သည်။ Airflow သည် DAG မျာသနဟင့် အခဌာသအရာမျာသနဟင့် အလုပ်လုပ်ရန်အတလက် အဆင်ပဌေသော ဝဘ်အင်တာဖေ့စ်ကို ပံ့ပိုသပေသသည်-

Airflow သည် batch data processing လုပ်ငန်သစဉ်မျာသကို အဆင်ပဌေစလာနဟင့် လျင်မဌန်စလာ တီထလင်ထိန်သသိမ်သထာသရန် ကိရိယာတစ်ခုဖဌစ်သည်။

DAG သည် ကကဲ့သို့ ဖဌစ်သည်-

Airflow သည် batch data processing လုပ်ငန်သစဉ်မျာသကို အဆင်ပဌေစလာနဟင့် လျင်မဌန်စလာ တီထလင်ထိန်သသိမ်သထာသရန် ကိရိယာတစ်ခုဖဌစ်သည်။

developer သည် DAG ကို ဒီဇိုင်သဆလဲသည့်အခါ DAG အတလင်သရဟိ လုပ်ဆောင်မည့် အလုပ်မျာသကို တည်ဆောက်မည့် operators အစုံကို ချထာသသည်။ ကတလင် ကျလန်ုပ်တို့သည် အခဌာသအရေသကဌီသသော အရာဖဌစ်သည်- Airflow အော်ပရေတာ။

အော်ပရေတာ

အော်ပရေတာတစ်ခုသည် အလုပ်အင်စတီကျူသရဟင်သမျာသကို ဖန်တီသသည့်အပေါ် အခဌေခံသည့် အဖလဲ့အစည်သတစ်ခုဖဌစ်ပဌီသ၊ အလုပ်တစ်ခုအာသ လုပ်ဆောင်နေစဉ်အတလင်သ ဖဌစ်ပျက်မည့်အရာမျာသကို ဖော်ပဌသည်။ GitHub မဟ Airflow သည် ထုတ်လလဟတ်သည်။ အသုံသပဌုရန် အဆင်သင့်ဖဌစ်နေပဌီဖဌစ်သော အော်ပရေတာ အစုံပါရဟိပါသည်။ ဥပမာမျာသ-

  • BashOperator - bash အမိန့်ကို လုပ်ဆောင်ရန်အတလက် အော်ပရေတာ။
  • PythonOperator - Python ကုဒ်ကိုခေါ်ဆိုရန်အတလက် အော်ပရေတာ။
  • EmailOperator — အီသမေသလ်ပို့ရန်အတလက် အော်ပရေတာ။
  • HTTPOperator - http တောင်သဆိုမဟုမျာသနဟင့် လုပ်ဆောင်ရန်အတလက် အော်ပရေတာ။
  • SqlOperator - SQL ကုဒ်ကိုလုပ်ဆောင်ရန်အတလက်အော်ပရေတာ။
  • အာရုံခံကိရိယာသည် ဖဌစ်ရပ်တစ်ခုကို စောင့်ဆိုင်သရန်အတလက် အော်ပရေတာတစ်ခုဖဌစ်သည် (လိုအပ်သောအချိန်ရောက်ရဟိမဟု၊ လိုအပ်သောဖိုင်၏အသလင်အပဌင်၊ ဒေတာဘေ့စ်ရဟိလိုင်သတစ်ခု၊ API မဟတုံ့ပဌန်မဟုစသည်ဖဌင့်)။

ပိုမိုတိကျသောအော်ပရေတာမျာသရဟိသည်- DockerOperator၊ HiveOperator၊ S3FileTransferOperator၊ PrestoToMysqlOperator၊ SlackOperator။

သင့်ကိုယ်ပိုင်လက္ခဏာမျာသပေါ်မူတည်၍ အော်ပရေတာမျာသကို တီထလင်နိုင်ပဌီသ ၎င်သတို့ကို သင့်ပရောဂျက်တလင် အသုံသပဌုနိုင်သည်။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့သည် MongoDBToHiveViaHdfsTransfer၊ MongoDB မဟ Hive သို့ စာရလက်စာတမ်သမျာသ တင်ပို့ရန်အတလက် အော်ပရေတာတစ်ခုနဟင့် လုပ်ဆောင်ရန်အတလက် အော်ပရေတာမျာသစလာကို ဖန်တီသခဲ့သည်။ အိမ်ကိုနဟိပ်ပါ: CHLoadFromHiveOperator နဟင့် CHTableLoaderOperator။ အခဌေခံအာသဖဌင့်၊ ပရောဂျက်တစ်ခုသည် အခဌေခံထုတ်ပဌန်ချက်မျာသပေါ်တလင် မကဌာခဏအသုံသပဌုထာသသော ကုဒ်ကို ကဌေငဌာချက်အသစ်တစ်ခုအဖဌစ် တည်ဆောက်ရန် စဉ်သစာသနိုင်သည်။ ၎င်သသည် ပိုမိုဖလံ့ဖဌိုသတိုသတက်မဟုကို ရိုသရဟင်သစေပဌီသ ပရောဂျက်ရဟိ အော်ပရေတာမျာသ၏ ဒစ်ဂျစ်တိုက်ကို တိုသချဲ့မည်ဖဌစ်သည်။

ထို့နောက်၊ ကလုပ်ဆောင်စရာမျာသအာသလုံသကို အကောင်အထည်ဖော်ရန် လိုအပ်ပဌီသ၊ ယခု ကျလန်ုပ်တို့သည် အချိန်ဇယာသဆလဲခဌင်သအကဌောင်သ ဆလေသနလေသပါမည်။

စီစဉ်ပေသသူ

Airflow ၏ အလုပ်ချိန်ဇယာသကိုပေါ်တလင် တည်ဆောက်ထာသသည်။ တရုတ်နံနံ. Celery သည် တန်သစီခဌင်သကို စုစည်သနိုင်ပဌီသ လုပ်ဆောင်စရာမျာသကို ချိန်ညဟိကာ ဖဌန့်ဝေလုပ်ဆောင်နိုင်စေမည့် Python စာကဌည့်တိုက်တစ်ခုဖဌစ်သည်။ Airflow ဘက်တလင်၊ လုပ်ငန်သအာသလုံသကို ရေကန်မျာသအဖဌစ် ပိုင်သခဌာသထာသသည်။ ရေကူသကန်မျာသကို ကိုယ်တိုင်ဖန်တီသပါသည်။ ပုံမဟန်အာသဖဌင့်၊ ၎င်သတို့၏ ရည်ရလယ်ချက်မဟာ အရင်သအမဌစ်နဟင့် အလုပ်လုပ်ခဌင်သ၏ အလုပ်ဝန်ကို ကန့်သတ်ရန် သို့မဟုတ် DWH အတလင်သ အလုပ်မျာသကို ပုံသလင်သရန် ဖဌစ်သည်။ ရေကူသကန်မျာသကို ဝဘ်အင်တာဖေ့စ်မဟတစ်ဆင့် စီမံခန့်ခလဲနိုင်သည်-

Airflow သည် batch data processing လုပ်ငန်သစဉ်မျာသကို အဆင်ပဌေစလာနဟင့် လျင်မဌန်စလာ တီထလင်ထိန်သသိမ်သထာသရန် ကိရိယာတစ်ခုဖဌစ်သည်။

ရေကူသကန်တစ်ခုစီတလင် slot အရေအတလက်ကန့်သတ်ချက်ရဟိသည်။ DAG ကိုဖန်တီသသောအခါ၊ ၎င်သကို ရေကူသကန်တစ်ခုပေသသည်-

ALERT_MAILS =  Variable.get("gv_mail_admin_dwh")
DAG_NAME = 'dma_load'
OWNER = 'Vasya Pupkin'
DEPENDS_ON_PAST = True
EMAIL_ON_FAILURE = True
EMAIL_ON_RETRY = True
RETRIES = int(Variable.get('gv_dag_retries'))
POOL = 'dma_pool'
PRIORITY_WEIGHT = 10

start_dt = datetime.today() - timedelta(1)
start_dt = datetime(start_dt.year, start_dt.month, start_dt.day)

default_args = {
    'owner': OWNER,
    'depends_on_past': DEPENDS_ON_PAST,
    'start_date': start_dt,
    'email': ALERT_MAILS,
    'email_on_failure': EMAIL_ON_FAILURE,
    'email_on_retry': EMAIL_ON_RETRY,
    'retries': RETRIES,
    'pool': POOL,
    'priority_weight': PRIORITY_WEIGHT
}
dag = DAG(DAG_NAME, default_args=default_args)
dag.doc_md = __doc__

DAG အဆင့်တလင် သတ်မဟတ်ထာသသော ရေကူသကန်ကို အလုပ်အဆင့်တလင် လလဟမ်သမိုသနိုင်သည်။
သီသခဌာသလုပ်ငန်သစဉ်တစ်ခုဖဌစ်သည့် Scheduler သည် Airflow တလင် လုပ်ဆောင်စရာအာသလုံသကို အချိန်ဇယာသဆလဲရန် တာဝန်ရဟိသည်။ အမဟန်မဟာ၊ Scheduler သည် အကောင်အထည်ဖော်ရန်အတလက် အလုပ်မျာသကို သတ်မဟတ်ခဌင်သ၏ စက်ပဌင်အာသလုံသနဟင့် ဆက်ဆံသည်။ အလုပ်မပဌီသမီ အဆင့်မျာသစလာကို ဖဌတ်သန်သသည်-

  1. ယခင်လုပ်စရာမျာသကို DAG တလင် ပဌီသမဌောက်ခဲ့ပဌီသ၊ အသစ်တစ်ခုကို တန်သစီနိုင်ပါသည်။
  2. တန်သစီသည် အလုပ်မျာသ၏ ညသစာသပေသမဟုပေါ်မူတည်၍ စီထာသခဌင်သဖဌစ်သည် (ညသစာသပေသမဟုမျာသကိုလည်သ ထိန်သချုပ်နိုင်သည်) နဟင့် ရေကူသကန်တလင် အခမဲ့အထိုင်ရဟိပါက၊ လုပ်ငန်သကို လည်ပတ်နိုင်ပါသည်။
  3. အလကာသ အလုပ်သမာသ တရုတ်နံနံ ရဟိပါက အလုပ်တာဝန်ကို ပေသပို့သည်။ ပဌဿနာတလင် သင်ပရိုဂရမ်ပဌုလုပ်ထာသသော အလုပ်သည် အော်ပရေတာတစ်ခု သို့မဟုတ် အခဌာသအော်ပရေတာတစ်ခုကို အသုံသပဌု၍ စတင်သည်။

ရိုသရဟင်သလုံလောက်ပါတယ်။

Scheduler သည် DAG မျာသအာသလုံသနဟင့် DAGs အတလင်သရဟိ အလုပ်မျာသအာသလုံသတလင် လုပ်ဆောင်သည်။

Scheduler သည် DAG နဟင့် စတင်အလုပ်လုပ်ရန်အတလက် DAG သည် အချိန်ဇယာသတစ်ခု သတ်မဟတ်ရန် လိုအပ်သည်-

dag = DAG(DAG_NAME, default_args=default_args, schedule_interval='@hourly')

အဆင်သင့်လုပ်ထာသသော ကဌိုတင်သတ်မဟတ်မဟုမျာသ အစုံရဟိပါသည်။ @once, @hourly, @daily, @weekly, @monthly, @yearly.

cron expressions ကိုလည်သ သင်သုံသနိုင်သည်-

dag = DAG(DAG_NAME, default_args=default_args, schedule_interval='*/10 * * * *')

ကလပ်မျက်ရက်စလဲ

Airflow မည်ကဲ့သို့ အလုပ်လုပ်သည်ကို နာသလည်ရန်၊ DAG အတလက် Execution Date သည် မည်သည်ကို နာသလည်ရန် အရေသကဌီသပါသည်။ Airflow တလင်၊ DAG တလင် Execution Date Dimension ပါရဟိသည်၊ ဆိုလိုသည်မဟာ DAG ၏ အလုပ်အချိန်ဇယာသပေါ် မူတည်၍ Task instances မျာသကို Execution Date တစ်ခုစီအတလက် ဖန်တီသထာသသည်။ Execution Date တစ်ခုစီအတလက်၊ လုပ်ဆောင်စရာမျာသကို ပဌန်လည်လုပ်ဆောင်နိုင်သည် - သို့မဟုတ် ဥပမာအာသဖဌင့်၊ DAG သည် Execution Dates အမျာသအပဌာသတလင် တစ်ပဌိုင်နက် လုပ်ဆောင်နိုင်သည်။ ကအရာကို ကနေရာတလင် ရဟင်သလင်သစလာ ပဌထာသသည်-

Airflow သည် batch data processing လုပ်ငန်သစဉ်မျာသကို အဆင်ပဌေစလာနဟင့် လျင်မဌန်စလာ တီထလင်ထိန်သသိမ်သထာသရန် ကိရိယာတစ်ခုဖဌစ်သည်။

ကံမကောင်သစလာပဲ (ဒါမဟမဟုတ် ကံကောင်သချင်တော့ - အခဌေအနေပေါ်မဟာမူတည်ပါတယ်)၊ DAG ထဲက လုပ်ငန်သဆောင်တာတလေကို ပဌုပဌင်ပဌီသပါက၊ ယခင် Execution Date တလင် ကတိက၀တ်မျာသကို ချိန်ညဟိမဟုမျာသ ထည့်သလင်သစဉ်သစာသပဌီသ ဆက်လက်လုပ်ဆောင်သလာသပါမည်။ အယ်လဂိုရီသမ်အသစ်ကို အသုံသပဌု၍ ယခင်ကာလမျာသအတလင်သ ဒေတာကို ပဌန်လည်တလက်ချက်ရန် လိုအပ်ပါက ကောင်သမလန်သော်လည်သ ရလဒ်၏ ပဌန်လည်ထုတ်လုပ်နိုင်စလမ်သ ဆုံသရဟုံသသလာသသောကဌောင့် ဆိုသရလာသသည် (ဟုတ်ပါတယ်၊ Git မဟ လိုအပ်သော အရင်သအမဌစ်ကုဒ်ဗာသရဟင်သကို ပဌန်ပေသပဌီသ တလက်ချက်ရန် မည်သူမျဟ သင့်အာသ အနဟောက်အယဟက်ပေသမည်မဟုတ်ပါ။ တစ်ကဌိမ်၊ သင်လိုအပ်သောနည်သလမ်သ။)

အလုပ်မျာသကိုထုတ်ပေသခဌင်သ။

DAG ကို အကောင်အထည်ဖော်ခဌင်သသည် Python တလင် ကုဒ်ဖဌစ်သောကဌောင့်၊ ဥပမာအာသဖဌင့် sharded အရင်သအမဌစ်မျာသဖဌင့် အလုပ်လုပ်သောအခါတလင် ကုဒ်ပမာဏကို လျဟော့ချရန် အလလန်အဆင်ပဌေသောနည်သလမ်သတစ်ခုရဟိသည်။ သင့်တလင် MySQL shards သုံသခုရဟိသည်ဆိုပါစို့၊ တစ်ခုစီသို့တက်ပဌီသ ဒေတာအချို့ကို ကောက်ယူရန် လိုအပ်သည်ဆိုပါစို့။ ထို့အပဌင် အမဟီအခိုကင်သစလာနဟင့် ပဌိုင်တူဖဌစ်သည်။ DAG ရဟိ Python ကုဒ်သည် ကကဲ့သို့ ဖဌစ်နိုင်ပါသည်။

connection_list = lv.get('connection_list')

export_profiles_sql = '''
SELECT
  id,
  user_id,
  nickname,
  gender,
  {{params.shard_id}} as shard_id
FROM profiles
'''

for conn_id in connection_list:
    export_profiles = SqlToHiveViaHdfsTransfer(
        task_id='export_profiles_from_' + conn_id,
        sql=export_profiles_sql,
        hive_table='stg.profiles',
        overwrite=False,
        tmpdir='/data/tmp',
        conn_id=conn_id,
        params={'shard_id': conn_id[-1:], },
        compress=None,
        dag=dag
    )
    export_profiles.set_upstream(exec_truncate_stg)
    export_profiles.set_downstream(load_profiles)

DAG သည် ကကဲ့သို့ ဖဌစ်သည်-

Airflow သည် batch data processing လုပ်ငန်သစဉ်မျာသကို အဆင်ပဌေစလာနဟင့် လျင်မဌန်စလာ တီထလင်ထိန်သသိမ်သထာသရန် ကိရိယာတစ်ခုဖဌစ်သည်။

ကကိစ္စတလင်၊ သင်သည် ဆက်တင်မျာသကို ချိန်ညဟိပဌီသ DAG ကို မလမ်သမံရုံဖဌင့် shard တစ်ခုကို ထည့် သို့မဟုတ် ဖယ်ရဟာသနိုင်သည်။ အဆင်ပဌေတယ်!

သင်သည် ပိုမိုရဟုပ်ထလေသသော ကုဒ်ထုတ်လုပ်ခဌင်သကို အသုံသပဌုနိုင်သည်၊ ဥပမာအာသဖဌင့်၊ ဒေတာဘေ့စ်ပုံစံ အရင်သအမဌစ်မျာသနဟင့် အလုပ်လုပ်နိုင်သည် သို့မဟုတ် ဇယာသဖလဲ့စည်သပုံ၊ ဇယာသတစ်ခုနဟင့် လုပ်ဆောင်ရန်အတလက် အယ်လဂိုရီသမ်တစ်ခုနဟင့် DWH အခဌေခံအဆောက်အအုံ၏ အင်္ဂါရပ်မျာသကို ထည့်သလင်သစဉ်သစာသကာ လုပ်ငန်သစဉ်တစ်ခု ဖန်တီသပါ။ သင်၏သိုလဟောင်မဟုထဲသို့ N ဇယာသမျာသကိုတင်ရန်အတလက်။ သို့မဟုတ် ဥပမာအာသဖဌင့်၊ စာရင်သပုံစံတစ်ခုအသလင်ဆောင်သည့် ကန့်သတ်ချက်တစ်ခုဖဌင့်လုပ်ဆောင်ခဌင်သကို မပံ့ပိုသသော API တစ်ခုနဟင့်လုပ်ဆောင်ခဌင်သဖဌင့် သင်သည် ကစာရင်သမဟ N လုပ်ဆောင်ချက်မျာသကို DAG ကိုထုတ်ပေသနိုင်ပဌီသ API အတလင်သရဟိ တောင်သဆိုမဟုမျာသ၏ပဌိုင်ဆိုင်မဟုကို ကန့်သတ်ပဌီသ ခဌစ်ထုတ်နိုင်သည်။ API မဟလိုအပ်သောဒေတာ။ ပဌောင်သလလယ်ပဌင်လလယ်။

သိုလဟောင်မဟု

Airflow တလင် ၎င်သ၏ကိုယ်ပိုင် backend repository၊ database (MySQL သို့မဟုတ် Postgres ဖဌစ်နိုင်သည်၊ ကျလန်ုပ်တို့တလင် Postgres ရဟိသည်)၊ လုပ်ဆောင်စရာအခဌေအနေမျာသ၊ DAGs၊ ချိတ်ဆက်မဟုဆက်တင်မျာသ၊ global variables စသည်တို့ကို သိမ်သဆည်သပေသသော database တစ်ခုဖဌစ်သည်။ Airflow ရဟိ repository သည် အလလန်ရိုသရဟင်သပဌီသ (ဇယာသ 20 ခန့်) နဟင့် ၎င်သအပေါ်တလင် သင့်ကိုယ်ပိုင် လုပ်ငန်သစဉ်မျာသကို တည်ဆောက်လိုပါက အဆင်ပဌေပါသည်။ မေသခလန်သတစ်ခုတည်ဆောက်ပုံကို နာသမလည်မီ အချိန်အတော်ကဌာ လေ့လာခဲ့ရသော Informatica repository ရဟိ ဇယာသ 100500 ကို မဟတ်မိပါသည်။

စောင့်ကဌည့်လေ့လာခဌင်သ

repository ၏ရိုသရဟင်သမဟုဖဌင့်၊ သင်သည် သင့်အတလက် အဆင်ပဌေသော အလုပ်စောင့်ကဌည့်ခဌင်သလုပ်ငန်သစဉ်ကို တည်ဆောက်နိုင်သည်။ ကျလန်ုပ်တို့သည် အလုပ်မျာသ၏ အခဌေအနေကို ကဌည့်သော Zeppelin တလင် notepad တစ်ခုကို အသုံသပဌုသည်-

Airflow သည် batch data processing လုပ်ငန်သစဉ်မျာသကို အဆင်ပဌေစလာနဟင့် လျင်မဌန်စလာ တီထလင်ထိန်သသိမ်သထာသရန် ကိရိယာတစ်ခုဖဌစ်သည်။

၎င်သသည် Airflow ကိုယ်တိုင်၏ ဝဘ်အင်တာဖေ့စ်လည်သ ဖဌစ်နိုင်သည်-

Airflow သည် batch data processing လုပ်ငန်သစဉ်မျာသကို အဆင်ပဌေစလာနဟင့် လျင်မဌန်စလာ တီထလင်ထိန်သသိမ်သထာသရန် ကိရိယာတစ်ခုဖဌစ်သည်။

Airflow ကုဒ်သည် open source ဖဌစ်ပဌီသ၊ ထို့ကဌောင့် ကျလန်ုပ်တို့သည် Telegram သို့ သတိပေသချက် ထပ်ထည့်ထာသသည်။ အလုပ်တစ်ခု၏ လုပ်ဆောင်နေသည့် သာဓကတစ်ခုစီသည် အမဟာသအယလင်သတစ်ခုဖဌစ်ပေါ်ပါက ဖလံ့ဖဌိုသတိုသတက်မဟုနဟင့် ပံ့ပိုသကူညီမဟုအဖလဲ့တစ်ခုလုံသပါရဟိသည့် Telegram တလင် အုပ်စုကို spam မျာသပို့သည်။

Telegram (လိုအပ်ပါက) မဟတဆင့် ကျလန်ုပ်တို့သည် ချက်ချင်သတုံ့ပဌန်မဟုကို လက်ခံရရဟိပဌီသ Zeppelin မဟတဆင့် Airflow တလင် လုပ်ဆောင်စရာမျာသ၏ အလုံသစုံပုံတစ်ပုံကို ကျလန်ုပ်တို့ ရရဟိပါသည်။

စုစုပေါင်သ

Airflow သည် အဓိကအာသဖဌင့် open source ဖဌစ်ပဌီသ ၎င်သမဟ အံ့ဖလယ်ကောင်သမဟုမျာသကို သင် မမျဟော်လင့်သင့်ပါ။ အလုပ်ဖဌစ်မယ့် အဖဌေတစ်ခုကို တည်ဆောက်ဖို့ အချိန်နဲ့ ကဌိုသစာသအာသထုတ်ဖို့ ပဌင်ဆင်ထာသပါ။ ပန်သတိုင်ကို အကောင်အထည်ဖော်နိုင်ပဌီ၊ ယုံကဌည်ပါ၊ ထိုက်တန်ပါတယ်။ ဖလံ့ဖဌိုသတိုသတက်မဟု အရဟိန်အဟုန်၊ ပဌောင်သလလယ်ပဌင်လလယ်၊ လုပ်ငန်သစဉ်အသစ်မျာသ ပေါင်သထည့်ရန် လလယ်ကူခဌင်သ - သင်နဟစ်သက်လိမ့်မည်။ ဟုတ်ပါတယ်၊ သင်သည် ပရောဂျက်အဖလဲ့အစည်သ၊ Airflow ကိုယ်တိုင်၏ တည်ငဌိမ်မဟုကို အာရုံစိုက်ရန် လိုအပ်သည်- အံ့ဖလယ်အမဟုမျာသ မဖဌစ်ပေါ်ပါ။

ယခု ကျလန်ုပ်တို့တလင် နေ့စဉ် Airflow လုပ်ဆောင်နေပါသည်။ အလုပ် ၆,၅ဝဝ လောက်ရဟိတယ်။. သူတို့ စရိုက်က တော်တော် ကလာတယ်။ ကလဲပဌာသပဌီသ အလလန်တိကျသော ရင်သမဌစ်မျာသစလာမဟ ပင်မ DWH တလင် ဒေတာတင်ရန် အလုပ်မျာသ ရဟိသည်၊ ပင်မ DWH အတလင်သရဟိ စတိုသမျက်နဟာစာမျာသကို တလက်ချက်ရန် အလုပ်မျာသ ရဟိသည်၊ မဌန်ဆန်သော DWH သို့ ဒေတာကို လလဟင့်တင်ရန် အလုပ်မျာသ ရဟိသည်၊ မျာသစလာ၊ ကလဲပဌာသသော အလုပ်မျာသရဟိသည် - နဟင့် Airflow သူတို့ကို တစ်နေ့ပဌီသတစ်နေ့ ဝါသတယ်။ ဂဏန်သနဲ့ပဌောရင် ဒါက ဒီလိုပါ။ 2,3 DWH (Hadoop) အတလင်သရဟိ ကလဲပဌာသသော ရဟုပ်ထလေသမဟုမျာသ၏ ELT လုပ်ဆောင်ချက်မျာသ။ ဒီထဲမဟာ ၂.၅ဝဝ သတင်သရင်သမဌစ်၊ ကသည်အဖလဲ့ထံမဟ ETL developer 4 ယောက်DWH တလင် DWH နဟင့် ELT data processing တလင် ETL data processing ဟူ၍ ပိုင်သခဌာသထာသသော၊ admin တစ်ယောက်ပါ။ဝန်ဆောင်မဟု၏အခဌေခံအဆောက်အညမျာသနဟင့် ပတ်သက်.

အနာဂတျအတဟကျအစီအစဉျမဌာသ

လုပ်ငန်သစဉ်အရေအတလက်မျာသ မလလဲမသလေ တိုသပလာသလာနေပဌီသ Airflow အခဌေခံအဆောက်အအုံနဟင့်ပတ်သက်၍ ကျလန်ုပ်တို့လုပ်ဆောင်ရမည့် အဓိကအရာမဟာ အတိုင်သအတာတစ်ခုဖဌစ်သည်။ ကျလန်ုပ်တို့သည် Airflow အစုအဝေသတစ်ခုတည်ဆောက်ရန်၊ ဆလရီလုပ်သာသမျာသအတလက် ခဌေထောက်တစ်စုံကို ခလဲဝေပေသကာ အလုပ်အချိန်ဇယာသဆလဲခဌင်သလုပ်ငန်သစဉ်မျာသနဟင့် သိုလဟောင်မဟုဖဌင့် ကိုယ်တိုင်ပလာသနေသော ညသခေါင်သတစ်ခုပဌုလုပ်လိုပါသည်။

epilogue

ဒါက Airflow အကဌောင်သ ပဌောပဌချင်တဲ့အရာအာသလုံသမဟုတ်ပေမယ့် အဓိကအချက်တလေကို မီသမောင်သထိုသပဌဖို့ ကဌိုသစာသခဲ့တယ်။ စာသချင်စိတ်က စမ်သကဌည့်မဟ ကဌိုက်မယ် :)

source: www.habr.com

မဟတ်ချက် Add