パソコンに高速データウェアハウスNetezza開発者版をインストールして無料トライアル (Windows 10/NPSVB 11.2.2.1 BETA)

# 1. はじめに

IBMが提供するデータウェアハウスは2つあり、Netezza (正式には Netezza Performance Server, NPS) と Db2 Warehouse です。Netezzaはチューニングに労力を掛けなくても処理の速いことが特徴です。もちろん Db2 Warehouse も速いですが、Netezzaよりは設定項目が多い印象です。Db2 Warehousは分析向け列表（データを列単位で保持）とトランザクション処理向けの行表（データを行単位で保持）の両方を保持することができます。一方Netezzaは分析向けデータウェアハウスであり、トランザクション処理向けのデータベースではありません。

Netezzaはアプライアンス（ソフトウェア製品が組み込み済みのハードウェア製品）やクラウド環境 (OpenShift, Cloud Pak for Data) で動作します。Netezzaの開発者版が提供されていて、無料でダウンロードしてWindows PCやMacで動かすことができます！そして次のようなNetezza Web管理画面にアクセスできるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/7c5b3bae-69f8-3737-ca51-06d864368dba.png)
ただしパソコン上で動かすため、本格的な分析用途ではなく、データベースの機能や互換性の確認が用途となります。

本記事ではWindows PC上にNetezza開発者版であるNPSVBを導入します。そのネットワーク設定が私にはわかりにくく、またWeb管理インターフェースを起動するシェルスクリプトを修正する必要がありました。こういった内容を本記事で説明します。目次は次の通りです。

1. はじめに
2. ソフトウェア・スタック
3. 導入前提
4. 導入手順概要
5. 導入手順
6. エラー例
7. 参考資料
8. 類似テーマを扱ったQiita記事

Netezzaクライアントツール（nzsql, ODBCドライバ）を用いた接続方法は [別のQiita記事](https://qiita.com/yamasakk/items/5893de8ad9b2d058f615) で紹介することにして、本記事では触れません。

# 2. ソフトウェア・スタック
Windows OS、仮想化ソフトウェア、仮想マシンの3階層です。開発者版NPSVBの実態は仮想マシンです。

1. Windows OS上で仮想化ソフトウェアOracle VM VirtualBoxを動かします。
1. この仮想環境で仮想マシンNPSVBを動かします。
1. NPSVBはLinuxマシン(CentOS)です。そこにNetezzaが導入されています。

# 3. 導入前提
1) パソコンのハードウェアについて、CPUのHyper Threadingがオンで2論理コア、メモリ8GiBがあれば動作すると思います。仮想マシンNPSVBに1論理コア、4GiBメモリを割り当てれば動作しました。

2) Windows 10または11が必要です。本記事の検証に使ったのはWindows 10ですが、Windows 11でも同様に動作すると思います。

3) IBMホームページのアカウント(IBMid)が必要です。このアカウントを使って仮想マシンNPSVBをダウンロードします。IBMidを持っていなければ、次のQiita記事をご覧になって作成してください。
    - IBMidを作成してみる。
    https://qiita.com/Shumpei_Kubo/items/564126081dea547dd742

# 4. 導入手順概要
8個のステップに分けて手順を説明します。
1) Windowsネットワーク・アダプターに静的IPアドレスを追加
2) 仮想化ソフトウェアOracle VM VirtualBoxを導入
3) 仮想マシンNPSVBのパッケージを取得
4) 仮想マシンNPSVBをインポート
5) Netezzaを起動
6) Web管理インターフェースを起動
7) Web管理画面にアクセス
8) 仮想マシンNPSVBを停止 

# 5. 手順1) Windowsネットワーク・アダプターに静的IPアドレスを追加
次のNetezzaマニュアルを参考にして静的IPアドレス`192.168.9.1`を追加します。

- https://www.ibm.com/docs/en/netezza?topic=started-installing-npsvb
    - 1.Setting up a new static IP on the host machine

