[airflow] Covid-19 ETL by bigquery #1

오현우·2022년 6월 14일
0

airflow

목록 보기
16/20

시작하기에 앞서..

진행과정에서 폴더구조나 해당 프로세스에 대해 이해가 가지 않을 수 있습니다.
이러한 문제사항 발생시 저의 깃허브를 참조하셔서 진행하시되 막히면 언제든지 질문주세요! 아무도 보지 않겠지만... ㅠ

https://github.com/HyunWooZZ/covid-19_ETL

GCP를 이용해 가상 머신 먼저 생성하기

gcp에 접속하여 ubuntu 20.04 이미지를 바탕으로 가상 머신을 먼저 생성하자!!

가상 머신 연결하기

aws와는 달리 gcp에서는 이용자가 직접 key를 만들고 공개키를 구글 머신 메타데이터에 등록을 해줘야 한다.

먼저 rsa 기반 공개키와 비밀키를 생성해보자.

참고 https://cloud.google.com/compute/docs/connect/add-ssh-keys

ssh-keygen -t rsa -b 2048 -f <dir/filename> -C <"user_google_id">

정상적으로 생성된 모습이다. (리눅스 환경에서도 비슷하게 만들 수 있다.)

이제 우리는 키 2개를 볼 수 있는데 하나는 key.pub, 하나는 key 이렇게 될 것이다.

.pub에 적혀있는 내용을 메타데이터 > ssh 키 를 클릭하여 공개키를 등록하자.

이제 거의 다 되었다.

ssh -i gcp_key google_id@public_ip 를 입력해 host에 접속이 가능하다.

정상적으로 접속이 되었다.

가상 머신에 airflow 설치하기

docker 설치

해당 페이지를 보면서 설치하자.

https://docs.docker.com/engine/install/ubuntu/

  1. sudo apt-get update

  2. sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release

  3. sudo mkdir -p /etc/apt/keyrings

  4. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

  5. echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

  6. sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

  7. sudo docker run hello-world

docker compose를 통해 airflow build 하기

curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.3.2/docker-compose.yaml' 를 통해 yaml 파일을 받아주자.

우리는 local executor를 사용할 예정이다. 때문에 yaml 파일을 조금 수정해주자.

celery executor 관련된 redis, backend, worker, broker, flower 등을 모두 주석처리 해주자.
그리고 example 로드도 false 로 진행해주자.

이제 도커 컴포즈를 진행해주자.

하기전에 디렉토리와 .env 파일을 만들어주자.

mkdir -p ./dags ./logs ./plugins
echo -e "AIRFLOW_UID=$(id -u)" > .env

docker compose version

정상적으로 잘 출력이 된다.

먼저 db migration 부터 진행해주자.

docker-compose up airflow-init

정상적으로 작동이 된다.

컨테이너 작동상태를 확인해보자.

정상적으로 작동한다.

airflow webserver에 접속하기

공개 ip로 설정된 주소를 통해 8080 포트로 들어가 접속한다.

방화벽 설정은 진행 해줘야한다.

참고할 내용

http://공개ip주소:port 로 이제 접속이 가능하다.

도커를 통해 airflow 환경 세팅을 마무리하며..

이 작업을 하기 위해 하루를 꼬박 트러블 슈팅을 진행했다. 이제 가장 어려운 환경세팅이 끝이 났으므로 dag 구성만 하면 된다.

profile
핵심은 같게, 생각은 다르게

3개의 댓글

comment-user-thumbnail
2022년 7월 5일

안녕하세요, 선생님
기록해두신 내용 보며 잘 따라하고 있습니다.
그런데, docker compose up airflow-init 단계에서..
잘 진행되다가 airflow를 실행시키기 위한 메모리가 부족하다고 뜨네요 ㅠㅠ
혹시 GCP VM 램은 몇으로 하셨는지 여쭤봐도 될까요??
저는 e2-medium (4GB 메모리)로 만들어서 진행했는데
이게 부족한건가싶습니다..

2개의 답글