이전 글에서 airflow를 설치하고 mysql -> s3 -> redshift 순으로 데이터를 적재하는 dag를 실행하는데 아래와 같은 에러를 만났다.
해당 에러를 해결하기 위해
- docker ps를 통해 scheduler의 container id를 확인
- docker exec --user root -it {scheduler container id} sh 를 사용해서 root권한으로 접속
- 아래 3개의 명령어를 실행
- sudo apt-get update
- sudo apt-get install -y default-libmysqlclient-dev sudo apt-get install -y gcc
- sudo pip3 install --ignore-installed "apache-airflow-providers-mysql"
- 하지만 그럼에도 불구하고 여전한 “ModuleNotFoundError: No module named 'MySQLdb'” 에러가 발생했다.
- 이것을 다시 해결하기 위해서 scheduler component뿐 아니라 webserver에도 위명령어를 실행하고 docker-compose.yaml파일 아래처럼 pymysql을 docker를 실행할 때 항상 설치하게끔 수정했다.
- 하지만 여전히 “ModuleNotFoundError: No module named 'MySQLdb'” 에러가 사라지지 않아서 이 글을 작성하기 전까지 1~2 일을 에러 해결(stackoverflow, git, docker재설치 등)을 하기 위해 노력하다 멘붕이와서 멈췄었다..
- 그렇게 시간이 지나고 "airflow 구축기" 라는 특강을 듣다가 강의가 끝날 즈음 강사님이 airflow와 slack을 연동하는 과정을 설명해주셨다. 여기에서 slack SDK가 사용되는 모든 곳(webserver, scheduler, worker)에 설치를 해야 airflow가 정상적으로 동작할 수 있다는 것을 알게 됐다.
원래는 scheduler에 모듈을 설치하면 worker와 webserver는 같은 Python 가상환경을 공유하고 있기 때문에 문제없이 잘 실행된다 라고 알고 있었다. 그런데 어떤 이유(아직 원인 파악 못함)로 공유가 제대로 되지 않아서 worker에서도 위에 적은 설치과정을 반복하니 드디어 정상적이게 출력이 됐다. ㅜㅜㅜㅜ
- 앞으로도 지금과 같이 에러가 생기면 해결하는 과정을 잘 적어놔야 다음에 비슷한 에러가 생겼을 때, 더 잘 해결할 수 있을것 같다.(어찌됐든 해결돼서 정말 다행이다......)
'데이터엔지니어링' 카테고리의 다른 글
Dataproc과 Dataflow (0) | 2024.06.01 |
---|---|
EC2 인스턴스 위에 Airflow 설치 (3) | 2024.02.29 |
Airflow설치 - docker기반 (0) | 2023.12.14 |