上のマニュアルに沿って実施例を説明します。まずネットワーク・アダプターの名前を確認するために、Windows コマンドプロンプトから`ipconfig`コマンドを実行します。次の例では`vEthernet (Intel Ethernet)`がその名前です。
```
Microsoft Windows [Version 10.0.19045.3208]
(c) Microsoft Corporation. All rights reserved.

C:\WINDOWS\system32>ipconfig
Windows IP 構成
イーサネット アダプター vEthernet (Intel Dual Band Wireless):
   メディアの状態. . . . . . . . . . . .: メディアは接続されていません
   接続固有の DNS サフィックス . . . . .:

イーサネット アダプター vEthernet (Intel Ethernet):
   接続固有の DNS サフィックス . . . . .:
   IPv6 アドレス . . . . . . . . . . . .: 240d:1a:b55:2900:aa24:7bfe:46fa:3803
   リンクローカル IPv6 アドレス. . . . .: fe80::e835:ff9f:d9e:c7%16
   IPv4 アドレス . . . . . . . . . . . .: 192.168.0.72
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: fe80::260:6bff:fe49:11e5%16
                                          192.168.0.1
```
ネットワーク・アダプター`vEthernet (Intel Ethernet)`を対象として`netsh`コマンドを実行し、静的IPアドレス`192.168.9.1`を追加します。ネットワーク・アダプターの名前は環境によって異なるため、ご自身で確認したものを使ってください。
```
C:\WINDOWS\system32>netsh interface ipv4 set interface interface="vEthernet (Intel Ethernet)" dhcpstaticipcoexistence=enabled
OK

C:\WINDOWS\system32>netsh interface ipv4 add address "vEthernet (Intel Ethernet)" 192.168.9.1 255.255.255.0
```
アダプターにIPアドレス`192.168.9.1`が追加されていることを確認します。
```
C:\Users\xxxxxxxx>ipconfig
イーサネット アダプター vEthernet (Intel Ethernet):

   接続固有の DNS サフィックス . . . . .:
   IPv6 アドレス . . . . . . . . . . . .: 240d:1a:b55:2900:aa24:7bfe:46fa:3803
   リンクローカル IPv6 アドレス. . . . .: fe80::e835:ff9f:d9e:c7%16
   IPv4 アドレス . . . . . . . . . . . .: 192.168.0.72
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   IPv4 アドレス . . . . . . . . . . . .: 192.168.9.1
   サブネット マスク . . . . . . . . . .: 255.255.255.0
   デフォルト ゲートウェイ . . . . . . .: fe80::260:6bff:fe49:11e5%16
                                          192.168.0.1
```

# 5. 手順2) 仮想化ソフトウェアOracle VM VirtualBoxを導入
次のQiita記事をご覧になって導入してください。
- Windows環境に無料の仮想化ソフトウェアを導入 (Oracle VM VirtualBox)
https://qiita.com/yamasakk/items/31a4be0f42c8eada038a

# 5. 手順3) 仮想マシンNPSVBのパッケージを取得
次のNetezzaマニュアルを参考にして実行します。
- https://www.ibm.com/docs/en/netezza?topic=started-installing-npsvb 
    - 3.Importing the NPSVB machine ova file to VirtualBox

上のマニュアルに沿って実施例を説明します。まず次のリンクをクリックして仮想マシンNPSVBのダウンロードサイトに移動します。
- https://www-01.ibm.com/marketing/iwm/platform/mrs/assets

IBMidでログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/b57c1acf-cf43-5ab8-c7e3-73dfff329d26.png)
必要事項を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/ff50ab2d-febb-9da1-ecc2-23ecfb9d7b87.png)
ダウンロード可能なパッケージの一覧が表示されます。Netezza Performance Server Developer Editionの最新版をクリックし、次に画面下部の`Continue`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/36f303f9-1344-54f4-7210-8777ccd52a7e.png)
遷移した画面からNPSVBのパッケージをダウンロードします。ここにIBM Confidentialと赤い文字で表示されていますが、IBM社外の方も利用可能です（2023年5月30日に確認済み）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/7a32c95a-4e55-9d1f-48d5-4d3bb5a2f7d4.png)

