[DataEngineering] EC2(ubuntu)에 airflow 설치

유혜지·2023년 11월 27일
1

DataEngineering

목록 보기
2/6

....


환경 설정

EC2 내 가상환경에서 진행하고자 몇 가지 설정을 해주겠다.

$ sudo apt-get update
$ sudo apt-get install python3-virtualenv
$ virtualenv airflow
$ cd airflow
$ source bin/activate # 가상환경 활성화


Airflow 설치

airflow를 설치하고 경로 설정을 진행해준다.

$ pip install apache-airflow
$ export AIRFLOW_HOME = ~/airflow
$ echo $AIRFLOW_HOME


DB 초기화

airflow db를 초기화해준다.

$ airflow db init

사용자 계정 생성

airflow를 관리할 사용자 계정을 만들어준다. 아래 명령을 입력하면 비밀번호 설정을 해줘야 하는데, 이 때 입력한 비밀번호를 잊지 않고 기억해두도록 한다.

airflow users create \
    --username admin \
    --firstname {firstname} \
    --lastname {lastname} \
    --role Admin \
    --email {email}

Airflow web ui 실행

airflow web ui를 8080 포트로 띄울 예정이다. 따라서 웹서버를 실행시키기 전에 8080 포트를 사용 가능하도록 설정해줘야 한다.
'인스턴스'
→ '보안'
→ '인바운드 규칙'
→ '보안 그룹'
→ '인바운드 규칙'
→ '인바운드 규칙 편집'
→ '규칙 추가'

위와 같이 설정해준 뒤, 규칙 저장을 누르고 나온다.

airflow webserver --port 8080

url에 {퍼블릭 IPv4 DNS}:8080 을 입력하고 들어가면 아래와 같은 화면이 나온다.

이전에 설정해준 username과 password를 입력해 로그인한다.


dag 파일 실행해보기


airflow.cfg 파일의 dags_folder 변수에 DAG들이 저장되는 디렉토리를 지정할 수 있다. 기본값은 위와 같이 /home/ubuntu/airflow/dags이다. 처음에는 dags 디렉토리가 없어서 mkdir로 만들어줘야 한다.
미리 작성해둔 크롤링 dag 파일을 /home/ubuntu/airflow/dags 디렉토리에 넣고 airflow dags list로 dag 상태를 확인해본다.

DAG이 너무 많다... 기본 예제로 주어지는 dag들을 안보이게 지워주겠다.

  • airflow.cfg 파일의 load_examples 변수를 False로 설정해준다.

다시 dag 상태를 확인해보면 내가 dags 디렉토리에 올려둔 파일만 dag list에 올라와있는 것을 확인할 수 있다.

DAG 파일을 동기화하고 관리하는 작업은 scheduler가 담당하고 있다. 방금 올린 DAG을 활성화시키기 위해 scheduler를 활성화시켜준다.

airflow scheduler


web ui를 확인해보면 dags 디렉토리에 올려둔 dag이 활성화되어 있다.

dag을 실행시켜준다.


실행시킨 뒤 조금만 기다리면 위 그림의 가장 우측 부분처럼 task가 전부 정상적으로 완료된 것을 확인할 수 있다. 앞 부분은 시행착오 ㅎ ㅎ🫡
dag 구성에 csv 파일로 저장 및 S3 연결하는 작업을 넣어줘서 aws S3 서비스로 들어가보면 다음과 같이 추출한 정보들이 csv 파일로 잘 저장된 것을 확인할 수 있다.

dag 구성과 S3 연결은 차차 다음 게시글에서 다뤄보겠다..

0개의 댓글