안녕하세요 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로 인한 에러는 나오지 않습니다.
'프로그래밍 > Data process' 카테고리의 다른 글
Python을 이용해서 HDFS의 파일 읽어오기 (0) | 2022.08.17 |
---|---|
Flume으로 Hadoop에 데이터 보내기 (0) | 2022.07.29 |
RabbitMQ를 사용해서 데이터를 넣고, 꺼내와 보자 (0) | 2022.07.20 |
[공공데이터포털] 사용해보기 (0) | 2022.07.13 |
[Spark] 파일 읽어 RDD 객체 만들기 및 값 확인해보기 (0) | 2022.05.09 |