Apache Superset

[Superset] 설치 및 실행

비번변경 2023. 2. 21. 23:15

개요

2023.02.20 - Apache Superset 이란?에 대해서 정말 간단히 superset에 대해 소개했는데, 이 글에서는 공식 문서를 참고하여 설치 방법을 정리해두려고 한다.

 

설치는 컨테이너 환경이 아니라 호스트 환경에서 python pip로 진행한다. 설치 환경은 다음과 같다.

설치 환경
- server : AWS EC2
- OS : Ubuntu 20.04.5 LTS 
- Python : 3.8.10

 

 

설치

별다른 구성 없이 기본 구성으로 진행한다.

 

1. 종속성 패키지 설치

호스트에 설치하는 경우 OS 환경에 대한 종속성을 가진다. 설치에는 root 권한이 필요하다.

apt update
apt install build-essential libssl-dev libffi-dev python3-dev python3-pip libsasl2-dev libldap2-dev

 

2. (선택) python 가상 환경 생성

기존 python 환경에 영향이 없도록 별도의 가상 환경을 생성하여 사용할 것이다. 이 부분은 선택 사항이다.

# 가상 환경 생성
python3 -m venv superset

# 활성화
source superset/bin/activate

Python 가상 환경 virtualenv/venv 참고

2022.07.21 - [python3] venv 사용

2021.06.25 - [CentOS 7] virtualenv 설치 및 사용

 

3. superset 설치

pip를 이용해 가상환경에 superset을 설치한다.

pip install apache-superset

 

💡 ERROR: Failed building wheel for apache-superset 에러 발생 시

아래 명령어를 실행하여 해결한다.

pip install wheel

 

4. superset 설치 확인

정상적으로 설치되었는지 확인해본다.

superset --help

 

💡 ModuleNotFoundError: No module named 'cryptography.hazmat.backends.openssl.x509' 에러 발생 시

설치 후 superset 명령어 실행 시 아래와 같이 ModuleNotFoundError가 발생하는 경우가 있다.

이 글에서는 apache superset 2.0.1이 설치되었는데, 

apache superset 2.0.1은 cryptography 3.4.7을 의존하므로 해당 버전을 지정하여 라이브러리를 설치해야 한다.

pip install cryptography==3.4.7

패키지 의존성은 https://github.com/apache/superset/blob/2.0.1/requirements/base.txt를 참조한다. 해당 파일을 복사하여 Python 환경에 설치하는 것도 좋을 듯하다. 것을 권장한다. 즉, 아예 아래와 같이 constaint를 지정하여 설치하는 것이 좋겠다.

pip install apache-superset==2.0.1 -c https://raw.githubusercontent.com/apache/superset/2.0.1/requirements/base.txt

 

💡 A Default SECRET_KEY was detected, please use superset_config.py to override it. 발생 시

이 글에서 설치한 버전에는 해당되지 않지만, superset 버전이 올라오면서 필요한 구성 설정이 추가된 것으로 보인다. 아래 글을 참고한다.

2023.05.30 - [Superset] A Default SECRET_KEY was detected, please use superset_config.py to override it.

 

 

실행

1. 데이터베이스 초기화

superset db upgrade

 

💡 Error: No such command 'db'. 에러 발생 시

당황스럽게도 공식 문서를 따라 설치를 진행하다보면 db라는 명령어가 없는 것을 확인할 수 있다.

당황하지 말고 FLASK_APP 환경변수를 설정하고 의존하는 라이브러리 중 하나인 wtforms==2.3.3을 설치한다.

export FLASK_APP=superset
pip install wtforms==2.3.3

이제 db 명령어를 확인할 수 있다.

 

2. 관리자 계정 생성

비밀번호를 제외하고는 기본값을 사용했다. db 초기화 단계에서 에러가 발생하지 않았어도 FLASK_APP 환경변수 초기화가 필요하다.

export FLASK_APP=superset
superset fab create-admin

 

3. 예제 데이터 로드

샘플 생성을 위한 부분이다. 선택적으로 수행해도 될 것 같다.

superset load_examples

 

4. 기본 role과 권한 생성

superset init

 

5. superset 실행

superset run -p 8088 --with-threads --reload --debugger

localhost에서만의 접근을 허용할 때는 위와 같이 실행한다. 외부 접속이 불가피한 EC2의 경우에는 0.0.0.0으로 호스트를 지정하여 실행한다.

superset run -h 0.0.0.0 -p 8088 --with-threads --reload --debugger

 

7. 접속 및 로그인

EC2에서는 "<EC2 엔드포인트>:<PORT>" 또는 "<EC2 IP>:<PORT>"로 접근할 수 있다. TLS 구성을 하지 않았다면 http를 사용한다.

 

 

참고 문서

https://medium.com/@gembit.soultan/how-to-install-apache-superset-2-0-1-using-python-3-9-in-ubuntu-22-04-47b79f99858f

https://superset.apache.org/docs/installation/installing-superset-from-scratch

https://apache-superset.readthedocs.io/en/latest/installation.html#os-dependencies