SuperSet 이란 데이터를 시각화해주는 오픈소스인데, 현재 진행하는 프로젝트에서 Pandas로 데이터를 집계한 후에
해당 데이터를 시각화하는 작업 속에서 SuperSet를 활용하여 데이터를 시각화하는 작업이 포함되어 있었다.
우선 해당 오픈소스를 로컬에 설치하는 과정은 도커 컴포저를 활용하여 쉽게 설치 및 사용할 수 있다.
설치 방법은 아래 URL에 자세히 설명되어 있으니 해당 페이지를 참고 후에 설치하면 좋을 것 같다
https://superset.apache.org/docs/installation/installing-superset-using-docker-compose/
Installing Locally Using Docker Compose | Superset
Installing Superset Locally Using Docker Compose
superset.apache.org
혹시나 도움이 될 수 있는 경험일 수도 있으니 나같은 경우 이렇게 설치하였다
1. 우선 해당 깃파일을 클론한다.
git clone https://github.com/apache/superset.git
2. 이후에 도커컴포저를 이용하였다.
docker compose -f docker-compose-non-dev.yml pull
docker compose -f docker-compose-non-dev.yml up
참고로 M1에서 git에서 받은 위 도커컴포즈를 바로 pull 받을 시 오류가 발생해서
superset:
platform: linux/amd64
env_file: docker/.env
image: *superset-image
container_name: superset_app
command: ["/app/docker/docker-bootstrap.sh", "app-gunicorn"]
user: "root"
restart: unless-stopped
ports:
- 8088:8088
depends_on: *superset-depends-on
volumes: *superset-volumes
위에서 platform 부분을 따로 추가해준 후에 설치를 진행하니 별다른 이슈없이 설치할 수 있었다.
여기서 궁금한 부분이 생겼는데
compose에서 위와 같이 platform를 amd64로 지정하는 것과
지난 번에 buildx를 활용하여 amd64로 빌드한 게 무슨 차이점이 있었는지에 대해 생각해보고 찾아보았다.
docker buildx : 이미지를 다양한 아키텍처로 빌드할 수 있는 도구이며, 개발자가 다양한 플랫폼을 사용할 수 있는 이미지를 만들 수 있게
해주는 도구이다.
docker compose에 platform : 특정 아키텍처에 대한 서비스를 실행하기 위해서 사용된다. 다양한 환경에서의 애플리케이션 배포와
테스트를 단순화할 수 있다.
두개의 상황에 차이점은 이러한 것 같다.
buildx에서는 이미지를 특정한 아키텍처로 빌드해서 이미지를 만들어주는 기능이다. 컨테이너로까지 가진 않는 것 같다.
platform 같은 경우에는 기재한 아키텍처를 위한 도커 이미지를 빌드하는 것
즉 둘의 큰 차이점은
buildx는 특정 아키텍처 자체를 생성해서 해당 아키텍처 이미지를 가지고 도커 이미지를 만들어주는 것 같고,
platform 같은 경우에는 도커 이미지에서 입력한 아키텍쳐 버전의 이미지를 빌드하는 느낌?
솔직하게 말하자면, 명확한 차이점이 무엇인지는 모르겠지만 buildx가 원하는 아키텍처로 도커 이미지를 만드는
기능을 가지고 있어 더 강력하다고 느껴진다.
3. 컴포저에서 up 명령어가 정상실행된다면 http://localhost:8088/ 가 접속되는지 확인한다
기본 계정은 admin/admin로 접속가능하다.
위 로컬호스트가 접속이 완료가 되고, 슈퍼셋 대쉬보드가 잘 나오는 것을 확인하였다.
이렇게 해서 superset를 무사히 설치할 수 있었다.
논외로 superset에서 MYSQL를 따로 도커에서 빌드한 후에 포트설정을 해주었다. 그 이후에 localhost로 세팅한 후
DB를 연동해주려고 하는데 계속 Port가 Closed 되었다라는 알럿 문구만 뜨고 있었다.
찾아보니 SuperSet에서, 그리고 도커에 만들어진 컨테이너를 활용하여 연동하려면 localhost 혹은 127.0.0.1 라는 주소가 아닌 docker.for.mac.host.internal 라는 주소로 대체할 수 있다고 한다.
그래서 바로 IP주소 입력 후 포트까지 입력하니 Closed 되었다라는 문구는 더 이상 나오질 않았다.
그렇게 완벽하게 해결해서 DB를 연동하려고 하니,
invalid decryption key 가 뜨면서 유효성 에러가 발생하고 있었다.
찾아보니 superset_config.py에 secret_key를 할당해주지 않아서 발생하고 있다는 이슈를 보았고,
/docker/pythonpath_dev/superset_config.py
에서 바로 secret key를 추가해주었다. 다만 여기서 말하는 origin key를 어디서 찾을 수 있는건지
몰라서 secret key만 넣어주었다.
https://superset.apache.org/docs/installation/configuring-superset/#rotating-to-a-newer-secret_key
Configuring Superset | Superset
Configuring Superset
superset.apache.org
재실행해봤지만 어림도 없이 에러가 발생하고 있었다.
다른 곳들을 계속 찾아보니 postsql 컨테이너 커널에 직접 접근하여 DB정보를 바꾸라는 방법을 보게되었다.
Change SECRET_KEY and get error `ValueError: Invalid decryption key` on K8s
When I try change SECRET_KEY = '\2\1thisismyscretkey\1\2\e\y\y\h' (default), to (for example): SECRET_KEY = '\2\1888D237694D70843CDBC38195215E5623EDAA74C3D...
lightrun.com
해당 쿼리를 postsql이 설치된 터미널에 접속 후 실행하면 된다 update dbs set encrypted_extra = null
위 쿼리를 실행한 후에 정상적으로 MySQL 접근 후에, 쿼리 결과를 테이블로 표시할 수 있게 되었다,.
'오픈소스' 카테고리의 다른 글
| Eventsim으로 생성한 로그데이터로 SuperSet으로 시각화하기(2) (0) | 2023.11.25 |
|---|---|
| Eventsim으로 생성한 로그데이터로 SuperSet으로 시각화하기(1) (0) | 2023.11.19 |
| [Mac] M1 Docker Ubuntu에서 C -m32 실행안될 때 (0) | 2023.11.10 |
| Eventsim 빌드 및 실행하기 (1) | 2023.10.24 |
| Eventsim 를 사용하여 음악 스트리밍 데이터 생성하기 (1) | 2023.10.23 |