Data Engineering(Pipeline, Hadoop...)/Airflow

[Airflow] Devops 환경 구축 (R+Python+Airflow+ssh)

dtstory 2022. 11. 23. 20:00

개발 및 분석 용도로 구성한 스크립트들을 스케줄링하여 주기적으로 실행되고 운영이 될 수 있는 환경을 Docker Container 내에서 할 수 있도록 만들어 보자.

 

 

 

# 1.  python을 사용하기 위한 jupyter docker container 실행

docker run -it -p 34888:8888 -p 34222:22 -p 34787:8787 -p 34080:8080 \
-v mount_vol:/mypath/mount_vol/ 
--name dtstory -e ROOT=TRUE -e PASSWORD=password tensorflow/tensorflow:latest-jupyter

 

참고로 해당 컨테이너 리눅스 배포판은 다음과 같다.

배포판 : Ubuntu 20.04.5 LTS \n \l

-> ip:34888 에 접속하여 주피터 노트북 실행이 되는지 확인한다.


# 2.  R (version 4.x) , RStudio 설치



# (ubuntu20 - R 4.x) 설치 레퍼런스 -> https://www.digitalocean.com/community/tutorials/how-to-install-r-on-ubuntu-20-04-quickstart 

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
apt-get install software-properties-common -y
add-apt-repository 'deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/'
apt update -y
apt install r-base


apt update -y
apt upgrade -y
apt install gdebi-core -y

wget https://download2.rstudio.org/server/bionic/amd64/rstudio-server-2021.09.1-372-amd64.deb
gdebi rstudio-server-2021.09.1-372-amd64.deb



-> 사용자를 등록하고, 비밀번호를 설정한 후에, ip:34787 로 접속하여 Rstudio 실행 및 로그인이 되는지 확인한다.

adduser dtstory





# 3.  Airflow 설치

 

설치 레퍼런스 -> https://yamerong.tistory.com/59

# 가상환경 라이브러리인 virtualenv 라이브러리 생성
pip install virtualenv

cd ~/
virtualenv airflowenv

source ~/airflowenv/bin/activate

pip install psycopg2-binary

echo 'export AIRFLOW_HOME=~/airflow' >> ~/.bash_profile
source ~/.bash_profile


AIRFLOW_VERSION=2.2.3
PYTHON_VERSION="$(python --version | cut -d " " -f 2 | cut -d "." -f 1-2)"
CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"

pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"

# airflow 초기화를 진행 -> 실행하면 임시 비밀번호가 발급된다. (계정명 : admin)
airflow standalone



# airflow user 추가 등록하기

airflow users create \
          --username dtstory \
          --firstname dtstory \
          --lastname dtstory \
          --role Admin \
          --email dtstory@email.com



# airflow 이미 실행중 error가 뜨는 경우, 아래와 같이 process를 kill 해주고, reset을 진행한다.

apt install lsof
lsof -i tcp:8080
lsof -i tcp:8080 | grep 'root' | awk '{print $2}' | xargs kill -9


airflow db reset

-> ip:34080 에 접속하여 Airflow가 실행이 되는지 확인한다.




# 4.  ssh (file zilla) 설치


https://dtstory.tistory.com/11

 

GCP + Docker + Filezilla 를 이용한 sftp 서버 구축

# 파일질라를 사용하기 위한, 컨테이너(ubunut) 생성, 실행 - 포트 포워딩 : 32222:22 - 볼륨명 : mount_vol - 컨테이너이름 : c_sftp - 패스워드 : password - 이미지명 : ubuntu 사용자가 지정하는 위의 조건들을

dtstory.tistory.com

Container는 이미 실행하였기 때문에, 실행부를 제외하고 위의 링크를 참조하여 명령을 실행해보자.

728x90