Apache Supersetをインストールしてみる; Pythonの仮想環境構築も兼ねて
はじめまして, Zenn。初投稿です。
Qiitaと読者層がどう違うのかまだわかっていないので、観測気球的に1本投稿します。ので、すこし古い記事になりますが、あしからず。
Apache Supersetとは
Apache Superset(以降、Superset)とはApache Software Foundation(ASF) incubating projectとして公開されているWEBアプリケーションベースのBIツールです。詳しいことはApache Supersetのサイトに書かれています。
もとは民泊でお馴染みのAirbnbが中心となって開発し、オープンソース化されたものです。ソースを見てわかる通り大半がPythonで実装されています。
本記事での目標
- Supersetのコンソールにログインして、サンプルデータをDashboardで可視化できるまで
環境
- CentOS 7.4
- Python 3.4
Pythonのバージョンはどうする?
いまのところPython 2.x系はCentOS7系で標準インストール(提供)されていますが、Python 3.x系は標準インストールされていないようです。Python 2.xと3.xに互換性はないとされていますので判断を誤ると厳しいことになりそうです。
さらにInstallationをよく見ると次のようにあります(あった)ので、これから新規に使う人はPython3系がよいといえるでしょう。
Superset has deprecated support for Python 2.* and supports only ~=3.6 to take advantage of the newer Python features and reduce the burden of supporting previous versions.
その他
- pipでインストールします。
- 2021/1時点ではDockerイメージが提供されており、ドキュメントもDockerイメージでのインストールが大きく書かれているので、敢えてこのような手順は必要ないかと思われます。敢えて困難な手段で挑む、完全に
修行勉強モードです。 - /opt/visual/をインストール先(supersetのホームディレクトリ)として構築します
手順
依存パッケージをインストール
- そもそも有効なリポジトリがあるかどうかを確認します
# yum repolist
リポジトリー ID リポジトリー名 状態
base/7/x86_64 CentOS-7 - Base 10,019
extras/7/x86_64 CentOS-7 - Extras 321
updates/7/x86_64 CentOS-7 - Updates 625
repolist: 10,965
なければ/etc/yum.repo/直下に.repoファイルを追加します。
- Python以外のパッケージをインストールします
# yum install gcc gcc-c++ libffi-devel openssl-devel cyrus-sasl-devel openldap-devel
インストール:
cyrus-sasl-devel.x86_64 0:2.1.26-23.el7 gcc.x86_64 0:4.8.5-36.el7
gcc-c++.x86_64 0:4.8.5-36.el7 libffi-devel.x86_64 0:3.0.13-18.el7
openldap-devel.x86_64 0:2.4.44-20.el7 openssl-devel.x86_64 1:1.0.2k-16.el7
依存性関連をインストールしました:
cpp.x86_64 0:4.8.5-36.el7 glibc-devel.x86_64 0:2.17-260.el7
glibc-headers.x86_64 0:2.17-260.el7 kernel-headers.x86_64 0:3.10.0-957.1.3.el7
keyutils-libs-devel.x86_64 0:1.5.8-3.el7 krb5-devel.x86_64 0:1.15.1-34.el7
libcom_err-devel.x86_64 0:1.42.9-13.el7 libkadm5.x86_64 0:1.15.1-34.el7
libselinux-devel.x86_64 0:2.5-14.1.el7 libsepol-devel.x86_64 0:2.5-10.el7
libstdc++-devel.x86_64 0:4.8.5-36.el7 libverto-devel.x86_64 0:0.2.5-4.el7
pcre-devel.x86_64 0:8.32-17.el7 zlib-devel.x86_64 0:1.2.7-18.el7
完了しました!
libsasl2-develについて
CentOS7.4ではlibsasl2-develは標準リポジトリには含まれていないようです。そのため、パッケージ libsasl2-devel は利用できませんと言われることがあります。
Supersetのgithubのフォーラム(Issues)をみたところ、既知の問題として報告されていました。どうやらcyrus-sasl-develを使うことで代用できるようです。
Python3.6をインストール
- Pythonパッケージを含むリポジトリを追加します。
ここではEPELリポジトリを使います。
# yum install -y https://centos7.iuscommunity.org/ius-release.rpm
インストール:
ius-release.noarch 0:1.0-15.ius.centos7
依存性関連をインストールしました:
epel-release.noarch 0:7-11
完了しました!
- インストールできるPythonのうち最新バージョンをインストールします
インストールできるPythonのバージョンを調べます。
# yum search python3
当時の私の環境では3.6だったので、3.6をインストールします。
# yum install python36u python36u-libs python36u-devel python36u-pip python-wheel
インストール:
python-wheel.noarch 0:0.24.0-2.el7 python36u.x86_64 0:3.6.7-1.ius.centos7
python36u-devel.x86_64 0:3.6.7-1.ius.centos7 python36u-libs.x86_64 0:3.6.7-1.ius.centos7
python36u-pip.noarch 0:9.0.1-1.ius.centos7
依存性関連をインストールしました:
python36u-setuptools.noarch 0:39.0.1-1.ius.centos7
完了しました!
- 動作確認をします。
# python --version
Python 2.7.5
# python3.6 --version
Python 3.6.7
プレインストールされていたのはPython 2.7.5なので3.6.7を使いたいときは明示的に指定しないといけないようです。
Python仮想環境を構築
- まずはPythonの各種ツールを最新版にアップデートします。
pip3.6 list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
pip (9.0.1)
setuptools (39.0.1)
You are using pip version 9.0.1, however version 18.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
pipのバージョンが9.0.1です。当時の最新版は18.1なのでアップデートします。
# pip install --upgrade setuptools pip
(抜粋)
Successfully installed pip-18.1 setuptools-40.6.3
- 仮想環境をインストールディレクトリ(/opt/visual)に構築します。
# mkdir -p /opt/visual/
# cd /opt/
# virtualenv visual/
Using base prefix '/usr'
New python executable in /opt/visual/bin/python3.6
Also creating executable in /opt/visual/bin/python
Installing setuptools, pip, wheel...
done.
これは仮想環境を作成しただけであって、まだ使える状態にはなっていません。アクティベートすることで使用可能な状態になります。
# cd visual/
# . ./bin/activate
(visual) #
プロンプトが変わればOKです。Python仮想化環境内を操作できます。
- 動作確認します。
(visual) # python --version
Python 3.6.7
期待通り、今回インストールしたPython 3.6.7です。
仮想化環境を終了するときは?
上記のように仮想化環境の操作が有効になっている状態でdeactivateすれば仮想化環境を終了でき、通常のファイルシステムの操作に戻れます。
Supersetのインストール
- pipでSupersetをインストールします。
(visual) # pip install superset
・・・
Successfully built superset flask-appbuilder flask-compress flower future humanize parsedatetime pydruid pyhive python-geohash pyyaml simplejson sqlalchemy sqlalchemy-utils thrift thrift-sasl unicodecsv billiard Flask-Babel Flask-Login Flask-OpenID alembic tornado geographiclib sasl pycparser Mako python-editor linear-tsv openpyxl et-xmlfile
・・・
続けてSupersetの初期設定をします。
- Supersetのadminユーザを作成します。
Supersetの管理者権限を持つユーザを始めに設定します。この類の設定は後で変更可能だと思うので、まずは次のように設定します。
|プロパティ|値|
|:--:|:--:|
| ユーザ名 | admin |
| パスワード | admin |
| user firstname | admin |
| user lastname | user |
(visual) # fabmanager create-admin --app superset --username admin --firstname admin --lastname user --password admin
Email [admin@fab.org]:
Recognized Database Authentications.
Admin User admin created.
メールアドレスの設定を求められますが、入力しなくてもadminユーザを作成できました。
- Surpersetを初期化します。
(visual) # superset db upgrade
(visual) # superset load_examples
(visual) # superset init
実行後にかなりの分量のメッセージが出力されますが、エラーのような対処が必要なものはなかったので省略します。
- Supersetを起動します。
(visual) # superset runserver
・・・
Starting server with command:
コマンドラインの出力は止まりますが、これで問題ありません。
その他
superset runserver -p <port>でポート番号を変更することができますが、今回はデフォルトのまま起動させます。
Installationの通りに-dオプションを付けるとデバッグモードで起動します。
実はSupersetの適切な終了方法がわかりませんが、Ctrl + Cで(強制)終了できます。
Supersetの動作確認
SupersetはWEBベースのBIツールですのでブラウザで操作できます。
- ブラウザでSupersetにログインする。
localhostの値は各自の環境のものに変更してください。
http://localhost:8088
ユーザ名とパスワードはadminアカウント作成時に設定したものです。
ログインに成功するとDashboardが表示されます。
おわりに
実は去年の冬休みに書いた内容なので、Dockerイメージでインストールする方法を試して記事をアップデートしたいと思います。ASAPで。
Discussion