分散KVS「okuyama」のインストール
前回の記事では「okuyama」の概要と機能的特徴を紹介しました。ご紹介できていない機能もまだいくつもあるのですが、説明ばかりでもつまらないと思いますので、今回は実際に「okuyama」を動かしてその機能を体感していただこうと思います。
1.「okuyama」のインストールから起動まで
(1)事前準備
「okuyama」はJavaでできていますので、とにもかくにもJavaが必要です。
Javaは一度コードを書けば実行環境の差はJavaバーチャルマシンが埋めてくれる"Write once, run anywhere"の思想でできているため、基本的に環境は選びません。
実際に筆者が開発に利用している環境はCentOS、Red Hat、Windows7、WindowsXp、Mac OS Xなどです。本連載ではCentOS5.5(32bit)をベースに進めていきます。筆者は今回の環境をWindows7上のVirtualBox上に構築しました。
まずは用意した環境にJavaと、Java用のコンパイルライブラリであるAntを導入してください。Javaはバージョン1.6以上を導入してください。"java -version"および、"ant -version"コマンドが正しいバージョン情報を返してくればインストール成功です。
(2)「okuyama」の起動準備
続いて「okuyama」の起動準備です。
「okuyama」は、こちらのページで公開しています。2011年2月17日現在の最新バージョンである0.8.6をダウンロードしてください。ダウンロードしたokuyama-0.8.6.zipを任意のディレクトリに展開してください。
筆者は「okuyama」というユーザーを作成し、ユーザーhomeディレクトリに展開しました。ディレクトリ構成は以下のようになります。
/home/okuyama/okuyama-0.8.6
これで準備は完了です。
コンパイル済みの実行ファイルを同梱(どうこん)していますので、基本的にコンパイルは不要です。
以降、起動の手順でclassファイルのバージョンエラーが出た場合は、展開ディレクトリで"ant compile"を実行してください。
(3)「okuyama」の起動
では「okuyama」を起動してみましょう。テスト起動用のantの実行タスクを用意していますので以下の手順で起動できます。
まずターミナル等で「okuyama」の展開ディレクトリに移動します。
#cd /home/okuyama/okuyama-0.8.6
その後以下のコマンドを実行してください。
#ant serverrun
serverrun: datanode_small: [java] okuyama DataNode Initialization Start ... [java] okuyama DataNode Initialization Start ... [java] okuyama DataNode Initialization End ... [java] okuyama DataNode start [java] listening on 0.0.0.0/0.0.0.0:5554 [java] okuyama DataNode Initialization End ... [java] okuyama DataNode start [java] listening on 0.0.0.0/0.0.0.0:5553 masternode_small: [java] okuyama MasterNode Initialization Start ... [java] okuyama MasterNode Initialization End ... [java] okuyama MasterNode start [java] listening on 0.0.0.0/0.0.0.0:8888
上記の内容がコンソールに出力されれば「okuyama」の起動は完了です。
この出力内容から読み取れる通り、データノードが2ノード起動しており、それぞれポート番号は5553と5554で起動しています。そしてマスターノードが1ノード起動しており、待ち受けポート番号は8888です。
このコマンドで起動する「okuyama」の構成を図に表しました。
図2:serverrunにて起動した状態 |
冗長化などされていないそれぞれのノードがシングルノードでの構成です。
(4)「okuyama」にアクセスしてみる
実際にアクセスしてみましょう。
アクセスも起動と同様にantタスクからテスト実行が可能です。起動用に使用しているターミナルとは別のターミナルを起動し、同様に「okuyama」展開ディレクトリまで移動してください。そして以下のコマンドを実行してください。
#ant set -Dkey=key001 -Dvalue=value001
上記でkey001とvalue001というペアで値が登録されます。コマンド完了後、以下のコマンドを実行すると登録したvalue001が取得できます。
#ant get -Dkey=key001
なお、これ以外のテスト用antコマンドは同梱のReadMe.txtのの部分をご覧ください。
(5)「okuyama」を終了する
最後に「okuyama」を終了します。
「okuyama」を終了する場合は先ほどの実行しているターミナルをCrtl+Cなどで強制終了する方法と、shutdownコマンドを送信する方法があります。今回はshutdownコマンドで終了します。shutdownコマンドは「okuyama」の管理サーバーに接続して行います。これにはtelnetを利用します。
まずデータノード側から終了します。データノードの管理サーバーはポート番号15553で起動しています。
#telnet 127.0.0.1 15553
接続完了後以下のコマンドを入力し実行します。
Escape character is '^]'. shutdown
すると、以下のような表示が出力後、強制的に接続が切断されます。
Commond Success Shutdown ... Connection closed by foreign host.
この状態で先ほどのデータ取得用コマンドを実行してもExceptionの表記がターミナルに出力されます。これは、データノードが全て停止したため、マスターノードがエラーを返しています。
それでは続けてマスターノードを停止します。マスターノードの管理サーバーはポート番号18888で起動しています。
#telnet 127.0.0.1 18888
※以降データノードと同様
以上で「okuyama」は完全に停止しました。この状態から「okuyama」を再度起動してみます。
#ant serverrun
起動完了後、データ取得コマンドを実行してみてください。
#ant get -Dkey=key001
データが取得できていると思います。これは「okuyama」のデータノードがデータ永続化モードで起動しているためです。このような設定は全て起動時の設定ファイルにてパラメータを指定することで特性を決定しています。以降では起動時に利用している設定情報を見ていきましょう。