# 5. 手順4) 仮想マシンNPSVBをインポート
次のNetezzaマニュアルを参考にして実行します。
- https://www.ibm.com/docs/en/netezza?topic=started-installing-npsvb 
  - 3.Importing the NPSVB machine ova file to VirtualBox
  - 4.Starting the NPSVB virtual machine in VirtualBox Manager

上のマニュアルに沿って実施例を説明します。VirutualBoxを起動し、`ツール`の`インポート`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/f6f3922e-c662-d85d-b681-b9e6ba9cd242.png)
ポップアップが表示されます。ここに上でダウンロードしたパッケージ名を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/3451fbaa-155a-2e73-a703-8add91415de2.png)
`MACアドレスのポリシー`に表示されるプルダウン・メニューから`すべてのネットワークアダプターでMACアドレスを生成`を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/60134b18-e333-7f30-5c61-f53026379040.png)
インポートした仮想マシン`NPSVB.11.x.x.x BETA`をクリックし、その`設定`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/38fc25f2-aa97-fd96-ca25-ce979f7bf5d4.png)
ポップアップが表示されます。その`ネットワーク`をクリックし、次に`アダプター1`タブをクリックします。続いて次の画面のように設定します。ここでアダプターの`名前`と`アダプタータイプ`は環境によって異なり、手順1で確認した結果に合わせてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/ac07cd22-ba84-bd66-c658-2c91e322355e.png)
`アダプター2`タブをクリックして次の画面のように設定し、ポップアップ下部の`OK`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/a6ca48a8-aff3-795d-db9b-3e3d1f9efa92.png)
設定用ポップアップが閉じたら`起動`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/ec5e5e86-3345-64d4-9afc-645aedd5cd62.png)
NPSVBのCentOSが起動を始めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/afcb2732-d1ff-197b-f489-335bc456a687.png)

# 5. 手順5) Netezzaを起動
次のNetezzaマニュアルを参考にして実行します。
- https://www.ibm.com/docs/en/netezza?topic=started-installing-npsvb 
    - 5.Starting the Netezza Performance Server server

上のマニュアルに沿って実施例を説明します。Windowsコマンドプロンプトを起動して仮想マシンにsshコマンドでログインします。（ユーザー`nz` パスワード`nz`）
```
Microsoft Windows [Version 10.0.19045.3208]
(c) Microsoft Corporation. All rights reserved.

C:\Users\xxxxxxxx>ssh nz@192.168.9.2
nz@192.168.9.2's password: nz
[nz@localhost ~]$
```

`nzstart`コマンドでNetezzaを起動し、その状況を`nzstate`コマンドで確認します。ここでpython3に関するエラーメッセージが表示されますが、これを修正せずとも本記事の範囲において問題はありませんでした。
```
nz@192.168.9.2's password: nz
[nz@localhost ~]$ nzstart
/usr/bin/env: python3: No such file or directory
(startupsvr) Info: NZ-00022: --- program 'startupsvr' (2652) starting on host 'localhost.localdomain' ... ---

[nz@localhost ~]$ nzstate
System state is 'Online'.
```

なお、Netezzaを停止するコマンドは`nzstop`です。

# 5. 手順6) Web管理インターフェースを起動
次のNetezzaマニュアルを参考にして実行します。
- https://www.ibm.com/docs/en/netezza?topic=started-installing-npsvb
    - 6.Starting the web console

