개요
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 버전이 올라오면서 필요한 구성 설정이 추가된 것으로 보인다. 아래 글을 참고한다.
실행
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://superset.apache.org/docs/installation/installing-superset-from-scratch
https://apache-superset.readthedocs.io/en/latest/installation.html#os-dependencies