プレスリリースやお知らせ、開発ブログ、会社の活動状況、Mattermost・aws・AI等の技術情報などを発信しています。

Dataiku DSS をAWS EC2の上に構築してみよう!

ディーメイク Advent Calendar 2024 12/3の記事です。

Dataiku DSS on EC2

はじめに

こんにちは、 mori です。

Data + AI への取り組みの一環として、社内でもDataikuの活用が増えています。本日はその一環として、AWS EC2上にオンプレミス版のDataiku DSSを構築した手順をご紹介します。

Dataikuのインストール版には、「Cloud Stacks」と「Custom」の2種類があります。

実運用環境でAWS、Azure、GCPを利用する場合は、「Cloud Stacks」を選択することが推奨されています。このオプションはクラウド環境に最適化されており、信頼性やスケーラビリティの面で優れています。

一方、デモや検証を目的とした場合、または開発環境のみのシンプルな構成で十分な場合には、「Custom」で十分かと思います。「Custom」の場合、Linux OS上にDesignノードのみをインストールとなります。

なお、今回、ご紹介する手順は「Custom」となります。

1. Amazon EC2の作成

公式ドキュメントに記載されている推奨スペックは「 Requirements 」を参照してください。執筆時点では、CPUに特定の要件はなく、メモリ32GB以上が推奨されています。

今回は検証用として、以下のスペックでスモールスタートをしました。必要に応じて後日スケールアップを検討します。

  • インスタンスタイプ:t3.small
  • vCPU: 2
  • メモリ: 2GB ( +スワップ8GB)
  • OS : Amazon Linux 2023

2. Dataiku DSS インストール

公式ドキュメントに沿って進めます:
Install Dataiku on GNU/Linux
Custom Dataiku install on Linux

2.1 ディレクトリの作成

インストールディレクトリとデータディレクトリを作成し、所有者をec2-userに変更します。

$ sudo mkdir /opt/dss  
$ sudo mkdir /opt/dss-data  
$ sudo chown ec2-user:ec2-user /opt/dss /opt/dss-data  

2.2 インストールパッケージのダウンロードと展開

$ cd /home/ec2-user
$ wget https://cdn.downloads.dataiku.com/public/dss/13.1.1/dataiku-dss-13.1.1.tar.gz
$ cd /opt/dss
$ tar xzf /home/ec2-user/dataiku-dss-VERSION.tar.gz
$ chmod a+x .
$ umask 22

2.3 インストーラの実行

今回起動ポートは10000で設定しています。ドキュメントによっては11000の場合もあるようです。

続いて、インストールスクリプトを実行します。
いくつか制約があるようです。例えば、sudoなどrootでの実行をサポートしていないとのことです。

$ sudo dataiku-dss-13.1.1/installer.sh -d /opt/dss-data/ -p 10000
*********************************************
*           Dataiku DSS installer           *
*********************************************
[-] Installing or running DSS as root is not supported.

気を取り直して、ec2-userで実行します。今度は依存関係でエラーとなりました。

$ dataiku-dss-13.1.1/installer.sh -d /opt/dss-data/ -p 10000
*********************************************
*           Dataiku DSS installer           *
*********************************************
[+] Using data directory: /opt/dss-data
[+] Saving installation log to /opt/dss-data/run/install.log
[*] Could not find suitable version of Java
[+] Checking required dependencies
+ Detected OS distribution : amazonlinux 2023
+ Checking required packages...
*** Error: package git not found
*** Error: package nginx not found
*** Error: package glibc-langpack-en not found
*** Error: package java-17-amazon-corretto-headless not found
[-] Dependency check failed
[-] You can install required dependencies with:
[-]    sudo -i "/opt/dss/dataiku-dss-13.1.1/scripts/install/install-deps.sh"
[-] You can also disable this check with the -n installer flag
$

マニュアルを確認していくとどうやら依存関係は想定内のエラーのようです(笑)

依存関係エラーが発生した場合は、以下のコマンドで必要なパッケージをインストールします。

$ sudo -i "/opt/dss/dataiku-dss-13.1.1/scripts/install/install-deps.sh"

依存関係を解消後に再度実行していきます

$ dataiku-dss-13.1.1/installer.sh -d /opt/dss-data -p 10000
*********************************************
*           Dataiku DSS installer           *
*********************************************
[+] Using data directory: /opt/dss-data
[+] Saving installation log to /opt/dss-data/run/install.log
[+] Using Java at /usr/bin/java : openjdk version "17.0.13" 2024-10-15 LTS
[+] Checking required dependencies
+ Detected OS distribution : amazonlinux 2023
+ Checking required packages...
[+] Installation starting
[+] Initializing Python environment
[+] Initializing Python environment using platform default
+ Using default base Python for this platform : python3.9
created virtual environment CPython3.9.16.final.0-64 in 593ms
  creator CPython3Posix(dest=/opt/dss-data/pyenv, clear=False, no_vcs_ignore=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/ec2-user/.local/share/virtualenv)
    added seed packages: pip==23.1, setuptools==67.6.1, wheel==0.40.0
  activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator
