프로그래밍/Data process

CentOS 에서 Airflow 설치할 때 주의점

Dibrary 2022. 7. 22. 09:50
반응형

안녕하세요 Dibrary입니다.

데이터 처리에 있어서 굉장히 핫한 Airflow를 VirtualBOX(Centos)에 설치해보겠습니다.

굳이 글을 작성하는 이유는, Airflow를 설치하는데 있어서 그냥 pip install apache-airflow 만 하면 된다고 하는 포스팅이나 책이 많았는데, 막상 안되더라구요. 다행이도 해결방법을 찾아냈습니다.

물론, 한 번에 설치가 된다면 굉장히 다행이구요.

 


제가 실행한 Linux 환경은 CentOS 7이고,
파이썬은 원래 2.7이 깔려있었으나, 3.6으로 설치했습니다.

먼저 각종 책에서 나오는 pip install apache-airflow를 입력하고, pip list로 확인했을 때, 

이렇게, apache-airflow 가 있어야 합니다.

apache-airflow는 없는데, "apache-airflow-어쩌구솰라솰라" 이런 것들만 있으면 설치가 안 된 것입니다.

 

먼저 Centos 그냥 화면에 export AIRFLOW_HOME=~/airflow  를 입력합니다. 그냥 리눅스 명령어 치듯 입력하면 됩니다.

그 뒤에 AIRFLOW_VERSION=2.2.3 를 입력합니다. (전 2.2.3 버전을 받기위해 이렇게 한 것이고, 받고자 하는 버전이 다르면 바꿔주면 되겠죠?)

그 다음에 PYTHON_VERSION=3.6 을 입력합니다. (airflow와 python 동작 버전은 미리 확인해두셔야 합니다.)

 

그 뒤에 

CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"

이렇게 입력하고, pip 설치를 하면 됩니다.

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

(전 pip가 pip3으로 동작하기 때문에 pip3으로 입력했습니다. 설정을 바꿔서 pip로 pip3을 동작시키는 분들은 그냥 pip install로 하시면 됩니다.)

 

이렇게 한 후에 pip list를 확인해보면 apache-airflow가 정상적으로 설치 되셨을 겁니다.

이제 airflow webserver를 입력했을 때 에러가 안 나면 됩니다.

 


근데, 저는 에러가 났습니다.;;

뭐 어쩌구 저쩌구 말이 많은데, 잘 보면 sqlite C library version too old (< 3.15.0  ) 라는 문구가 보입니다.
즉, sqlite 버전이 너무 오래 된것이다. (3.15.0 보다 낮다) 라고 하는 것이죠.

아니나 달라, 확인해보니 

3.8.11 이네요;; 3.15.0 보다 높아야 되니까 결국 sqlite 버전을 올려야 합니다.

 

참고로, 공식 사이트에서도 필요 버전을 알려주고 있습니다.

sqlite 버전, mysql 버전, postgresql 버전 다 잘 나와있죠? 

 

그럼 airflow를 실행하려면 sqlite 버전만 올리면 됩니다.

저는 sqlite 사이트에 가서 해당 압축파일을 받았습니다.

 

그리고 WinSCP를 이용해서 virtual BOX에 압축파일을 넣은 후에, 아래 명령어들을 순서대로 입력했습니다.

 

cd sqlite-autoconf-338200.tar.gz

sudo ./configure

sudo make clean && sudo make -j 20 && sudo make install

 

그런 후에 sqlite3 --version을 입력하니

설치한 버전으로 나왔습니다.

 

근데, 이는 리눅스에 설치된 더 높은 sqlite 버전을 리눅스가 아는거지, python이 아는 것과는 또 다른 문제입니다.

그래서 우선 /usr/local/lib 로 이동하시면 안에 libsqlite3 파일들이 있는 것을 보실 수 있습니다.

즉, /usr/local/lib에 있는 설정파일을 이용해서 파이썬도 인지하게 해 줘야 하는 것이죠.

 

아래 문장을 명령어 입력하듯이 친 이후에 /etc/profile을 재시작 하면 됩니다.

export LD_LIBRARY_PATH=”/usr/local/lib”

 

 

과연 파이썬이 sqlite 버전을 정상적으로 읽어오는지 보면, 파이썬에서도 sqlite 버전을 확인해 보면 정상적으로 나타나는 것을 알 수 있었습니다.

 

이제 airflow webserver를 실행하면 sqlite로 인한 에러는 나오지 않습니다.

728x90
반응형