IBM Db2 Warehouseとは?
Db2 Warehouse(旧 IBM dashDB Local )は、分析用DWHソフトウェアアプライアンスです。
Db2 Warehouse Webページ にはdockerコンテナで提供され、仮想環境へ簡易に配置可能とあります。
無償評価版のIBM Db2 Warehouse Developer Editionを使って導入してみました。
動作環境
動作環境の情報です。
- Red Hat Enterprise Linux v7.4
- Docker Community Edition v18.03
- Db2 Warehouse x86版 v2.7
Db2 Warehouse 導入の流れ
今回は、Db2 Warehouse導入と簡単な動作確認をしています。
手順は、Db2 Warehouse SMP構成 導入ガイド、Db2 Warehouse のセットアップ (⽇本語版)を参考にしました。
- Step01. Db2 Warehouseの前提条件チェック
- Step02. Db2 Warehouse コンテナイメージの取得準備
- Step03. Db2 Warehouse コンテナイメージの取得
- Step04. Db2 Warehouse コンテナの起動
- Step05. ユーザの作成
- Step06. Db2 Warehouse コンテナへのSSH接続
- Step07. コマンドラインからのデータベース接続
- Step08. テーブルへのデータロード
※ Db2 Warehouseのコンテナイメージ取得にDocker IDが必要です。
Step01. Db2 Warehouseの前提条件チェック
Db2 Warehouse をデプロイする前に、前提条件を確認します。
確認している前提条件は、2018年5月時点のものです。
最新の前提条件は、[Knowledgeable Center]
(https://www.ibm.com/support/knowledgecenter/ja/SS6NHC/com.ibm.swg.im.dashdb.doc/admin/local_prereqs.html)にまとまっています。
1).ハードウェアの前提条件
Db2 Warehouse SMP構成の導入に必要なスペックです。
ひとつずつ確認していきます。
コンポーネント | 単一ノード・デプロイメント (SMP) |
---|---|
プロセッサー | 2.0 GHz コア |
メモリー | 8 GB の RAM |
ストレージ |
開発環境: ルート・ディレクトリーには 50 GB が推奨されます。最小サイズは 25 GB です。 /var/lib/docker ディレクトリーがルート・ディレクトリー下にない場合は、 /var/lib/docker ディレクトリー用に 25 GB 以上の追加容量が必要です。 実稼働環境: ルート・ディレクトリーには 300 GB が推奨されます。最小サイズは 50 GB です。 /var/lib/docker ディレクトリーがルート・ディレクトリー下にない場合は、 /var/lib/docker ディレクトリー用に 50 GB 以上の追加容量が必要です。 |
プロセッサー前提条件を確認します。
2GHz以上あるので問題ないです。
[root@eo01 ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz
stepping : 9
microcode : 0x70
cpu MHz : 3800.000
cache size : 8192 KB
・・・(省略)・・・
メモリー前提条件を確認します。
8GB以上あるので問題ないです。
[root@eo01 ~]# cat /proc/meminfo
MemTotal: 32727488 kB
MemFree: 254816 kB
MemAvailable: 17359676 kB
・・・(省略)・・・
ストレージ前提条件を確認します。
/配下が50GB以上あるので問題ないです。
[root@eo01 /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda4 7.0T 457G 6.6T 7% /
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 114M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/sda2 248M 158M 91M 64% /boot
tmpfs 3.2G 8.0K 3.2G 1% /run/user/0
tmpfs 3.2G 8.0K 3.2G 1% /run/user/1000
ハードウェアスペックの確認はこれで終わりです。
動作環境のスペックは問題なしです。
2).ファイルシステムの前提条件
ファイル・システムでは2点確認します。
- POSIX 準拠のファイルシステム(RHEL7なのでxfs)
- コンテナ作成時に指定するData Volume(今回は /mnt/clusterfs)が空であること
ファイルシステムを確認します。
/ がxfsとなっているので問題ないです。
[root@eo01 ~]# df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda4 xfs 7496992768 478449992 7018542776 7% /
devtmpfs devtmpfs 16353984 0 16353984 0% /dev
tmpfs tmpfs 16363744 0 16363744 0% /dev/shm
tmpfs tmpfs 16363744 116008 16247736 1% /run
tmpfs tmpfs 16363744 0 16363744 0% /sys/fs/cgroup
/dev/sda2 xfs 253676 160780 92896 64% /boot
tmpfs tmpfs 3272752 8 3272744 1% /run/user/0
tmpfs tmpfs 3272752 8 3272744 1% /run/user/1000
overlay overlay 7496992768 478449992 7018542776 7% /var/lib/docker/overlay2/3220e2dbb9b7dcfd6835df0e17081f485995c8124ee7bc7eaf1e7aa2f6b2d833/merged
shm tmpfs 65536 0 65536 0% /var/lib/docker/containers/ce372afb14fe9236db86af9addd511b9a13792e27307ebbd005f4b58859c0737/mounts/shm
overlay overlay 7496992768 478449992 7018542776 7% /var/lib/docker/overlay2/b584a40f5fdc9270fe81744de8e5ed0e6f649f01d32e7fa2ee23e4ab3ace3230/merged
shm tmpfs 524288 96 524192 1% /var/lib/docker/containers/4f4b5326d1875baa48cb67f3c7d20716ff3d2e4d29ccda6322a342f61042bdb1/mounts/shm
3).ネットワークの前提条件
/etc/hosts ファイルにホスト名が入っていることを確認します。
[root@eo01 ~]# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
xxx.xxx.xxx.xxx eo01.dwh.com eo01
Db2 Warehouseが使用する以下ポートが空いていることを確認します。
ポート番号 | 使用サービス |
---|---|
60000 - 60060 | データベース FCM (HADR を使用する場合、60006 ~ 60007 が HADR 用) |
25000 - 25999 | Apache Spark |
50022 | 自動化と管理のための SSH |
50001 | SSL を使用するデータベース接続 |
50000 | SSL を使用しないデータベース接続 |
9929 | 通信テストに使用 |
9300 | Web コンソールの状況確認に使用 |
8998 | Livy サーバー経由の Apache Spark アプリケーション・ジョブの実行 |
8443 | Web コンソールの HTTPS |
5000 | システム・マネージャー |
2379 - 2380 | HA 管理 |
389 | LDAP |
22 | SSH/ホスト・オペレーティング・システム |
4).オペレーティング・システムの前提条件
Db2 Warehouse は、Docker サポート対象のすべての Linux ディストリビューションで実行できます。
OSはRHEL7.4なのでサポート対象です。
[root@eo01 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.4 (Maipo)
[root@eo01 ~]# uname -a
Linux eo01.dwh.com 3.10.0-693.21.1.el7.x86_64 #1 SMP Fri Feb 23 18:54:16 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
5).Dockerエンジンのインストール
Dockerエンジンをインストールします。
注意:
RHEL, CentOSを使用する場合、devicemapperを使用します。
Dockerでdevicemapperを使用するには、direct-lvmモードを設定します。
詳細は[「Use the Device Mapper storage driver」]
(https://docs.docker.com/storage/storagedriver/device-mapper-driver/#configure-docker-with-the-devicemapper-storage-driver)に書かれています。
Step02. Db2 Warehouse コンテナイメージの取得準備
コンテナイメージは、Doker Store/Hubレポジトリまたは IBM Boxサイトから取得できます。
今回はDocker Storeからコンテナイメージを取得します。
※イメージ取得にDocker IDが必要です。
1).Docker Storeサイトへログイン
Docker Storeサイトに接続し、Docker IDでログインします。
2).Db2 Warehouse コンテナの検索
Docker Storeサイトで「IBM Db2 Warehouse Enterprise Edition」を条件に検索します。
検索結果から「IBM Db2 Warehouse Developer Edition」を選択します。
3).Db2 Warehouse コンテナのチェックアウト
画面右の Proceed to Checkout をクリックし、チェックアウトします。
4).Db2 Warehouse コンテナの取得
利用規約に同意し、Db2 Warehouse コンテナのコンテンツを取得します。
5).Db2 Warehouse コンテナの取得
コンテナイメージのpullコマンドを確認します。
Step03. Db2 Warehouse コンテナイメージの取得
Docker Storeから導入サーバへ、Db2 warehouseコンテナイメージを取得します。
1).Docker レジストリサーバーにログイン
Docker Storeからコンテナイメージを取得するため、Docker IDでログインします。
[root@eo01 ~]# docker login -u='docker_id' -p='password'
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded
2).Db2 warehouseコンテナイメージの取得
docker pullコマンドで、コンテナイメージを取得します。
「Step02. 5).Db2 Warehouse コンテナの取得」で確認したpullコマンドを実行します。
[root@eo01 ~]# docker pull store/ibmcorp/db2wh_ce:v2.7.0-db2wh_devc-linux
v2.7.0-db2wh_devc-linux: Pulling from store/ibmcorp/db2wh_ce
・・・(省略)・・・
Status: Downloaded newer image for store/ibmcorp/db2wh_ce:v2.7.0-db2wh_devc-linux
3).コンテナイメージの確認
docker imagesコマンドで取得したコンテナイメージを表示します。
「v2.7.0-db2wh_devc-linux」が取得できています。
[root@eo01 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
store/ibmcorp/db2wh_ce v2.7.0-db2wh_devc-linux 5ffc805a633c 4 days ago 7.72GB
Step04. Db2 Warehouse コンテナの起動
取得したコンテナイメージを使用して、Db2 warehouseコンテナを起動します。
1).コンテナの起動
コンテナを作成、初期化するため、docker runコマンドを実行します。
[root@eo01 ~]# docker run -d -it --privileged=true --net=host --name=Db2wh \
-e TIMEZONE='Asia/Tokyo' \
-e DISABLE_SPARK='YES' \
-v /mnt/clusterfs:/mnt/bludata0 \
-v /mnt/clusterfs:/mnt/blumeta0 store/ibmcorp/db2wh_ce:v2.7.0-db2wh_devc-linux #※3
※1 タイムゾーン(Default: UTC)を Asia/Tokyo に変更しています。
(-e TIMEZONE='Asia/Tokyo')
※2 Db2 wrehouseにはデフォルトでApatch Spackが含まれます。
Sparkを使用しない場合、YESを設定することで無効化できます。
(-e DISABLE_SPARK='YES' )
※3 今回はファイル・システム名の例として /mnt/clusterfs を使用しています。
デプロイメントを開始する前に、ファイル・システムが空であることを確認してください。
2).コンテナのログを確認
コンテナログを確認し、正常起動を確認します。
「Congratulations!」 の項目に接続情報とユーザー情報が出力されます。
デフォルト(Default password)のパスワードが・・・長いですね。
起動しない場合は下の3)の手順を試してみてください。
[root@eo01 ~]# docker logs --follow Db2wh
systemd 219 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN)
Detected virtualization docker.
Detected architecture x86-64.
Welcome to Db2 Warehouse!
・・・(省略)・・・
[4062363.238328] start_dashDB_local.sh[178]: ********************************************************************************
[4062363.240188] start_dashDB_local.sh[178]: ****** Congratulations! ******
[4062363.242040] start_dashDB_local.sh[178]: ****** You have successfully deployed IBM Db2 Warehouse ******
[4062363.243966] start_dashDB_local.sh[178]: ********************************************************************************
[4062363.246386] start_dashDB_local.sh[178]: *
[4062363.248165] start_dashDB_local.sh[178]: * Next steps:
[4062363.249990] start_dashDB_local.sh[178]: *
[4062363.572883] start_dashDB_local.sh[178]: * 1. If you were monitoring the container startup progress using docker logs
[4062363.574749] start_dashDB_local.sh[178]: command, use Ctrl+c key-sequence to detach from the Docker logs console.
[4062363.576668] start_dashDB_local.sh[178]: * 2. Log in to the web console using the following information:
[4062363.578646] start_dashDB_local.sh[178]: * URL: https://xxx.xxx.xxx.xxx:8443
[4062363.580510] start_dashDB_local.sh[178]: * Default user ID : bluadmin
[4062364.364888] start_dashDB_local.sh[178]: * Default password : VZpISvRZ0jdl^3Eaa9cSQdcW05fAZ
[4062364.368776] start_dashDB_local.sh[178]: * 3. For improved security, change the default bluadmin password
[4062364.370729] start_dashDB_local.sh[178]: * by running "docker exec -it Db2wh setpass <new password>".
[4062364.372646] start_dashDB_local.sh[178]: * For other user management, use the web console.
[4062364.374611] start_dashDB_local.sh[178]: * Note: Db2wh is an example of a container name. Use the container name that you specified for the docker run command.
[4062364.376452] start_dashDB_local.sh[178]: *
[4062364.378284] start_dashDB_local.sh[178]: ********************************************************************************
3).Db2 Warehouse コンテナの起動しないときの対処法
起動に成功したときは「Step05. ユーザの作成」」へ移動します。
Db2 warehouseコンテナが起動しないときは次の手順を実行し、上の「Step04. 1).コンテナの起動」から再実行してください。
①起動に失敗したコンテナの削除
[root@eo01 ~]# docker rm -f Db2wh
②Docker デーモンを停止
[root@eo01 ~]# systemctl stop docker
③ネットワークサービスの再起動
[root@eo01 ~]# systemctl restart network
④/mnt/clusterfsシステムディレクトリーの内容を削除
[root@eo01 ~]# rm -rf /mnt/clusterfs/*
⑤Docker デーモンを開始
[root@eo01 ~]# systemctl start docker
Step05. ユーザの作成
Webコンソールに接続し、DB一般ユーザを作成します。
1).Webコンソールにログイン
Webコンソールからユーザ作成をしてみます。
ブラウザを起動し、「https://:8443/console」にアクセス。
DB管理ユーザ(bluadmin)のユーザー名とパスワードを⼊⼒し、ログインします。
bluadminのパスワードは、「Step04. 2). コンテナのログを確認」で表示されたやつです。
今回は「docker exec -it Db2 Warehouse setpass xxxxxxx」で事前に変更しています。
2).ユーザ管理画⾯へ移動
サイドメニュー「SETTINGS」>「Users and Privileges」をクリックします。
3).ユーザの追加
左上の「Add」をクリックします。
「User ID」、「Email」、「Password」、「Confirm password」を⼊⼒します。
最後に右下の「Create」をクリックします。
「SUCCESS」が表示され、ユーザが作成されました。
これでDb2 Warehouse コンテナに作成したユーザーでログイン可能になります。
Step06. Db2 Warehouse コンテナへのSSH接続
Db2 Warehouseコンテナは、デフォルトではパスワード認証によるSSH接続がデフォルトではできません。
パスワード認証でSSH接続できるよう設定ファイルを変更します。
1).Db2 warehouseコンテナOSにログイン
dockerコマンドからbashを起動し、Db2 WarehouseコンテナOSのシェルに接続します。
[root@eo01 ~]# docker exec -it Db2wh bash
[root@eo01 - Db2wh /]#
2).sshd設定ファイルの変更
テキストエディタ(vi)を起動し、sshd設定ファイルを変更します。
[root@eo01 - Db2wh /]# vi /etc/ssh/sshd.config
[ PasswordAuthentication no => PasswordAuthentication yes に修正、保存 ]
3).sshdサービスの再起動
設定変更を反映するため、sshdサービスを再起動します。
[root@eo01 - Db2wh ssh]# systemctl restart sshd.service
[root@eo01 - Db2wh ssh]# exit
4).TeraTermからの接続
TeraTermからDb2 WarehouseコンテナOSへ接続してみます。
設定項目 | 設定値 |
---|---|
ホスト | <Db2 WarehouseのIPアドレス> |
TCPポート | 50022(デフォルト) |
サービス | SSH |
Db2 WarehouseコンテナOSへのログインできました。
[testuser@eo01 - Db2wh ~]$ whoami
testuser
[testuser@eo01 - Db2wh ~]$
Step07. コマンドラインからのデータベース接続
TeraTermからDb2 Warehouseコンテナへ接続可能になりました。
次はDb2 Warehouseコンテナからデータベースへ接続します。
提供されているdbsql、CLPでやってみます。
名称 | 説明 |
---|---|
dbsql | nzsql互換のコマンドラインインターフェース |
CLP | Db2標準のコマンドラインインターフェース |
CLPPlus | Oracle互換のコマンドラインインターフェース |
1).dbsqlコマンドからの接続
- 対話形式での実行例
Db2 Warehouseコンテナから対話形式でデータベースに接続しています。
SQLでシステム日付を取得し、コマンドラインを終了しています。(\q)
bluadmin@eo01 - Db2wh ~]$ dbsql -d BLUDB
Username: bluadmin
Password:
Welcome to IBM dbsql, an interactive SQL terminal.
Type: \? for help with internal slash commands
\g or terminate with semicolon to execute query
\q to quit
BLUDB.BLUADMIN(BLUADMIN)=> select current date from sysibm.sysdummy1;
1
------------
2018/5/29
(1 row)
BLUDB.BLUADMIN(BLUADMIN)=> \q
[bluadmin@eo01 - Db2wh ~]$
- SQL(一行)の実行例
今度は対話形式ではなく、コマンドから直接SQLを実行しました。
結果を出力し、自動でコマンドラインが終了しています。
[bluadmin@eo01 - Db2wh ~]$ dbsql -d BLUDB -c "select current date from sysibm.sysdummy1;"
Username: bluadmin
Password:
1
------------
2018/5/29
(1 row)
[bluadmin@eo01 - Db2wh ~]$
2).CLPからの接続
次にCLP(Db2標準コマンドライン)で実行してみます。
上と同じくシステム日付を取得できました。
[bluadmin@eo01 - Db2wh ~]$ db2 connect to BLUDB
Database Connection Information
Database server = DB2/LINUXX8664 11.1.9.0
SQL authorization ID = BLUADMIN
Local database alias = BLUDB
db2 => select current date from sysibm.sysdummy1;
1
----------
05/29/2018
1 record(s) selected.
db2 => terminate
DB20000I The TERMINATE command completed successfully.
[bluadmin@eo01 - Db2wh ~]$
Step08. テーブルへのデータロード
最後にdbload コマンドを使用し、テーブルへデータロードをしてみます。
1).テーブルの作成
データロードを行うテーブルを作成します。
[bluadmin@eo01 - Db2wh ~]$ dbsql -d BLUDB -u bluadmin -pw <password> -c "create table LOADSAMPLE (col1 integer,col2 varchar(10))"
CREATE TABLE
BLUDB.BLUADMIN(BLUADMIN)=> \q
2).ロードデータの作成
Db2 Warehouseコンテナに作成したロード用データです。
[bluadmin@eo01 - Db2wh ~]$ pwd
/mnt/blumeta0/home/bluadmin
[bluadmin@eo01 - Db2wh ~]$
[bluadmin@eo01 - Db2wh ~]$ cat LOADSAMPLE.dat
1,LOAD1
2,LOAD2
3,LOAD3
[bluadmin@eo01 - Db2wh ~]$
※DATファイルはコンテナ作成時に-vオプションでマウントしているディレクトリへ格納しています。
(今回の例では/mnt/blumeta0/home/bluadmin)
3).dbloadコマンドの実行
dbloadコマンドからデータロードを行います。
「completed successfully」のメッセージが出ているので、成功です。
[bluadmin@eo01 - Db2wh ~]$ dbload -host localhost -port 50000 -u bluadmin -pw <password> -db bludb -schema bluadmin -t LOADSAMPLE -df LOADSAMPLE.dat -delim ','
============================== Load session: 1 ==============================
Connecting to: 'bludb'
Connected to: 'bludb'
'log' file: '/mnt/blumeta0/home/bluadmin/logs/dbload/LOADSAMPLE.bluadmin.bludb.log'
'bad' file: not found
Load session of table 'bludb.bluadmin.LOADSAMPLE' completed successfully
Session started: 2018-05-29 14:52:45
Session ended: 2018-05-29 14:52:45
Elapsed time [hh:mm:ss]: 00:00:00
===============================================================================
[bluadmin@eo01 - Db2wh ~]$
4).データロードの結果確認
SELECTを実行してみるとデータが入っています。
[bluadmin@eo01 - Db2wh ~]$ dbsql -d BLUDB -u bluadmin -pw <password> -c "select * from loadsample"
COL1 | COL2
------+-------
1 | LOAD1
2 | LOAD2
3 | LOAD3
(3 rows)
[bluadmin@eo01 - Db2wh ~]$
終わりに
以上、Db2 Warehouse SMP構成の導入と動作確認でした。
コンテナのチェックアウトから起動までは1時間くらいでした
導入作業はHPにあるとおり、手早く簡単にできました。