반응형

회사에서 airflow를 도입했는데

도커 오퍼레이터를 쓰는게 그렇게 쉽지는 않아서

지금 도커 허브에 올라온게 2.5 버전이 올라 왔고

문서는 3.4 버전이 stable이라

이글을 볼 때 지금 설치 버전과 문서 버전을 꼭 확인해 보라!

sudo chmod 666 /var/run/docker.sock

from datetime import datetime, timedelta
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.operators.docker_operator import DockerOperator
from airflow.operators.python_operator import BranchPythonOperator
from airflow.operators.dummy_operator import DummyOperator
from docker.types import Mount

default_args = {
'owner'                 : 'airflow',
'description'           : 'Use of the DockerOperator',
'depend_on_past'        : False,
'start_date'            : datetime(2021, 5, 1),
'email_on_failure'      : False,
'email_on_retry'        : False,
'retries'               : 1,
'retry_delay'           : timedelta(minutes=5)
}


with DAG('himari2', default_args=default_args, schedule_interval="0 */4 * * *", catchup=False) as dag:
    start_dag = DummyOperator(
        task_id='start_dag'
        )

    end_dag = DummyOperator(
        task_id='end_dag'
        )

    t1 = BashOperator(
        task_id='print_current_date',
        bash_command='date'
        )

    t2 = DockerOperator(
        task_id='himari_collector',
        image='centos:latest',
        api_version='auto',
        auto_remove=True,
        docker_url="unix://var/run/docker.sock",
        network_mode="host",
        environment={'ENVIRONMENT':'linux'},
        mount_tmp_dir=False,
        mounts=[
            Mount(source='/home/mx/docker/airflow/var/pos',
              target='/var/pos',
              type='bind'),
            Mount(source='/home/mx/docker/airflow/var/data',
              target='/var/data',
              type='bind'),
        ],
        )

    t4 = BashOperator(
        task_id='print_hello',
        bash_command='echo "hello world"'
        )

    start_dag >> t1

    t1 >> t2 >> t4

    t4 >> end_dag

'프로그래밍' 카테고리의 다른 글

무료 다이어그램 사이트  (0) 2023.02.17
블루아카이브 1위  (0) 2023.01.25
Airflow  (1) 2023.01.06
blazor ui 컨포넌트  (0) 2023.01.03
wsl2 고정 ip처럼 사용하기  (0) 2022.12.06
반응형

머신 런닝등에서 배치잡을 위한 프로그램

아파치꺼

설치과정은 회사 직원분이 설치해 주셔서 모름 ....

바로 스크립트 들어가자

대소문자 따짐 ....

from airflow.models.dag import DAG
from airflow.operators.bash import BashOperator

import datetime
import pendulum

# 한국 시간 timezone 설정
kst = pendulum.timezone("Asia/Seoul")
# 한국 시간 2021년 1월 1일 시작, 오전 8시마다 실행되는 DAG 설정
dag = DAG(
     "tutorial",
    default_args={
        "depends_on_past": True,
        "retries": 1,
        "retry_delay": datetime.timedelta(minutes=3),
    },
    start_date=pendulum.datetime(2021, 1, 1, tz=kst),
    schedule_interval="0 * * * *",
    catchup=False,
)


t1 = BashOperator(
    task_id="himari_test_1",
    bash_command='echo test1',
    dag=dag
)

t2 = BashOperator(
    task_id="himari_test_2",
    bash_command='echo test2',
    dag=dag
)

t1 >> t2

https://m.blog.naver.com/wideeyed/221565240108
요기 블로그가 잘 나온 듯

'프로그래밍' 카테고리의 다른 글

블루아카이브 1위  (0) 2023.01.25
airflow 도커 오퍼레이터  (0) 2023.01.10
blazor ui 컨포넌트  (0) 2023.01.03
wsl2 고정 ip처럼 사용하기  (0) 2022.12.06
docker network mode  (0) 2022.12.06

+ Recent posts