目次
- はじめに
- 前提
- watsonx.data開発者版をインストール
3.1 エンタイトルメントAPIキーを取得
3.2 Podmanマシンのシェルを起動
3.3 インストールを実行 - コンテナの起動と停止
- 動作確認
5.1 watsonx.dataのWeb画面
5.2 PrestoのWeb画面
5.3 Prestoのコマンドライン・インターフェース - リモート端末からの接続
- 参考資料
1. はじめに
データレイクハウスとwatsonx.dataについて歴史も含めた解説記事が公開されていますので、ご覧ください。本記事はその開発者版(deverloper version)の紹介です。
watsonx.dataはサービスとしてAWSおよびIBM Cloudで提供されていて、またセルフマネージドのソフトウェアとしてクラウド環境(OpenShift)にインストールすることもできます。さらに開発者版(deverloper version)をパソコン(Windows, Mac, Linux)にインストールできます。開発者版はOpenShift環境を簡単に入手できない場合、開発や画面インターフェース確認などの用途で有用です。
本記事ではwatsonx.dataをWindowsパソコンにインストールして動作確認した例を紹介します。PodmanまたはDockerをインストールすれば、その後はwatsonx.dataのマニュアルに沿ってインストールできて、悩むところは無いと思います。本記事ではマニュアルに載っていない次の2点を含めてインストール方法を説明します。
- watsonx.dataインストール・コマンドの出力メッセージ詳細
- リモート端末から接続するためのWindows設定方法
なお、本記事で触れないwatsonx.dataの様々な使い方がQiitaに投稿されていますので、ご覧ください。
2. 前提
-
watsonx.dataのソフトウェア・ライセンスが必要です。ライセンスがあれば開発者版を無料で利用できます。また開発者版専用のソフトウェア・ライセンスはありません。
補足)watsonx.dataのフルマネージド・サービスを無料でトライアル(1500米ドル分)できます。 -
Windows環境においてWSL2が必要です。これからインストールする場合は、次のQiita記事が参考になります。
-
Windows環境においてPodmanまたはDockerが必要です。Podmanのインストール方法などWindows用ガイドは次のページです。
-
本記事で使った環境は次の通りです。
- Windows 11 22H2(OSビルド 22621.2715)
- WSL 2.0.9.0
- Podman 4.8.0
- watsonx.data 1.0.3
3. watsonx.data開発者版をインストール
3.1 エンタイトルメントAPIキーを取得
次のページからキーを取得します。
https://myibm.ibm.com/products-services/containerlibrary
3.2 Podmanマシンのシェルを起動
PowerShellを起動します。次のマニュアルを参考にしてPodmanマシン(Fedora Linux)を作成・起動します。その名前を本記事ではデフォルトのpodman-machine-default
とします。
PS C:\Users\xxxx> podman machine init
PS C:\Users\xxxx> podman machine start
Starting machine "podman-machine-default"
...
PS C:\Users\xxxx> wsl -l
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu (既定)
podman-machine-default
Podmanマシンpodman-machine-default
のシェルを起動します。
PS C:\Users\xxxx> wsl -d podman-machine-default
[user@xxxx ~]$ pwd
/home/user
3.3 インストールを実行
次のマニュアルを参考にして手順を進めます。
まずPodmanプラグインをインストールします。なお、この後の説明ではPodmanマシンのプロンプト[user@xxxx ~]$
を簡略化して$
と表示します。
$ sudo dnf install -y podman-plugins
...
Installed:
dbus-libs-1:1.14.10-1.fc38.x86_64 dnsmasq-2.89-5.fc38.x86_64 podman-plugins-5:4.7.2-1.fc38.x86_64
Complete!
インストール・ディレクトリを作成します。
$ mkdir wxd
$ cd wxd
$ pwd
/home/user/wxd
環境変数を設定します。IBM_ENTITLEMENT_KEYに3.1節で取得したキーを設定します。本記事ではPodmanを使うのでDOCKER_EXEにpodman
を設定します。
$ export LH_ROOT_DIR=/home/user/wxd
$ export LH_RELEASE_TAG=latest
$ export IBM_LH_TOOLBOX=cp.icr.io/cpopen/watsonx-data/ibm-lakehouse-toolbox:$LH_RELEASE_TAG
$ export LH_REGISTRY=cp.icr.io/cp/watsonx-data
$ export PROD_USER=cp
$ export IBM_ENTITLEMENT_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
$ export IBM_ICR_IO=cp.icr.io
$ export DOCKER_EXE=podman
インストール・パッケージを取得します。
$ $DOCKER_EXE pull $IBM_LH_TOOLBOX
Trying to pull cp.icr.io/cpopen/watsonx-data/ibm-lakehouse-toolbox:latest...
Getting image source signatures
Checking if image destination supports signatures
Copying blob b274539e1ba3 done |
...
Writing manifest to image destination
Storing signatures
915ef012a5d87e48c4d6dcdef278d639304f8d2281b658035f0451d7b91ef2fa
$ $DOCKER_EXE images
REPOSITORY TAG IMAGE ID CREATED SIZE
cp.icr.io/cpopen/watsonx-data/ibm-lakehouse-toolbox latest 915ef012a5d8 2 months ago 96.1 MB
インストール・パッケージを解凍します。
$ id=$($DOCKER_EXE create $IBM_LH_TOOLBOX)
$ $DOCKER_EXE cp $id:/opt - > /tmp/pkg.tar
$ $DOCKER_EXE rm $id
6a366bc82f36d93981700104d1d58d216d503669d16de46d44b38f56fd2b78d1
$ id=
$ tar -xf /tmp/pkg.tar -C /tmp
$ cat /tmp/opt/bom.txt
...
Directory structure
-------------------
/opt/
+-- bom.txt
+-- client
+-- ibm-lh-client-1.0.3-255-20230912-165706-onprem-v1.0.3.tgz
\-- README.txt
+-- dev
+-- ibm-lh-dev-1.0.3-255-20230912-165706-onprem-v1.0.3.tgz
\-- README.txt
\-- standalone
+-- ibm-lakehouse-manage
\-- README.txt
Checksum
--------
# cksum /opt/*/*
4114574099 4810 /opt/client/README.txt
2844315941 768528 /opt/client/ibm-lh-client-1.0.3-255-20230912-165706-onprem-v1.0.3.tgz
1619773671 155 /opt/dev/README.txt
3422166850 770444 /opt/dev/ibm-lh-dev-1.0.3-255-20230912-165706-onprem-v1.0.3.tgz
1531423063 161 /opt/standalone/README.txt
2593951694 10837 /opt/standalone/ibm-lakehouse-manage
$ cksum /tmp/opt/*/*
4114574099 4810 /tmp/opt/client/README.txt
2844315941 768528 /tmp/opt/client/ibm-lh-client-1.0.3-255-20230912-165706-onprem-v1.0.3.tgz
1619773671 155 /tmp/opt/dev/README.txt
3422166850 770444 /tmp/opt/dev/ibm-lh-dev-1.0.3-255-20230912-165706-onprem-v1.0.3.tgz
1531423063 161 /tmp/opt/standalone/README.txt
2593951694 10837 /tmp/opt/standalone/ibm-lakehouse-manage
$ tar -xf /tmp/opt/dev/ibm-lh-dev-*.tgz -C $LH_ROOT_DIR
$ ls $LH_ROOT_DIR
ibm-lh-dev
コンテナ・イメージを取得します。
$ $DOCKER_EXE login ${IBM_ICR_IO} \
--username=${PROD_USER} \
--password=${IBM_ENTITLEMENT_KEY}
Login Succeeded!
$ . $LH_ROOT_DIR/ibm-lh-dev/etc/launch_config.env
$ $LH_ROOT_DIR/ibm-lh-dev/bin/setup --license_acceptance=y --runtime=$DOCKER_EXE
======= updating configuration =======
creating /home/user/wxd/ibm-lh-dev/localstorage/volumes/infra
==== pulling image for lhconsole-ui from cp.icr.io/cp/watsonx-data ====
Trying to pull cp.icr.io/cp/watsonx-data/lhconsole-ui:1.0.3-255-20230912-165706-onprem-v1.0.3...
...
==== pulling image for lhconsole-nodeclient from cp.icr.io/cp/watsonx-data ====
Trying to pull cp.icr.io/cp/watsonx-data/lhconsole-nodeclient:1.0.3-255-20230912-165706-onprem-v1.0.3...
...
==== pulling image for lhconsole-javaapi from cp.icr.io/cp/watsonx-data ====
Trying to pull cp.icr.io/cp/watsonx-data/lhconsole-javaapi:1.0.3-255-20230912-165706-onprem-v1.0.3...
...
==== pulling image for lhconsole-api from cp.icr.io/cp/watsonx-data ====
Trying to pull cp.icr.io/cp/watsonx-data/lhconsole-api:1.0.3-255-20230912-165706-onprem-v1.0.3...
...
==== pulling image for ibm-lh-control-plane-prereq from cp.icr.io/cp/watsonx-data ====
Trying to pull cp.icr.io/cp/watsonx-data/ibm-lh-control-plane-prereq:1.0.3-255-20230912-165706-onprem-v1.0.3...
...
==== pulling image for ibm-lh-minio from cp.icr.io/cp/watsonx-data ====
Trying to pull cp.icr.io/cp/watsonx-data/ibm-lh-minio:1.0.3-255-20230912-165706-onprem-v1.0.3...
...
==== pulling image for ibm-lh-postgres from cp.icr.io/cp/watsonx-data ====
Trying to pull cp.icr.io/cp/watsonx-data/ibm-lh-postgres:1.0.3-255-20230912-165706-onprem-v1.0.3...
...
==== pulling image for lh-hive-metastore from cp.icr.io/cp/watsonx-data ====
Trying to pull cp.icr.io/cp/watsonx-data/ibm-lh-hive-metastore:1.0.3-255-20230912-165706-onprem-v1.0.3...
...
==== pulling image for ibm-lh-presto from cp.icr.io/cp/watsonx-data ====
Trying to pull cp.icr.io/cp/watsonx-data/ibm-lh-presto:1.0.3-255-20230912-165706-onprem-v1.0.3...
...
Updating password for user ibmlhadmin
$ $DOCKER_EXE images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.access.redhat.com/ubi8-micro latest e0162d9d175f 3 weeks ago 28.5 MB
cp.icr.io/cpopen/watsonx-data/ibm-lakehouse-toolbox latest 915ef012a5d8 2 months ago 96.1 MB
cp.icr.io/cp/watsonx-data/lhconsole-ui 1.0.3-255-20230912-165706-onprem-v1.0.3 abd7ab8601d9 2 months ago 242 MB
cp.icr.io/cp/watsonx-data/lhconsole-nodeclient 1.0.3-255-20230912-165706-onprem-v1.0.3 c0e20b285a42 2 months ago 353 MB
cp.icr.io/cp/watsonx-data/lhconsole-javaapi 1.0.3-255-20230912-165706-onprem-v1.0.3 c36b85637791 2 months ago 413 MB
cp.icr.io/cp/watsonx-data/lhconsole-api 1.0.3-255-20230912-165706-onprem-v1.0.3 b1bf6d033430 2 months ago 440 MB
cp.icr.io/cp/watsonx-data/ibm-lh-control-plane-prereq 1.0.3-255-20230912-165706-onprem-v1.0.3 09c757eb4ff0 2 months ago 1.15 GB
cp.icr.io/cp/watsonx-data/ibm-lh-presto 1.0.3-255-20230912-165706-onprem-v1.0.3 697a67646d2c 2 months ago 4.27 GB
cp.icr.io/cp/watsonx-data/ibm-lh-hive-metastore 1.0.3-255-20230912-165706-onprem-v1.0.3 f3635bb6efe2 2 months ago 1.89 GB
cp.icr.io/cp/watsonx-data/ibm-lh-minio 1.0.3-255-20230912-165706-onprem-v1.0.3 55b7809c8e92 2 months ago 220 MB
cp.icr.io/cp/watsonx-data/ibm-lh-postgres 1.0.3-255-20230912-165706-onprem-v1.0.3 356998709ae3 3 months ago 372 MB
4. コンテナの起動と停止
startコマンドで起動します。
$ $LH_ROOT_DIR/ibm-lh-dev/bin/start
-- starting container for ibm-lh-minio...
8f04446135fcc1caa9e59e42e7c1a51e98d363b950c1edebe1e4acb836781127
-- starting container for ibm-lh-postgres...
31c18aef2e7b6bbc7aae9570fcbaee71a43a087ffc5ca5cdfd5ce9a9d515245a
Checking container: ibm-lh-postgres
Container ID for ibm-lh-postgres is: 31c18aef2e7b
Postgres status is:
localhost:5432 - no response localhost:5432 - accepting connections
-- starting container for ibm-lh-control-plane-prereq...
-- starting container for lhconsole-api...
d6a752da0287b1a5ae4f0c9b6513a70da6b8fa21672d6e5d92ebb3fd60b33e0e
-- starting container for lh-hive-metastore...
35d407ab6660f4b0cbaefc479dbe2aa04722965732cffa41ac859efc91a2a07f
-- starting container for ibm-lh-presto...
35cb92d9be3f3aa71ad028a3da3940ce04b092231c7b1ed0749b5171992bf81a
Waiting for ibm-lh-presto to be ready....
-- starting container for lhconsole-javaapi...
a3953fddb79543b46df0b8f2df6c8303fca02e818de04de2e9abaf8d5c13065a
-- starting container for lhconsole-nodeclient...
6f2c7b352895cefd1d2b0a07bbe5740f828355b313f99ce5c809039ee48423a0
-- starting container for lhconsole-ui...
d40355ffd7f66837bd5dfab8d34967c3df78609159dc8f98884c178886e38809
$ $DOCKER_EXE ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8f04446135fc cp.icr.io/cp/watsonx-data/ibm-lh-minio:1.0.3-255-20230912-165706-onprem-v1.0.3 2 minutes ago Up 2 minutes ibm-lh-minio
31c18aef2e7b cp.icr.io/cp/watsonx-data/ibm-lh-postgres:1.0.3-255-20230912-165706-onprem-v1.0.3 2 minutes ago Up 2 minutes ibm-lh-postgres
d6a752da0287 cp.icr.io/cp/watsonx-data/lhconsole-api:1.0.3-255-20230912-165706-onprem-v1.0.3 /scripts/start.sh About a minute ago Up About a minute lhconsole-api
35d407ab6660 cp.icr.io/cp/watsonx-data/ibm-lh-hive-metastore:1.0.3-255-20230912-165706-onprem-v1.0.3 About a minute ago Up About a minute ibm-lh-hive-metastore
35cb92d9be3f cp.icr.io/cp/watsonx-data/ibm-lh-presto:1.0.3-255-20230912-165706-onprem-v1.0.3 About a minute ago Up About a minute 0.0.0.0:8443->8443/tcp ibm-lh-presto
a3953fddb795 cp.icr.io/cp/watsonx-data/lhconsole-javaapi:1.0.3-255-20230912-165706-onprem-v1.0.3 44 seconds ago Up 44 seconds lhconsole-javaapi-svc
6f2c7b352895 cp.icr.io/cp/watsonx-data/lhconsole-nodeclient:1.0.3-255-20230912-165706-onprem-v1.0.3 ./start.sh 44 seconds ago Up 44 seconds lhconsole-nodeclient-svc
d40355ffd7f6 cp.icr.io/cp/watsonx-data/lhconsole-ui:1.0.3-255-20230912-165706-onprem-v1.0.3 /scripts/start.sh 44 seconds ago Up 44 seconds 0.0.0.0:9443->8443/tcp lhconsole-ui
$ $LH_ROOT_DIR/ibm-lh-dev/bin/status --all
ibm-lh-hive-metastore running
ibm-lh-minio running
ibm-lh-postgres running
ibm-lh-presto running 0.0.0.0:8443->8443/tcp
lhconsole-api running
lhconsole-javaapi-svc running
lhconsole-nodeclient-svc running
lhconsole-ui running 0.0.0.0:9443->8443/tcp
stopコマンドで停止します。
$ $LH_ROOT_DIR/ibm-lh-dev/bin/stop
Inspecting docker image lhconsole-ui before removal:
lhconsole-ui still running. Removing lhconsole-ui...
lhconsole-ui
Inspecting docker image lhconsole-nodeclient before removal:
lhconsole-nodeclient still running. Removing lhconsole-nodeclient...
lhconsole-nodeclient-svc
Inspecting docker image lhconsole-javaapi before removal:
lhconsole-javaapi still running. Removing lhconsole-javaapi...
lhconsole-javaapi-svc
Inspecting docker image lhconsole-api before removal:
lhconsole-api still running. Removing lhconsole-api...
lhconsole-api
Inspecting docker image ibm-lh-presto before removal:
ibm-lh-presto still running. Removing ibm-lh-presto...
ibm-lh-presto
Inspecting docker image lh-hive-metastore before removal:
lh-hive-metastore still running. Removing lh-hive-metastore...
ibm-lh-hive-metastore
Inspecting docker image ibm-lh-postgres before removal:
ibm-lh-postgres still running. Removing ibm-lh-postgres...
ibm-lh-postgres
Inspecting docker image ibm-lh-minio before removal:
ibm-lh-minio still running. Removing ibm-lh-minio...
ibm-lh-minio
$ $LH_ROOT_DIR/ibm-lh-dev/bin/status -all
$ logout
[user@yyyy xxxx]$ logout
PS C:\Users\xxxx> podman machine stop podman-machine-default
Machine "podman-machine-default" stopped successfully
5. 動作確認
5.1 watsonx.dataのWeb画面
Webブラウザで次のURLを開いて、詳細設定
をクリックします。
https://localhost:9443/
localhostに進む
をクリックします。
ログイン画面が表示されました。ユーザー名はibmlhadmin
、パスワードはpassword
です。
次の画面が表示されます。左側のアイコン(インフラストラクチャー・マネージャー)をクリックします。
次の画面が表示されてデータベース・エンジン、カタログ、バケットの構成を確認できます。
5.2 PrestoのWeb画面
Webブラウザで次のURLを開きます。ポップアップが表示されるので、ユーザー名とパスワードを入力します。ユーザー名はibmlhadmin
、パスワードはpassword
です。
https://localhost:8443/
次の画面が表示されて、クエリの状態を確認できます。
5.3 Prestoのコマンドライン・インターフェース
watsonx.dataにはTPC-Hのデータがサンプルとして入っています。そのテーブル一覧を表示して、customerテーブルをSELECTしてみます。
$ $LH_ROOT_DIR/ibm-lh-dev/bin/presto-cli --catalog=tpch
presto> SELECT * FROM information_schema.tables ORDER BY table_schema, table_name;
table_catalog | table_schema | table_name | table_type
---------------+--------------------+------------------+------------
tpch | information_schema | applicable_roles | BASE TABLE
...
tpch | tiny | customer | BASE TABLE
tpch | tiny | lineitem | BASE TABLE
tpch | tiny | nation | BASE TABLE
tpch | tiny | orders | BASE TABLE
tpch | tiny | part | BASE TABLE
tpch | tiny | partsupp | BASE TABLE
tpch | tiny | region | BASE TABLE
tpch | tiny | supplier | BASE TABLE
(80 rows)
presto> SELECT * FROM tiny.customer LIMIT 2;
custkey | name | address | nationkey | phone | acctbal | mktsegment | >
---------+--------------------+-------------------------+-----------+-----------------+---------+------------+--------------------------------------------->
1117 | Customer#000001117 | 80NfzBRWj5tUUaRdnsFE7Eg | 23 | 33-461-439-5684 | 2829.07 | FURNITURE | ironic deposits need to haggle furiously. f>
1118 | Customer#000001118 | QHg,DNvEVXaYoCdrywazjAJ | 11 | 21-583-715-8627 | 4130.18 | HOUSEHOLD | y regular requests above the blithely ironic>
presto> quit
6. リモート端末からの接続
次の記事を参考にしてWindowsからPodmanマシンへのポートフォワードを設定します。
リモート端末から前節のWeb画面に接続します。Windows環境のIPアドレスが192.168.xxx.xxx
であればwatsonx.dataとPrestoのWeb画面URLは次のようになります。
- https://192.168.xxx.xxx:9443/
- https://192.168.xxx.xxx:8443/
7. 参考資料
-
岡口純子:データレイクハウスという選択肢 ~オープンなアーキテクチャを備えるレイクハウスソリューション「watsonx.data」, iMagazine, 2023年11月10日.
https://www.imagazine.co.jp/watsonx-lake-house-solution/ -
watsonx.dataタグの付いたQiita記事
https://qiita.com/tags/watsonx.data -
エンタイトルメントAPIキーの入手方法 (Obtaining your IBM entitlement API key)
https://www.ibm.com/docs/en/watsonxdata/1.1.x?topic=planning-licenses-entitlements#licensing__title__4 -
wsl2にUbuntu環境を構築する【windows】
https://qiita.com/ryome/items/240f36923f5cb989da27 -
Podman for Windows
https://github.com/containers/podman/blob/main/docs/tutorials/podman-for-windows.md -
watsonx.data開発者版インストール・マニュアル (Installing the watsonx.data developer version)
https://www.ibm.com/docs/en/watsonxdata/1.1.x?topic=edition-installing-watsonxdata-developer-version -
Windows (WSL)で動いているPodmanマシンにポートフォワード
https://qiita.com/yamasakk/items/5260e670065f5d2b9e09