(airflow version 2 기준으로 작성)
export AIRFLOW_HOME=~/airflow
기본적으로 dag 디렉토리, cfg 파일, 로그 폴더 등이 airflow_home에 위치하도록 설정되어있다.
pip install apache-airflow
다른 아파치 프로젝트와 사용하기 위해 필요한 패키지들을 한 번에 설치할수도 있다. ([참고](https://airflow.apache.org/docs/apache-airflow/stable/extra-packages-ref.html))
airflow db init
airflow users create \
--role Admin \
--username x \
--firstname y \
--lastname z \
--email m \
--password n
airflow webserver --port 8080 >> ${AIRFLOW_HOME}/logs/webserver.log &
webserver의 로그가 어디에 저장되는지 찾기 힘들어서 webserver.log에 저장하도록 했다.
airflow scheduler >> ${AIRFLOW_HOME}/logs/scheduler.log &
import pendulum
from datetime import datetime
from airflow.models import DAG
from airflow.operators.bash import BashOperator
from airflow.operators.dummy import DummyOperator
KST = pendulum.timezone("Asia/Seoul")
args = {'owner': 'hamdoe'}
dag = DAG(dag_id='my_dag',
default_args=args,
start_date=datetime(2021, 2, 8, tzinfo=KST),
schedule_interval='0 0 * * *')
t0 = DummyOperator(task_id='dummy_task',
dag=dag)
t1 = BashOperator(task_id='hello',
bash_command='echo hello',
dag=dag)
t0 >> t1
airflow dags list
위 명령어로 각 dag의 filepath와 owner, paused 여부를 알 수 있다.
아까 실행한 웹서버에 들어가 dag를 누르면 위와 같은 화면이 나오는데, 왼쪽 상단의 토글을 눌러 dag를 unpause한 후 오른쪽 상단의 화살표를 누르면 수행이 된다.
수행기록을 남기지 않고 테스트만 하고 싶다면 아래 명령어를 실행하면 20210209를 execution date로 하여 수행하게 된다.
airflow dags test my_dag 20210209
airflow의 timezone과 execution date에 대한 설명은 다음 포스팅으로 정리 예정이다.