上のマニュアルに沿って実施例を説明します。Windowsコマンドプロンプトを起動して仮想マシンにログインします。（ユーザー`root` パスワード`netezza`）
```
Microsoft Windows [Version 10.0.19045.3208]
(c) Microsoft Corporation. All rights reserved.

C:\Users\xxxxxxxx>ssh root@192.168.9.2
root@192.168.9.2's password: netezza
[root@localhost ~]#
```

ここでマニュアルに記載されていない事を実行します。まずWeb管理インターフェースを起動するシェル`start-cyclops.sh`をrootのホームディレクトリにコピーします。この名前は任意で、下の実行例では`my-start-cyclops.sh`としました。次に`my-start-cyclops.sh`に記述されたパスを変更してホームディレクトリ上で動作するように修正します。（修正せずにそのまま実行するとエラー`No such file or directory`が起きて動作しません）
```
[root@localhost ~]# pwd
/root
[root@localhost ~]# cp /usr/local/bin/start-cyclops.sh my-start-cyclops.sh
[root@localhost ~]# cat my-start-cyclops.sh
#!/bin/bash
systemctl start docker
./cyclops_dockerrun/standalone-startup.sh influxdb:latest cyclops:4.0.2-20220104b14684-x86_64 > /tmp/cyclops_run.log 2>&1 &

[root@localhost ~]# sed -i 's/\.\/cyclops_dockerrun/\/root\/cyclops-dockerrun/' my-start-cyclops.sh
[root@localhost ~]# cat my-start-cyclops.sh
#!/bin/bash
systemctl start docker
/root/cyclops-dockerrun/standalone-startup.sh influxdb:latest cyclops:4.0.2-20220104b14684-x86_64 > /tmp/cyclops_run.log 2>&1 &
```
ここからマニュアルの記載に沿って実行します。修正したシェルスクリプトを実行してコンテナの状態が次のように`up`であることを確認します。なお、下に表示されているcyclopsコンテナはWeb管理インターフェースを提供します。influxdbコンテナはCPU使用率などの履歴を保持します。
```
[root@localhost ~]# ./my-start-cyclops.sh

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS              PORTS                                                                        NAMES
2565c8d64763        cyclops:4.0.2-20220104b14684-x86_64   "/scripts/start.sh"      5 seconds ago       Up 2 seconds        80/tcp, 3000/tcp, 0.0.0.0:3333->3333/tcp, 5480/tcp, 0.0.0.0:8443->8443/tcp   nervous_banach
1383cc775795        influxdb:latest                       "/entrypoint.sh infl…"   6 seconds ago       Up 4 seconds        0.0.0.0:8086->8086/tcp                                                       influxdb
```

# 5. 手順7) Web管理画面にアクセス
次のNetezzaマニュアルを参考にして実行します。
- https://www.ibm.com/docs/en/netezza?topic=started-installing-npsvb
    - 7.Adding web console access

上のマニュアルに沿って実施例を説明します。Webブラウザを起動して https://192.168.9.2:8443 にアクセスします。表示された画面の`Select an instance`をクリックしてそのプルダウン・メニューの`Add a new instance`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/31be66b3-71ce-4866-1d5c-985e452cd7d5.png)
次の画面のように入力して`Add instance`をクリックします。ここで`Instance name`は任意で下図と同じ名前を入力する必要はありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/3ba2dfcc-3ff9-cf78-5781-1e49902036a1.png)
次のようなWeb管理画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/7c5b3bae-69f8-3737-ca51-06d864368dba.png)

# 5. 手順8) 仮想マシンNPSVBを停止 
NPSVBの`ファイル`タブをクリックし、`閉じる`をクリックします。続いて表示されるポップアップにおいて`仮想マシンの状態を保存`をクリックし、`OK`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/3f292fe1-6e74-1da1-5d7d-ad121d963c3f.png)

# 6. エラー例) Web管理画面にアクセスできない (192.168.9.2 refused to connect)
上の手順8を実行せずに仮想マシンを止めたとき、このエラーに遭遇しました。対処方法はNetezzaの起動およびコンテナ(cyclopsとfluxdb)の削除と起動です。

