• R/O
  • SSH
  • HTTPS

okuyama: 提交


Commit MetaInfo

修訂931 (tree)
時間2012-03-01 22:03:15
作者okuyamaoo

Log Message

(empty log message)

Change Summary

差異

--- trunk/ReadMe.txt (revision 930)
+++ trunk/ReadMe.txt (revision 931)
@@ -23,7 +23,7 @@
2323 ========================================================================================================
2424 [New - 新機能追加、不具合対応]
2525 [[リリース Ver 0.9.2 - (2012/02/XX)]]
26-・メモリオブジェクトのバックアップ機能を追加
26+■メモリオブジェクトのバックアップ機能を追加
2727 メモリオブジェクトのバックアップ機能により、今までDataNode復帰時に操作記録ログから復旧していたのに対して、
2828 高速に停止前の状態に復元されるようになった。
2929
@@ -57,41 +57,56 @@
5757 場合などは、操作記録ログに残されているデータのみが復元される。
5858
5959
60-・完全ファイルモード時にDataNodeを停止後、再起動した際に操作記録ログがなくても停止直前の状態に復元されるように
61- 起動時の挙動を変更。
62- 従来のバージョンでは完全ファイルモード(Key=ディスク、Value=ディスク)で合っても再起動時は操作記録ログから
63- 全てのデータを復元するしかデータを前回停止前の状態に戻す方法はなかった。そのため、大量のデータを保存している
64- 場合は起動時に大量の操作記録ログを読み出す必要があり非常に時間がかかってしまう場合があった。
65- そこで本機能はDataNode停止時のKey用、Value用のディスク上のファイル群がディスク上に残っていれば、再起動時に
66- そのファイル群を再度利用するように変更し、起動時間の短縮をおこなった。
67- なお、Key用、Value用のディスク上のファイルが損傷している場合は可能な範囲で修復され、そもそもディスク上に
68- データがが残されていない場合は従来取り、操作記録ログから復元するプロセスとなる。
60+■完全ファイルモード時にDataNodeを停止後、再起動した際に操作記録ログがなくても
61+ 停止直前の状態に復元されるように起動時の挙動を変更。
62+
63+ 従来のバージョンでは完全ファイルモード(Key=ディスク、Value=ディスク)で合っても
64+ 再起動時は操作記録ログから全てのデータを復元するしかデータを前回停止前の状態にす
65+ 方法はなかった。そのため、大量のデータを保存している場合は起動時に大量の操作記録ログを
66+ 読み出す必要があり非常に時間がかかってしまう場合があった。
67+
68+ そこで本機能はDataNode停止時のKey用、Value用のディスク上のファイル群がディスク上に
69+ 残っていれば、再起動時にそのファイル群を再度利用するように変更し、起動時間の短縮をおこなった。
70+ なお、Key用、Value用のディスク上のファイルが損傷している場合は可能な範囲で修復され、
71+ そもそもディスク上にデータがが残されていない場合は従来取り、操作記録ログから復元するプロセスとなる。
72+
6973 ※本機能により、完全ファイルモード時はローテーション済みの操作記録ログ(1.work.key1など最後に数値のついたファイル)を
7074 残す必要はなくなるが、定期的にバックアップをUtilClientによって取得することで保全性を高めることが出来る。
7175 利用方法は特に意識する必要なく、本機能は有効となる。
7276
7377
74-・ディスクキャッシュ機能を追加
78+
79+■ディスクキャッシュ機能を追加
7580 本機能はValueをディスクに保存している場合のみ有効となる。
76- okuyamaはValueの場所をディスクにした場合は、一定までのサイズのValueを全て1つのファイルで集中的に管理している。
81+
82+ okuyamaはValueの場所をディスクにした場合は、一定までのサイズのValueを全て1つの
83+ ファイルで集中的に管理している。
84+
7785 ここに保存している1Valueのデータはブロックデータと呼ばれる。
78- getなどの取得処理の場合は、このファイル上をシークしブロックデータを取り出している。SSDのようなシーク処理を
79- 必要としないディスクの場合は高速に稼働するが、HDDなどの場合はアクセスが集中しかつ、ValueのファイルがOSの
80- バッファサイズを超えるようになると、アクセス速度が低速化する。
81- そこで本機能では、一度読みだしたブロックデータをHDDよりもランダムリードが高速なデバイスに一時的にキャッシュ
82- することでget処理を高速化するのが、本機能である。
83- 一時的にキャッシュされるValueはレコード数で指定可能である。Defaultは1DataNode当たり、10000件となる。
84- キャッシュに利用するディスクサイズの算出は、ブロックデータのサイズを利用して計算することが可能であり。
85- そのブロックサイズはDefaultでは12888byteとなる。そのため、利用されるディスクサイズは、以下の計算式で求める
86- 12888byte × 10000件 = 128880000byte
86+ getなどの取得処理の場合は、このファイル上をシークしブロックデータを取り出している。
87+ SSDのようなシーク処理を必要としないディスクの場合は高速に稼働するが、HDDなどの場合は
88+ アクセスが集中しかつ、ValueのファイルがOSのバッファサイズを超えるようになると、
89+ アクセス速度が低速化する。
90+
91+ そこで本機能では、一度読みだしたブロックデータをHDDよりもランダムリードが高速な
92+ デバイスに一時的にキャッシュすることでget処理を高速化するのが、本機能である。
93+
94+ 一時的にキャッシュされるValueはレコード数で指定可能である。Defaultは1DataNode当たり、
95+ 10000件となる。キャッシュに利用するディスクサイズの算出は、ブロックデータのサイズを
96+ 利用して計算することが可能であり。そのブロックサイズはDefaultでは12888byteとなる。
97+ そのため、利用されるディスクサイズは、以下の計算式で求める
98+ --------------------------------------------------------------------
99+ [12888byte × 10000件 = 128880000byte]
100+ --------------------------------------------------------------------
87101 このブロックサイズはDataNodeの起動引数である「-s]を利用して「-s 8192」のように変更が可能である。
88102
89103 キャッシュ用の有効化及び、キャシュファイルの作成場所指定は、DataNode.propertiesの「KeyManagerJob*.cacheFilePath=」
90104 要素を指定し、ファイルパスを記述することで有効化される。利用しない場合はこの要素そのものを消すか、ファイル指定を
91105 消すことで無効かされる。
106+ --------------------------------------------------------------------
92107 [DataNode.propertiesでの設定例]
93108 例) "KeyManagerJob1.cacheFilePath=/usbdisk/cachedata/cache1.data"
94-
109+ --------------------------------------------------------------------
95110 キャッシュされるValueの件数はDataNodeの起動引数である「-mdcs」を利用して「-mdcs 50000」のように
96111 キャッシュしたい件数を指定して変更可能である。デフォルトは前述の通り、10000件
97112
@@ -100,7 +115,8 @@
100115 自動的に再認識され、利用される。その際DataNodeの停止は伴わない。
101116
102117
103-・JavaのOkuyamaClientにObjectの新規登録を保証するsetNewObjectValueメソッドを追加
118+
119+■JavaのOkuyamaClientにObjectの新規登録を保証するsetNewObjectValueメソッドを追加
104120 setNewValueはValueにString型しか対応していなかったが、ValueをObjectとするバージョンを追加。
105121 利用方法はsetNewValueと同様
106122 利用例)
@@ -123,17 +139,58 @@
123139 ------------------------------------------------------
124140
125141
142+■起動パラメータを以下の通り追加
143+ DataNode用の起動パラメータ
144+ -crcm 記述:true/false
145+ 説明:MasterNodeとDataNode間の処理に失敗した場合に強制的に1度だけ再処理を行うようにするかの設定
146+ Networkが不安定な場合や遅い場合はtrueにするとよいことがある
147+ true/再接続する, false/再接続は自動
148+ デフィルトはfalse
149+ 設定例: -crcm true
126150
127-・有効期限を30日以上に設定出来ないバグを修正
128-・ノード追加に伴うデータ移行中にTagデータを新規登録すると、正しく取得出来ないバグを修正
129-・DataNodeのリカバリー処理、ノード追加時のデータ再配置処理の堅牢性を向上
130-・いくつかの性能向上
151+ -dcmuc 記述:整数(利用回数)
152+ 説明:MasterNodeとDataNode間のSockeの最大再利用回数 (整数) 少ない値にすると接続コストがかかる
153+ デフィルトは50000
154+ 設定例: -dcmuc 10000
131155
156+ -smbsmf 記述:整数(格納数)
157+ 説明:SerializeMapのBucketサイズのJVMへのメモリ割当1MB単位への格納係数(整数)
158+ デフィルトは400(レスポンスを向上したい場合は小さな値にすると良いが、メモリ当たりの格納数は減る)
159+ 設定例: -smbsmf 200
160+
161+ -red 記述:true/false
162+ 説明:完全ファイルモード時に既に存在するデータを再利用する設定
163+ デフィルトはtrue。
164+ falseにすることで停止前のデータを全て削除してトランザクションログからの起動を選択する
165+ 設定例: -red false
166+
167+ -wfsrf 記述:true/false
168+ 説明:DataNode起動時に操作記録ログ(トランザクションログ)を読み込む設定
169+ trueの場合は読み込む(デフォルト)
170+ falseの場合は読みこまない.この場合はデータは常に0件からの起動になる
171+ 設定例: -wfsrf false
172+
173+
174+■PHP版のOkuyamaClient.class.phpで未実装だった以下のメソッドを実装。挙動はJava版と同様である
175+ 1.getTagValues
176+ 2.getMultiTagValues
177+ 3.getMultiTagKeys
178+
179+ ※以下のメソッドは未実装
180+ getTagKeysResult
181+ getMultiTagKeysResult
182+
183+
184+■有効期限を30日以上に設定出来ないバグを修正
185+■ノード追加に伴うデータ移行中にTagデータを新規登録すると、正しく取得出来ないバグを修正
186+■DataNodeのリカバリー処理、ノード追加時のデータ再配置処理の堅牢性を向上
187+■いくつかの性能向上
188+
132189 ========================================================================================================
133190 [New - 新機能追加、不具合対応]
134191 [[リリース Ver 0.9.1 - (2011/12/19)]]
135192
136-・PHP版のOkuyamaClientの不具合対応
193+■PHP版のOkuyamaClientの不具合対応
137194 ・Key、Value、Tagの登録前サイズチェック周りの修正
138195 登録可能なKeyおよび、Tagのバイト長を320byteに固定
139196 PhpTestSock.phpにテストコードを追加
@@ -143,7 +200,7 @@
143200 isset関数に置き換え
144201
145202
146-・Java用のOkuyamaClientをプーリングするコネクションプールを追加
203+■Java用のOkuyamaClientをプーリングするコネクションプールを追加
147204 本機能を利用すると接続処理、接続済みOkuyamaClientのプール、クローズ処理の管理を行うことが出来る
148205 接続済みのコネクションを即利用可能なため、接続処理のコスト削減、接続処理の共通化を行うことが可能
149206 該当クラスは以下
@@ -174,7 +231,7 @@
174231 -------------------------------------------------------------------------------------------------------
175232
176233
177-・UtilClientにadddatanodeを追加
234+■UtilClientにadddatanodeを追加
178235 DataNodeを追加する際に従来はWebの管理画面からしか追加できなかったが、
179236 UtilClientから追加する機能を追加
180237 ※本機能によるokuyamaのサーバ側の変更は必要ありません。
@@ -188,16 +245,16 @@
188245 5)thirddatanode:7555 : 追加を依頼するDataNodeのアドレスとPort番号(MasterNode.propertiesのThirdKeyMapNodesInfoの設定に該当。設定を行っていない場合は省略)
189246
190247
191-・DataNodeの完全ディスクモードの性能を向上
248+■DataNodeの完全ディスクモードの性能を向上
192249 ファイルへの書き出しにメモリでのバッファリング領域を設けそちらへの書き出しが完了した時点でユーザ処理を
193250 完了とすることで応答速度向上。実際の書き出し処理は別スレッドで順次行われる。
194251
195252
196-・MasterNodeのIsolation機能(パーティション機能)利用時にgetTagKeysResult、getMultiTagKeysResultで発生する
253+■MasterNodeのIsolation機能(パーティション機能)利用時にgetTagKeysResult、getMultiTagKeysResultで発生する
197254 不具合に対応
198255
199256
200-・起動パラメータを以下の通り追加
257+■起動パラメータを以下の通り追加
201258 DataNode用の起動パラメータ
202259 -vidf 記述:true/false
203260 説明:有効期限切れのデータのクリーニングを行うかどうかの設定 true=行う false=行わない
@@ -242,7 +299,7 @@
242299 設定例: -dwmqs 15000
243300
244301
245-・DataNode.propertiesのDataSaveTransactionFileEveryCommit=false時の不具合を対応
302+■DataNode.propertiesのDataSaveTransactionFileEveryCommit=false時の不具合を対応
246303
247304
248305 ========================================================================================================
Show on old repository browser