分散KVS「okuyama」のインストール

2011年2月17日(木)
岩瀬 高博

2.「okuyama」の設定を変更してみる

(1)「okuyama」の設定情報の確認と変更

「okuyama」はマスターノード、データノードの2種類で構成されます。 それぞれのノードには専用の設定ファイルが存在します。先ほどのテスト起動で使用してる設定ファイルは、展開ディレクトリのclassesディレクトリ配下のMasterNode_small.propertiesとDataNode_small.propertiesの2種類になります。それぞれ、マスターノード用、データノード用になります。

antのserverrunタスクが実際に行っていることは以下のコマンドと同様です。

#データノード起動

java -classpath ./classes:./lib/log4j-1.2.14.jar:./lib/
javamail-1.4.1.jar:./lib/commons-codec-1.4.jar -Xmx128m 
okuyama.base.JavaMain /Main.properties /DataNode_small
.properties

#マスターノード起動

java -classpath ./classes:./lib/log4j-1.2.14.jar:./lib/
javamail-1.4.1.jar:./lib/commons-codec-1.4.jar -Xmx128m 
okuyama.base.JavaMain /Main.properties /MasterNode_small
.properties

上記のように設定ファイルによってデータノードとして、またはマスターノードとしてのいずれかを決定して起動します。それぞれの設定ファイルの内容を見ていきましょう。

(2)マスターノードの設定情報の確認と変更

マスターノードの設定情報である、MasterNode_small.propertiesの各項目の説明は実際のファイルにそれぞれの項目単位で明記されていますので、そちらを参照してください。

ここではデータノードを設定する箇所にクローズアップして説明します。マスターノードが接続するデータノードの設定は以下の行に設定されています。

設定)
188行目:KeyMapNodesRule=2
191行目:KeyMapNodesInfo=localhost:5553,localhost:5554
202行目:SubKeyMapNodesInfo=
206行目:ThirdKeyMapNodesInfo=

上から、データノードの台数、3台構成中の先頭のデータノード群の設定、1つ目のレプリケーション先の設定、2つ目のレプリケーション先の設定となります。

現在のデータノードの構成はレプリケーション先が存在しませんので、これにレプリケーション先を追加してみましょう。以下のように変更しファイルを保存してください。

202行目:SubKeyMapNodesInfo=localhost:6553,localhost:6554

これにより、図3のような構成に変更できます。

図3:データノードにレプリケーション先を追加した構成

図3:データノードにレプリケーション先を追加した構成

(3)データノードの設定情報の確認と変更

データノードの設定情報であるDataNode_small.propertiesも、マスターノードと同様にそれぞれの項目は設定ファイルの説明を参照いただくとして、ここではデータのストレージ特性の設定を説明します。

ストレージ特性の設定は以下の箇所になります。

設定)
115(125)行目:KeyManagerJob1.memoryMode=false
116(126)行目:KeyManagerJob1.dataMemory=true
117(127)行目:KeyManagerJob1.keyMemory=true

※カッコ内はポート番号5554で起動しているデータノードの設定になります。

上から、データ非永続化設定、Valueのメモリ保持指定、Keyのメモリ保持指定となります。データ非永続化設定は"true"とすることでデータ操作ログが残らず、"false"によりデータの復元が可能となります。Valueのメモリ保持指定は"true"時はメモリで保持し、"false"時はファイルで保持します。Keyのメモリ保持指定もValueと同様になります。

この設定の場合は、データ操作履歴のみファイルに書き出し、後は全てメモリで保持している、(操作ログ+Key=メモリ+Value=メモリ)型になります。それではこの状態から、以下のような操作ログを残さない設定に変更してみましょう。

115(125)行目:KeyManagerJob1.memoryMode=true

(4) 変更結果を確認する

それでは先ほど変更した設定情報で再度「okuyama」を起動してみましょう。

#ant serverrun

起動完了後、データ登録、取得を行ってください。

#ant set -Dkey=key999 -Dvalue=value999
#ant get -Dkey=key999

先ほどと同じようにデータ取得ができると思います。
では「okuyama」の再起動後はどうでしょうか。先ほどの停止手順に従って、データノード、マスターノード両方を停止してください。その後、再度起動した後データ取得を行ってください。

#ant get -Dkey=key999

今回は先ほどと違って、データの取得ができません。これは設定情報の変更により、データの永続化特性が失われたためです。

では、マスターノード側の設定変更で行ったレプリケーションノードの追加はどうでしょうか。これを確認するためには、別途レプリケーションノードを起動する必要があります。以下のantタスクにより先ほど設定したレプリケーションノードが起動します。

別ターミナルにて以下を実行

#ant slavedatanode

起動の表記を確認後、再度データ登録を行ってください。

※起動確認後、30秒ほどしてから実行してください。

#ant set -Dkey=key999 -Dvalue=value999

その後、再度データノードに接続し、shutdownを実行してください。そして再度データの取得を実行すると今度はデータが取得できるはずです。これはレプリケーション先にデータが保存されているため、データノードのフェイルオーバーが機能したためです。

株式会社神戸デジタル・ラボ

2006年神戸デジタル・ラボに入社。企業内業務アプリケーション開発に従事。
2008年末から大規模ECサイトのアプリケーション、インフラ周りの運用に従事。
2009年末に分散Key-Value Store”okuyama”をオープンソースとして公開。
2010年から各都道府県で開催されるオープンソースカンファレンスへの出展やセミナー登壇、「NOSQL afternoon in Japan」や、「JavaCloud Meeting Kansai」での登壇といった”okuyama”の普及活動の傍ら、”okuyama”を使ったアプリケーション開発などに従事し、現在に至る。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています