3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Db2 Warehouse SMP構成(シングルノード) x86版 を導入してみた

Last updated at Posted at 2018-06-08

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以上あるので問題ないです。

CPUINFOの確認
[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以上あるので問題ないです。

MEMORYINFOの確認
[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 ファイルにホスト名が入っていることを確認します。

/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なのでサポート対象です。

Linuxディストリビューションの確認
[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エンジンをインストールします。

参考:
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」を条件に検索します。

image.png

検索結果から「IBM Db2 Warehouse Developer Edition」を選択します。

image.png

3).Db2 Warehouse コンテナのチェックアウト

画面右の Proceed to Checkout をクリックし、チェックアウトします。

image.png

4).Db2 Warehouse コンテナの取得

利用規約に同意し、Db2 Warehouse コンテナのコンテンツを取得します。

image.png

5).Db2 Warehouse コンテナの取得

コンテナイメージのpullコマンドを確認します。

image.png

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」で事前に変更しています。

image.png

2).ユーザ管理画⾯へ移動

サイドメニュー「SETTINGS」>「Users and Privileges」をクリックします。

image.png

3).ユーザの追加

左上の「Add」をクリックします。

image.png

「User ID」、「Email」、「Password」、「Confirm password」を⼊⼒します。
最後に右下の「Create」をクリックします。

image.png

「SUCCESS」が表示され、ユーザが作成されました。
これでDb2 Warehouse コンテナに作成したユーザーでログイン可能になります。
image.png

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にあるとおり、手早く簡単にできました。

参考にした情報

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?