[+] Precompiling Dataiku Python code
[+] Precompiling Jupyter Python code
[+] Precompiling third-party Python 3.9 code
[!] Small RAM detected, using low-memory mode, may not be suitable for production setups
[+] Performing initial install
[+] Writing version metadata conf=13100 product=13.1.1 revision=
[+] Writing default install config file
[+] Writing default env file
[+] Preparing data directory initial data
Loading plugins:
[2024/11/27-00:41:08.815] [main] [INFO] [dku.modules]  - Opening all java modules in unnamed module @35d176f7
[2024/11/27-00:41:08.817] [main] [INFO] [dku.modules]  - Opening java modules
[2024/11/27-00:41:08.934] [main] [INFO] [dku.logging]  - Loading logging settings
[2024/11/27-00:41:08.943] [main] [INFO] [dku.logging]  - Configuring additional logging settings from /opt/dss/dataiku-dss-13.1.1/resources/logging/dku-log4j.properties
[2024/11/27-00:41:09.005] [main] [INFO] [dku.logging]  - Configuring additional JUL logging settings from /opt/dss/dataiku-dss-13.1.1/resources/logging/dku-log-jul.properties
Installed kernelspec python3 in /opt/dss-data/jupyter-run/jupyter/kernels/python3
Installing /opt/dss/dataiku-dss-13.1.1/python39.packages/widgetsnbextension/static -> jupyter-js-widgets
Making directory: /opt/dss-data/jupyter-run/jupyter/nbextensions/jupyter-js-widgets/
Copying: /opt/dss/dataiku-dss-13.1.1/python39.packages/widgetsnbextension/static/extension.js -> /opt/dss-data/jupyter-run/jupyter/nbextensions/jupyter-js-widgets/extension.js
Copying: /opt/dss/dataiku-dss-13.1.1/python39.packages/widgetsnbextension/static/extension.js.map -> /opt/dss-data/jupyter-run/jupyter/nbextensions/jupyter-js-widgets/extension.js.map
- Validating: OK

    To initialize this nbextension in the browser every time the notebook (or other app) loads:

          jupyter nbextension enable widgetsnbextension --user --py

Extension collapsible_headings/main enabled successfully
Extension codefolding/main enabled successfully
Extension toggle_all_line_numbers/main enabled successfully
Extension hide_input_all/main enabled successfully
Extension addbefore/main enabled successfully
Extension jupyter-js-widgets/extension enabled successfully
[+] Generating default env file
[+] Generating supervisor configuration
[+] Generating nginx configuration
***************************************************************
* Installation complete (DSS node type: design)
* Next, start DSS using:
*         '/opt/dss-data/bin/dss start'
* Dataiku DSS will be accessible on http://<SERVER ADDRESS>:10000
*
* You can configure Dataiku DSS to start automatically at server boot with:
*    sudo -i "/opt/dss/dataiku-dss-13.1.1/scripts/install/install-boot.sh" "/opt/dss-data" ec2-user
***************************************************************
$

インストールが成功したようです。インストール結果の末尾に下記のように、Dataiku DSSの起動コマンドや自動起動のコマンドが表記されていますので実行していきます。

***************************************************************
* Installation complete (DSS node type: design)
* Next, start DSS using:
*         '/opt/dss-data/bin/dss start'
* Dataiku DSS will be accessible on http://<SERVER ADDRESS>:10000
*
* You can configure Dataiku DSS to start automatically at server boot with:
*    sudo -i "/opt/dss/dataiku-dss-13.1.1/scripts/install/install-boot.sh" "/opt/dss-data" ec2-user
***************************************************************

3. 起動確認

自動起動を設定する前に、コマンドで起動するかを確認していきます。

$ /opt/dss-data/bin/dss start
Waiting for DSS supervisor to start ...
backend                          STARTING
ipython                          STARTING
nginx                            STARTING
DSS started, pid=28116
Waiting for DSS backend to start

初期画面のセットアップは後述します。

4. 自動起動の設定

DSSを自動起動する設定を行います。これにより、systemctlで起動や停止が可能になります。

$ sudo -i "/opt/dss/dataiku-dss-13.1.1/scripts/install/install-boot.sh" "/opt/dss-data" ec2-user
[+] Installing startup script in /etc/dataiku/r4ECyCQPwq3WCuQI9pcShlE1
[+] Installing default startup configuration file /etc/dataiku/r4ECyCQPwq3WCuQI9pcShlE1/dataiku-boot.conf
[+] Installing service configuration file /etc/systemd/system/dataiku.service
Created symlink /etc/systemd/system/multi-user.target.wants/dataiku.service → /etc/systemd/system/dataiku.service.
[+] Done

# sudo systemctl start dataiku

無事にコマンドで起動できれば完了となります。

Dataikuの起動ができたら、初期画面から設定してきます。

5. 初期画面のセットアップ

Web ブラウザで Dataiku DSS にアクセスします。

初回起動時は下記のような画面が表示されます。無償版を利用する場合は「No」を選択して進めてください。

ライセンスの情報やユーザ名、メールアドレスなどを入力します。

設定を進めると初期 ID とパスワードが表示されます。

初期管理者アカウント(admin / admin)でログイン後、パスワードを変更することをお勧めします。

これで、AWS EC2上におけるDataiku DSSの構築手順の紹介は以上です。この手順は、EC2だけでなくオンプレミス環境などにも応用可能ですので、ぜひお試しください。この記事が皆様の環境構築や検証の一助となれば嬉しいです。

技術的な内容が多い中、最後までお読みいただきありがとうございました!

  • B!

おすすめ記事リンク