LoginSignup
10
6

More than 5 years have passed since last update.

PC上でメモリ5GBで動く! Netezza Software Emulatorを使ってみた

Last updated at Posted at 2016-01-21

こんにちわ!石田です。

Netezza Software Emulatorとは?

IBMのDWH/アナリティクス用アプライアンスであるPDA(PureData for Analytics 旧称 Netezza )はハードウエア・アプライアンスということもあり、実際に触ったことがある方は少ないかも知れません。でも開発やスキルアップ用途にPCで簡単に動かせるNetezza Software Emulatorってのがあるんです。PC上の仮想環境で動くエミュレーターなので製品のような性能は期待できませんが、Windows/Mac/Linuxいずれでも動きますしメモリも5GBしか使いませんので開発用途やスキルアップには十分です。このエミュレーターの情報、英語では色々あるんですが日本語のものがあまり見当たらなかったので2016/1月時点の最新で「使ってみた」しました。ご興味と機会があれば皆様もぜひ触ってみてください。
NPS_No-0017.png

エミュレーター環境の見え方

左側の図は本来のアプライアンス製品のアーキテクチャーです。MPP層に多数のSPAが配置され、同時並列でスケーラブルに処理を行う「シェアド・ナッシング」型です。今回ご紹介するエミュレーターはこのSPAが1つだけ、のPDAマシンのように見えます。(エミュレータなのでFPGAは存在しませんが) アプリケーションやSQL的には通常製品と変わりはありません。
NPS_No-0021.png
ハード的には以下のように見えています。

[nz@netezza ~]$ nzhw show
Description HW ID Location   Role   State  Security
----------- ----- ---------- ------ ------ --------
Rack        1001  rack1      Active Ok     N/A
SPA         1002  spa1       Active Ok     N/A
SPU         1003  spa1.spu1  Active Online N/A
Disk        1004  spa1.disk1 Active Ok     Disabled
Disk        1005  spa1.disk2 Active Ok     Disabled
Disk        1006  spa1.disk3 Active Ok     Disabled

やってみた

前提環境

ここに環境の記載がありますが、
NPS_No-0006.png
要は以下の環境が用意できればOKです。(私は会社のノートPCで動かしてます)
- 64ビットマシン
- 最低4コア & IntelVT/AMD-Vがオン
- メモリ最低5GB
- ディスクは導入直後で10GB程度使用
- VMWare WorkstationかVMWare Player

大まかな手順・流れ

  1. VMイメージのダウンロード
  2. VMWare上でのNPS起動
  3. NPSへのログイン
  4. 簡単な操作
  • 超便利ツール Aginity Workbench

1. VMイメージのダウンロード