まずNetezzaにユーザー`nz`でログインします。Netezzaが`Online`かどうかを確認し、`Stopped`であれば起動します。
```
C:\Users\xxxxxxxx>ssh nz@192.168.9.2
nz@192.168.9.2's password: nz
[nz@localhost ~]$ nzstate
System state is 'Stopped'.

[nz@localhost ~]$ nzstart
/usr/bin/env: python3: No such file or directory
(startupsvr) Info: NZ-00022: --- program 'startupsvr' (3135) starting on host 'localhost.localdomain' ... ---

[nz@localhost ~]$ nzstate
System state is 'Online'.
```
Netezzaにユーザー`root`でログインします。手順6で修正した`/root/my-start-cyclops.sh`を実行します。
```
C:\Users\xxxxxxxx>ssh root@192.168.9.2
root@192.168.9.2's password: netezza
[root@localhost ~]# /root/my-start-cyclops.sh
```
止まっているコンテナ(cyclopsとinfluxdb)を確認して、削除します。
```
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS                     PORTS                                                                        NAMES
0a384f30e4df        cyclops:4.0.2-20220104b14684-x86_64   "/scripts/start.sh"      8 seconds ago       Created                    80/tcp, 3000/tcp, 0.0.0.0:3333->3333/tcp, 5480/tcp, 0.0.0.0:8443->8443/tcp   upbeat_chatterjee
dbe410124a72        influxdb:latest                       "/entrypoint.sh infl…"   38 minutes ago      Exited (0) 9 minutes ago                                                                                influxdb

[root@localhost ~]# docker rm 0a384f30e4df dbe410124a72
0a384f30e4df
dbe410124a72
```
再度`/root/my-start-cyclops.sh`を実行し、コンテナ(cyclopsとinfluxdb)が実行中であることを確認します。
```
[root@localhost ~]# /root/my-start-cyclops.sh

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS              PORTS                                                                        NAMES
a851b547db6e        cyclops:4.0.2-20220104b14684-x86_64   "/scripts/start.sh"      4 minutes ago       Up 4 minutes        80/tcp, 3000/tcp, 0.0.0.0:3333->3333/tcp, 5480/tcp, 0.0.0.0:8443->8443/tcp   nervous_swanson
95b4a62acf9d        influxdb:latest                       "/entrypoint.sh infl…"   4 minutes ago       Up 4 minutes        0.0.0.0:8086->8086/tcp                                                       influxdb
```
Web管理画面 https://192.168.9.2:8443/ にアクセスできることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700959/c5633557-6c6a-ad1c-638b-42ec48728fe6.png)

# 7. 参考資料
- Oracle VM VirtualBox User Manual
    https://www.virtualbox.org/manual/UserManual.html
- Netezzaマニュアル
    - Installing NPSVB
        https://www.ibm.com/docs/en/netezza?topic=started-installing-npsvb
    - The nzsql command
        https://www.ibm.com/docs/en/netezza?topic=commands-nzsql-command
    - Summary of command-line commands
        https://www.ibm.com/docs/en/netezza?topic=c-summary-command-line-commands
- Qiita記事
    - Windows環境に無料の仮想化ソフトウェアを導入 (Oracle VM VirtualBox)
        https://qiita.com/yamasakk/items/31a4be0f42c8eada038a
    - 高速データウェアハウス Netezza にクライアント接続する（Windows編）
        https://qiita.com/yamasakk/items/5893de8ad9b2d058f615

# 8. 類似テーマを扱ったQiita記事
- PC上でメモリ5GBで動く! Netezza Software Emulatorを使ってみた
    https://qiita.com/ishida330/items/8a23ae32b34b9aa461a0
- macOS に Netezza Software Emulator をインストール
    https://qiita.com/sonots/items/08cbc2b55f19404af2cc