본문 바로가기
공부 및 정리/데이터 엔지니어링

[Airflow] 비트코인 일일 분 봉 데이터 파이프라인 프로젝트 (환경 설정편)

by 스파이펭귄 2024. 3. 6.
728x90

개요

최근 Airflow에 대해서 공부해보며 데이터에 대해 간단한 파이프라인을 만들어 데이터베이스에 저장하는 프로젝트라도 직접 해보면 좋겠다 싶었다.

요즘 가격이 미친듯이 오르는 비트코인의 분봉 데이터를 매일 오전 9시에 Airflow로 Upbit API를 이용하여 24시간의 데이터를 받아와 데이터 베이스에 적재하는 파이프라인을 만들어보는 과정을 정리해본다.

서버는 GCP 크레딧이 남아돌기 때문에 GCP Ubuntu 서버를 사용할 예정이다.

또한 포스팅이 상당히 길어질 것 같기 때문에 이번 포스트에서는 환경 설정을 해주는 부분만을 다룬다.

 

GCP 가입하기 및 VM Instance 생성하기

[Airflow] 개요 및 설치 방법

 

[Airflow] 개요 및 설치 방법

Airflow는 복잡한 워크 플로우와 데이터 처리 파이프라인을 구성 및 스케쥴링하고 모니터링하는데 특화된 오픈소스 Orchestration 플랫폼으로 Python으로 작성되어있다. Orchestration이란? PostgreSQL의 데이

bestech49.tistory.com

먼저 이전 포스팅을 따라서 GCP Instance를 만들고 Airflow와 도커를 설치한다. (웬만하면 디스크 크기를 30G 이상으로 잡아주자.)

 

Anaconda 및 Jupyter 설치

VM에 이미 Python이 있으나, 가상 환경을 간단히 만들 수 있도록 Anaconda를 사용해보자.

Free Download | Anaconda

 

Free Download | Anaconda

Anaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine.

www.anaconda.com

먼저 위 링크에 들어가보자.

제일 밑으로 내리면 installer가 있다. 적절한 파일을 다운받아주자. 본인은 x86 기반의 리눅스 installer를 받았다.

wget Anaconda 파일 링크

이후 아래 명령어를 통해 설치를 진행하자.

bash 아나콘다 설치 파일

위와 같은 메시지가 뜨면 엔터를 누른다.

이후 위 글자들이 뜨면 ctrl + c를 통해 모두 빼낸다. 이후는 전부 yes를 해주면 된다. (중간 경로 설정이 있는데 그건 그냥 엔터)

이후 아래 명령어를 통해 bashrc에 진입한다.

sudo vi ~/.bashrc
# 맨 밑에 export PATH="/home/{username}/anaconda3/bin:$PATH"
# {username}에는 실제 유저 이름이 들어가야 함.
source ~/.bashrc

이후 conda —version 을 시도해보면 잘 작동하는 것을 확인할 수 있다.

이후 아래 명령어를 입력 후 셸을 껏다가 켜준다.

conda init

 

Jupyter notebook 설치

이제 jupyter notebook을 설치해보자.

먼저 jupyter notebook은 web UI를 제공한다. 그렇기 때문에 서버의 포트를 열어주어야 한다.

본 과정에서는 8888 포트를 열어준다. 과정은 Airflow의 포트를 여는 과정과 포트번호만 다르고 동일하다.

아래 링크에서 GCP 포트 여는 과정을 참고하자.

[Airflow] 개요 및 설치 방법

 

[Airflow] 개요 및 설치 방법

Airflow는 복잡한 워크 플로우와 데이터 처리 파이프라인을 구성 및 스케쥴링하고 모니터링하는데 특화된 오픈소스 Orchestration 플랫폼으로 Python으로 작성되어있다. Orchestration이란? PostgreSQL의 데이

bestech49.tistory.com

conda install jupyter notebook
pip install jupyter
conda install -c conda-forge jupyterlab

이제 유저 설정을 해주어야하는데 비밀번호가 필요하다.

jupyter notebook password

위 명령어를 입력하면 비밀번호를 입력하라 나오는데 입력하게되면 아래 명령어를 통해 비밀번호를 확인한다. (path는 위 비밀번호 설정 후 뜨게 되니 적절히 잘 변경해보자.)

vi ~/.jupyter/jupyter_server_config.json
{
  "IdentityProvider": {
    "hashed_password": "argon2:...."
  }
}

위와 같은 json 형식으로 존재하는데 hashed_password의 value를 복사해 아래 형식에 잘 끼워넣어준다. (이때 argon2:까지 복사한다. sha1인 경우도 마찬가지.)

c = get_config()
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
c.NotebookApp.password = 'hashed_password 값 넣기'

이제 아래 명령어를 친 후 위 내용을 아무데나 넣는다. (다 주석 처리 되어있어서 아무 곳이나 넣어도 상관 없음)

jupyter notebook --generate-config
vi ~/.jupyter/jupyter_notebook_config.py

이후 아래 명령어를 통해 jupyter를 띄워준다.

nohup jupyter lab --ip=0.0.0.0 --port=8888 --no-browser

마찬가지로 “외부 IP:8888”로 진입하면 위와 같은 페이지를 볼 수 있다. 아까 해시를 만들때 입력한 비밀번호를 통해 진입 가능하다.

이제 간단히 가상환경을 만들어보자.

conda create -n 가상환경이름
conda activate 가상환경이름

python3 -m ipykernel install --user --name 가상환경이름 --display-name 커널표기이름

이렇게 한 후 jupyter를 다시 띄우면 내가 추가한 가상환경이 jupyter UI에서 보이는 것을 확인할 수 있다.

이제 정말 마지막으로 DB 설정만 해주면 된다.

DataBase는 Mysql을 사용할 것이다.

[ubuntu] Mysql 원격 접속 허용후 Python(pd.to_sql)과 연동해보기

 

[ubuntu] Mysql 원격 접속 허용후 Python(pd.to_sql)과 연동해보기

핵심 내용 ubuntu에서 MySQL Server 원격 접속 허용 후, Python과 연동하는 과정을 다룹니다. 본 글은 아래의 내용들을 포함합니다. 1. ubuntu MySQL설치법 2. MySQL 원격 접속 허용하는 방법 3. Workbench 연결방

gibles-deepmind.tistory.com

위 블로그를 보고 그냥 따라하면 설치가 가능하다!!!

※ 위 블로그에서는 안나와있는데 GCP 서버의 3306 포트를 꼭 열어주어야 한다. 이전과 마찬가지로 아래 포스트에서 포트 여는 법 참고…

[Airflow] 개요 및 설치 방법

 

[Airflow] 개요 및 설치 방법

Airflow는 복잡한 워크 플로우와 데이터 처리 파이프라인을 구성 및 스케쥴링하고 모니터링하는데 특화된 오픈소스 Orchestration 플랫폼으로 Python으로 작성되어있다. Orchestration이란? PostgreSQL의 데이

bestech49.tistory.com

마지막으로 Airflow UI에 들어가 Connections에 MYSQL 정보를 넣어주자

Connection Id는 아무거나 해도 상관 없지만 나중에 코드 작성시 사용해야 하므로 기억할 수 있는 이름으로 저장하는 것이 중요하다.

이제 환경 설정은 끝났다!!! 매번 느끼는 거지만 환경 설정이 역시 제일 힘들다..

 

 

Reference

728x90