IBM Netezza Developer NetworkにIBMIDでログインします。(
NPS_No-0000.png

IBM Netezza Software Emulator for Developers V7.2.1 for Linux w/INZA 3.2.1」を選択してダウンロードします。 (アナリティクス用のINZAも含まれていますが導入イメージが含まれているだけですので、必要なら別途導入作業が必要です。当記事では利用しません。)

NPS_No-0001.png

ダウンロード直前はこんな画面。ダウンロードするovaファイルのサイズは4GBほどです。( Download Directorを選ぶと同時ダウンロードするので速いです)
NPS_No-0002.png

2.VMWare上での起動

ダウンロードしたovaファイルをVMWare workstationから開き、インポートします。
NPS_No-0003.png

利用許諾に同意
NPS_No-0004.png

終わるまで放置
NPS_No-0005.png

インポート完了時点ではディスクは8GB位でした。
NPS_No-0008.png

終わったらいよいよ起動ですが、その前に一点確認。VMWareの仮想マシンの設定で4コア以上、かつIntel VT or AMD-V supportが有効になっているか確認してください。(下記はVMWare workstation 10の例)
NPS_No-0007.png

メモリは5GBと設定されていますね。では起動します。
NPS_No-0009.png

RHEL6.4が起動します。
NPS_No-0010.png

3. NPSへのログイン

ログイン画面が出たらroot/netezzaでログインします。ログインするとNPSのIPアドレスが表示されます。(私の場合はVMWareのNAT設定/DHCPで自動的にIP取得してます) ちなみに事前に設定されているユーザーidとパスワードは以下の通り。

host ユーザー パスワード
OS用 root netezza
OS用 nz nz
db admin password

NPS_No-0018.png

外からアクセスしやすいようにマシン名とIPアドレスをクライアントPCのhostsに登録しておきましょう。PuTTYでも簡単にアクセスできました!
NPS_No-0016.png

以上でインストールは終わりです。簡単ですね!

4. 簡単な操作

以下、コマンドツール nzsqlを使った基礎の基礎の操作の簡単なご紹介です。利用するユーザーidは nz ですので suしてください。

[root@netezza ~]# su - nz

#############################
# current IP: 192.168.118.139
#############################

[nz@netezza ~]$

環境変数の確認

NZ_で始まる環境変数を確認します。NZ_DATABASEでデフォルトのDBを設定しますが、初期状態ではSYSTEMになっています。

[nz@netezza ~]$ set|grep NZ
NZ_DATABASE=system
NZ_DIR=/nz
NZ_HOST=127.0.0.1
NZ_INITTOPOLOGY_FILE=/nz/nse/initTopology.cfg
NZ_PASSWORD=password
NZ_USER=admin
[nz@netezza ~]$

nzsqlの起動

[nz@netezza ~]$ nzsql
Welcome to nzsql, the IBM Netezza SQL interactive terminal.

Type:  \h for help with SQL commands
       \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit

SYSTEM.ADMIN(ADMIN)=>

操作ヘルプ


SYSTEM.ADMIN(ADMIN)=> \?
 \a              toggle between unaligned and aligned mode
 \act            show current active sessions
 \c[onnect] [dbname [user] [password]]
                  connect to new database (currently 'SYSTEM')
 \C <title>      HTML table title
 \copy ...       perform SQL COPY with data stream to the client machine
 \d <table>      describe table (or view, index, sequence, synonym)
 \dO <table>     describe table or view in sorted order
 \d{t|v|i|s|e|x} list tables/views/indices/sequences/temp tables/external tables
 \d{m|y}         list materialized views/synonyms
 \dS{t|v|i|s}    list system tables/views/indexes/sequences
 \dM{t|v|i|s}    list system management tables/views/indexes/sequences
 \dp <name>      list user permissions
 \dpu <name>     list permissions granted to a user
 \dpg <name>     list permissions granted to a group
 \dgp <name>     list grant permissions for a user
 \dgpu <name>    list grant permissions granted to a user
 \dgpg <name>    list grant permissions granted to a group
 \d{u|U}         list users/User Groups
 \d{g|G|Gr}      list groups/Group Users/Resource Group Users
 \da[+] [name]   list aggregates, + for additional fields
 \dd [object]    list comment for object
 \df[+] [name]   list functions, + for additional fields
 \dl[+] [name]   list libraries, + for additional fields
 \do             list operators
 \dT             list data types
 \e [file]       edit the current query buffer or [file] with external editor (Not supported on Windows)
 \echo <text>    write text to stdout
 \f <sep>        change field separator
 \g [file]       send query to backend (and results in [file] or |pipe)
 \h [cmd]        help on syntax of sql commands, * for all commands
 \H              toggle HTML mode (currently off)
 \i <file>       read and execute queries from <file>
 \l              list all databases
 \o [file]       send all query results to [file], or |pipe
 \O [filename]   send query output with errors to filename (or |pipe)
 \p              show the content of the current query buffer
 \pset <opt>     set table output  <opt> = {format|border|expanded|fieldsep|
                  null|recordsep|tuples_only|title|tableattr|pager}
 \q              quit nzsql
 \qecho <text>   write text to query output stream (see \o)
 \r              reset (clear) the query buffer
 \s [file]       print history or save it in [file] (Not supported on Windows)
 \set <var> <value>  set internal variable
 \t              show only rows (currently off)
 \time           print time taken by queries
 \T <tags>       HTML table tags
 \unset <var>    unset (delete) internal variable
 \w <file>       write current query buffer to a <file>
 \x              toggle expanded output (currently off)
 \! [cmd]        shell escape or command (Not supported on Windows)
SYSTEM.ADMIN(ADMIN)=>

データベースのリスト

デフォルトでは SYSTEMとTESTの2つのDBが準備されており、SYSTEMに接続されています。

SYSTEM.ADMIN(ADMIN)=> \l
List of databases
 DATABASE | OWNER
----------+-------
 SYSTEM   | ADMIN
 TEST     | ADMIN
(2 rows)

SYSTEM.ADMIN(ADMIN)=>

特定のデータベースへの接続

SYSTEM.ADMIN(ADMIN)=> \c TEST
You are now connected to database TEST.
TEST.ADMIN(ADMIN)=>

データベース内のテーブルのリスト

TEST.ADMIN(ADMIN)=> \dt
       List of relations
 Schema | Name  | Type  | Owner
--------+-------+-------+-------
 ADMIN  | TEST1 | TABLE | ADMIN
(1 row)

TEST.ADMIN(ADMIN)=>

テーブルのSELECT

TEST.ADMIN(ADMIN)=> select * from test1;
 T1 | T5
----+----
(0 rows)

TEST.ADMIN(ADMIN)=>

データベースの作成

一応SYSTEMに繋ぎなおしてCREATE DATABASE 名前;だけです。簡単ですね!

TEST.ADMIN(ADMIN)=> \c system
You are now connected to database system.
SYSTEM.ADMIN(ADMIN)=> create database mydb;
CREATE DATABASE
SYSTEM.ADMIN(ADMIN)=> \l
List of databases
 DATABASE | OWNER
----------+-------
 MYDB     | ADMIN
 SYSTEM   | ADMIN
 TEST     | ADMIN
(3 rows)

SYSTEM.ADMIN(ADMIN)=>

テーブルの作成

SYSTEM.ADMIN(ADMIN)=> \c mydb
You are now connected to database mydb.
MYDB.ADMIN(ADMIN)=> create table tbl1( col1 char(04), col2 smallint );
CREATE TABLE
MYDB.ADMIN(ADMIN)=>

データのロード

ロードはnzsqlではなくnzloadコマンドで行います。

[nz@netezza ~]$ vi data.csv
[nz@netezza ~]$ cat data.csv
aaaa,1
bbbb,2
cccc,3
[nz@netezza ~]$ nzload -db mydb -t tbl1 -df data.csv -delim ','
Load session of table 'TBL1' completed successfully
[nz@netezza ~]$ nzsql -db mydb
Welcome to nzsql, the IBM Netezza SQL interactive terminal.

Type:  \h for help with SQL commands
       \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit

MYDB.ADMIN(ADMIN)=> select * from tbl1;
 COL1 | COL2
------+------
 aaaa |    1
 bbbb |    2
 cccc |    3
(3 rows)

MYDB.ADMIN(ADMIN)=>

NZSQLの終了

MYDB.ADMIN(ADMIN)-> \q
[nz@netezza ~]$

最後にNPS自体を遮断するとき

nzpush完了後に普通にOSをshutdownします。

[nz@netezza ~]$ nzpush -all power off
Powering off SPUs spu0101 ...Domain spu0101 destroyed

 done.
[nz@netezza ~]$ exit
logout
[root@netezza ~]# shutdown -h now
Broadcast message from root@netezza
        (/dev/pts/0) at 14:40 ...

The system is going down for halt NOW!
[root@netezza ~]#

(参考) 超便利ツール Aginity Workbench

前述のようにnzsqlからSQLやコマンドをシコシコいれてもいいのですが、開発はやっぱGUIが楽。。そんな方にAginity社が提供するスタンドアロンの無償ツール Aginity Workbench for IBM Netezzaをご紹介します。これ、一度使ってみるとわかりますが、かゆいところに手が届く神のようなツールです。最新版ではPDAの新機能であるFluid Queryにまで対応していて、驚きました。(IBMもNetezza用のEclipseプラグインを提供していますが、正直、Aginityを使ったら使う気になりませんね。。)Aginity Workbenchは他にもdashDB, RedShift,Greemplum,ParAccel,Hadoopなどビッグデータ向けDBMSのWorkbenchがあります。Aginityさん、グッジョブ!
ログインします。(OSではなくPDAのデータベースに接続するので admin/passwordで)
NPS_No-0019.png

SQLやデータを操作できるのはこの類のツールでは当然ですが、それ以外にもPDAに特化した開発機能や運用操作がてんこ盛りです。
NPS_No-0020.png

参考文献

IBM PureData-Netezza Developer Network (NDN) - Requirements for the PureData for Analytics Software Emulator version 7.2 or newer
12 easy steps to install IBM Netezza Software Emulator for Developers
NPS 7.2 Knowledge Center

10
6
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
10
6