본문은 삽질기, 주의점 요약은 아래 있습니다.
아파치 플링크를 공부하기 위해 플링크를 다운받고 아나콘다 환경에서 pip를 통해 플링크를 설치하려고 했다.
기존 내 콘다 환경은 python3.9 이다.
pip 를 통해 flink를 설치중 numpy 버전이 맞지 않아서 설치가 되지 않는다고 했다.
새벽동안 너무 삽질을 오래해서 기억이 가물가물한데 오류 내용은 요구되는 numpy 버전이 python < 3.7 에 호환된다는 내용이었다.
그래서 처음 나는 콘다 환경의 파이썬 버전만 변경하면 되는줄 알았다.
파이썬 버전을 변경 하려고 했는데
solving environment failed with initial frozen solve. retrying with flexible solve
이 에러문구만 계속해서 나오고 아무것도 되지 않았다.
이것저것 구글링 해본 결과 콘다의 새 환경을 만들고, 시도해보라고 했다.
그래서 새 환경을 만들고 파이썬 버전을 바꾸고 다시 플링크를 설치했다. 그랬더니 설치가 잘 되는게 아닌가?
근데 또 다른 문제가 발생했다. 기존 환경에서 사용중이던 aiflow가 없기 때문에 다시 설치해야 했는데 airflow에서 기존 환경에 있었던 db문제로 말썽을 일으켰다. 아직 에어플로우의 conf 를 건드리기엔 애송이인 나는 에어플로우가 뿜어내는 에러메시지를 하라는대로 했고, 문제가 해결 되는 줄 알았다.
그치만 에어플로우에서도 내가 원하는대로 해결되지 않았고, 이것저것 계속 더 건드리고 시간만 낭비하고 있었다.
당장은 내가 개발하고 있는 콘다의 환경에서 에어플로우를 사용하고 싶었던 것이고, 파이썬 버전만 변경한다면 모두 끝낼 수 있는 일이었다.
나는 너무 오랜시간 삽질했기 때문에 최후의 수단인 아나콘다를 삭제하고 다시 설치 한 뒤 애초에 파이썬 버전을 원하는 버전으로 바꾸고 시작하기로 했다.
여러가지 삽질 끝에 아나콘다를 삭제했고, 파이썬 버젼을 바꾸려 했는데 또 다시 같은
solving environment failed with initial frozen solve. retrying with flexible solve
문제를 일으켰다.
진짜 멘탈이 와르르 부서지는 순간이었다.
그래도 일단은 내가 여태껏 삽질하면서 깨달은 것은
플링크는 파이썬의 버전과 크게 상관이 없다는 점.
콘다에서 파이썬 버젼에 맞게 설치되는 라이브러리 numpy라던가, 다른 라이브러리들의 버전간 호환이 중요했다.
따라서 나는 넘파이의 버전을 변경해 봤지만 넘파이는 버전별로 파이썬 버전과 호환이 달라서 결국 파이썬 버젼을 변경하려 했던것이다.
그치만 pip install python ==<원하는버전> 이것은 계속 같은 오류를 반복해서 내는게 문제였다.
그때 생각난게 넘파이 버전을 바꾸기 위해 넘파이를 콘다 환경에서 remove 했던게 생각났다.
콘다 환경의 파이썬 버전을 바꾸려면 기존에 설치된 다른 의존성 패키지들이 버전 호환문제를 일으키기 때문에 문제를 발생시키는 점에 집중했다.
그래서 나는 다시 numpy를 uninstall 하고 콘다에서 remove 명령어로 완전 제거를 한 뒤에 (pandas까지 제거했던거 같다.) 파이썬 버전 변경을 다시 시도 했다.
그랬더니 파이썬 버젼이 변경이 되었고, 기존 문제가 되었던 에어플로우도 문제가 되었던 콘다의 다른 환경을 삭제하고 airflow도 다시 설치했더니 문제가 해결 되었다.
요약
아나콘다 base 환경에서 파이썬 버전을 변경할 때 오류가 생기는 것은 기존 설치된 파이썬의 버전과 다른 의존성 패키지들이 충돌 에러를 일으키기 때문이다. 따라서 파이썬 버전을 변경하고 싶다면 넘파이, 판다스 등등 기존 환경과 관련된 파이썬관련 의존성 패키지들을 삭제 혹은 변경 후에 파이썬 버전을 변경해야 한다. ***base 가 아닌 다른 환경에서는 나와 같은 에러 혹은 충돌이 일어나지 않을 확률이 높음.***
콘다 환경에서 파이썬 버전을 변경하면 그 버전에 맞게 다른 패키지들도 다시 설치가 된다.
사실 다른 환경에서 개발하면 되는 문제였을지 모르지만 기존 환경에 셋팅되어있던 에어플로우에서 문제를 일으키는 바람에 오랜시간 삽질을 하게 됐다.
그래도 이 덕분에 콘다 환경에 대해서 많이 이해하게 되었고, 에어플로우 카프카 등등 한번씩 더 커맨드라인에서 사용하는 공부도 하게 되었다.
그리고 마지막으로 플링크!
플링크도 로컬호스트 서버가 열리지 않아서 또 삽질하나 했는데 금방 해결했다.
플링크 테스트 예제를 실행할 때는 플링크 클러스터를 먼저 실행시키고 해야 한다.
링크에서 아래 코드로 클러스터를 실행하라고 한다.
$ ./bin/start-cluster.sh
그치만 바로 실행 되지 않았고, 부트스트랩 서버를 알려달라고 에러를 냈다. 따라서 아래처럼 코드를 추가해야한다.
$./bin/start-cluster.sh --deamon bootstrap-server localhost:8081
그래야 localhost:8081 포트가 열리고 web ui를 확인할 수 있고, 그 뒤부터 예제코드 혹은 다른 코드를 정상 실행 할 수 있다.
'TIL' 카테고리의 다른 글
tmux 아나콘다 환경으로 변경하기 (0) | 2022.05.13 |
---|---|
[Python] List 연산 주의점 (0) | 2022.05.04 |
알고리즘 풀이에 대한 고민 (0) | 2022.04.09 |
[python] decorator 파이썬 데코레이터 이해하기 (0) | 2022.01.22 |
[python] in 연산자의 실행시간, 시간 복잡도 BigO (0) | 2022.01.07 |
댓글