개발 이야기

superset 설치 troubleshooting

inspiring-ini 2024. 5. 21. 19:55

네줄요약:

- pip install은 왜인지 최신버전들이 없어서 docker 선택

- docker compose의 버전이 많이 높아야 한다

- docker hub의 pull rate limit 덕분에 힘들었다

- docker volume까지 싹 밀 때에는 -v 옵션을 주고 down


데이터 시각화 툴 superset

https://superset.apache.org/

 

Welcome | Superset

Community website for Apache Superset™, a data visualization and data exploration platform

superset.apache.org

superset은 2년 전 업무로 잠깐 써 봤다. 그 때 설치는 내가 하지 않았다

 

 

2024-05-20

superset을 설치해서 사내 개발자/비개발자들이 써 볼 수 있도록 환경 구축을 하는 업무가 생겼다.

Quickstart 문서를 보고 따라했다.

$ git clone https://github.com/apache/superset

$ cd superset
$ docker compose -f docker-compose-image-tag.yml up

 

docker compose file에 env 어쩌고가 must be string이어야 한다며 오류가 났다.

 

찾아보니 docker version이 낮아서라고 한다. (알고보니 아님!!!)

재택근무 중이었는데 사무실 내부 서버의 docker 버전을 올리다가 서버가 죽었다. 사무실에 나가야 했다... to be continued

 

 

2024-05-21

다행히 서버는 강제종료 후 부팅 한 번 했더니 별 문제 없이 부팅되었다.

 

도커 버전도 올려보고 superset 버전도 바꿔보고 superset을 올렸다 내렸다 올렸다 내렸다 반복했다.

그러다 알게 된 건데, docker 버전보다는 docker compose 의 버전이 중요했던 것이다. 스택오버플로우 참고

뒤에 원인이 나오지만, 이 서버 저 서버 내 로컬 옮겨가며 superset 설치를 시도했었기 때문에 모두 docker compose의 버전을 올려 줘야 했는데, 내가 설치한 것도 아니고 내가 설치했더라도 기억을 못 했을 거고.. 여튼 docker compose가 서버에 최초 설치된 방법을 몰라서 업데이트에 애를 먹었다. 그래도 이 문서 덕분에 다양한 설치 방법에 대응하는 업그레이드 방법을 알 수 있었다. 따라 하면 된다

 

우여곡절 끝에

$ docker compose -f docker-compose-image-tag.yml up

를 다시 실행했는데 문제가 생겼다.

 

저 명령을 실행하면 docker hub로부터 필요한 이미지를 pull 해오게 되어있는데, 사무실 공인 IP가 하나이다보니 6시간마다 100개로 제한되어있는 rate limit을 넘겨서 이미지를 pull 해올 수가 없었다.

 

그래서 (다시 집으로 가는 방법도 있었지만..) 사무실 밖에 있는 회사 서버(IP 다름)에서 docker pull로 이미지를 땡겨온 후, docker save  명령어로 이미지를 파일로 저장, 그리고 scp를 통해 회사 내부 서버로 파일을 옮겨와서, docker load 명령어로 그 이미지를 회사 내부 서버에서도 띄울 수 있게 했다.

 

사실 docker hub에서 pull하는 게 안 되니까 그러면 pip install 로 설치하면 안 되나? 하는 생각이 들었지만, 왜인지 2.x.x 대 버전까지만 설치 가능하다는 에러 메시지가 떠서 일찌감치 포기했다. (현재 최신 버전은 3.1.3 또는 4.0.1 이다)

 

그렇게 superset을 띄워서 웹 페이지에 접속하는 데까지 성공했으나 뭔가 데이터베이스 연결이 안 된다.

이 과정까지 컨테이너를 엄청나게 띄웠다 내렸다를 했기 때문에 뭔가 꼬인 것이었다.

invalid decryption key 라는 에러만 계속 떴다.

이 과정에서 포기할까도 생각하고 고생을 많이 했는데 검색 끝에 은혜로운 문서를 만나 docker compose down -v 명령어를 알게 되었다.

 

clone해온 superset repo의 docker compose 설정파일을 보면 volumes로 docker volume까지 띄우도록 선언해 주었는데, 내가 아무리 docker compose up, down을 해도 이 volume은 삭제되지 않는 것이었다. 아무래도 db용이니까 그게 맞긴 하다.

하지만 나처럼 환경이 꼬인 사람은 데이터까지 싹 밀어줘야 하는데 그 옵션이 -v  인 것이다 🥹

 

이제 진짜 잘 된다.

 

마지막으로 추가사항인데, 내가 연결할 dbms는 clickhouse이고, 기본지원이 되지 않기 때문에 플러그인으로 설치해 주어야 한다.

공식 문서에서  

$ docker exec -it <container_name> bash

으로 컨테이너에 접속한 후에

$ pip install clickhouse-connect

로 설치하면 된다고 되어 있다.

 

설치 후 따로 컨테이너 재시작을 하지 않아도 웹 새로고침만 해 주면 클릭하우스 이용이 가능했다.

 

프로덕션 환경에서는 이렇게 일일이 컨테이너에 접속해서 플러그인 설치를 할 수는 없으니 나중에 프로덕션 배포를 고려한다면 Dockerfile을 새로 직접 써서 빌드하거나 해야 할 것 같다