HBase本(馬本)刊行記念 著者Lars George氏 来日特別セミナーまとめ
クラスタのサイジング。過去1,2年多くのお客様と話をした上で自分で学んできた注意点に関する話 #hbaselars
2012-10-12 19:43:29HBase は HDFS 上で稼働するが、読み込みと書き出しはコードパスとしては別々で実装として重なる部分はないが、実際にはリソースを奪い合う。RPCのスレッドプールなどがいい例 #hbaselars
2012-10-12 19:44:47Java プロセス内におけるメモリの使用について。リードとライトについて別に割り当てる。40%が書き込み、20%が読み込み、残り40%がJava 自体が使う(全部デフォルト値) #hbaselars
2012-10-12 19:46:00まず読み込みについて。リージョンサーバの配置とリクエストの配分に気をつける必要がある。一つはプリフェッチのオプションを指定すること。クライアント側で指定しておけば、2回目のアクセスからはさらに高速にルックアップ・アクセスできるようになる #hbaselars
2012-10-12 19:48:25クライアントが一旦どのリージョンにアクセスするかということがわかれば、ブルームフィルタを使い、またブロックキャッシュにアクセスしてもしヒットすれば高速に読み込むことができる #hbaselars
2012-10-12 19:49:38ブロックキャッシュ。ヒット率や排除率を確認することができるメトリクスがある。ブロックキャッシュのサイズはデフォルトで全ヒープの20%。調整は可能だが、完全に無効化するのはよくない #hbaselars
2012-10-12 19:50:48書き込みについて。書き込みによってクラスタサイズを決定する。Log structured merge tree を採用していることが原因。これはBigtable よりも古い技術。 #hbaselars
2012-10-12 19:52:15変更(put, delete)はインメモリのストアと先行書き込みログ(WAL) の両方に格納される #hbaselars
2012-10-12 19:52:53メモリがいっぱいになる(デフォルトの40%を上回る)と、フラッシュアウトしファイルに書き込まれる。 #hbaselars
2012-10-12 19:53:45先行書き込みは必要なときにリプレイする。バックグラウンドではコンパクションが行われ、小さいファイルを大きいファイルにまとめる #hbaselars
2012-10-12 19:55:06書き込み性能ボトルネックの注意点。キーの分散。全クラスタにバランスよく分散させる必要がある #hbaselars
2012-10-12 19:56:08RPCのハンドラが十分あるかどうか。スレッドプールの設定がきちんとできているか。先行書き込みログは次のスライドで説明 #hbaselars
2012-10-12 19:57:06コンパクション。バックグラウンドで小さいファイルを大きいファイルにまとめるので、チューニングが間違っていると性能ボトルネックの原因になる #hbaselars
2012-10-12 19:57:55先行書き込みログ(WAL) は現場でのNo.1 ボトルネック。1リージョンサーバに1つ。この問題解決のために開発中の機能。WAL圧縮(0.94) #hbaselars
2012-10-12 19:59:54WAL続き。デフォルトHDFSブロックの95%にサイズ設定する。なるべく小さく、しかし小さすぎず。ログサイズを大きくするとメモリに負荷がかかるがtoo many hlogs を避けるためにある程度のサイズも必要 #hbaselars
2012-10-12 20:02:32WALさらに続き。リージョン間で同期されるので大きいセルがあるだけで全体のパフォーマンスが低下する #hbaselars
2012-10-12 20:04:04WAL続き。WALをオフにすることもできるが、耐障害性を失うのであまりオススメしない。この対策としてコプロセッサでpreWALRestoreを使うというアイデアもあるが、いずれにせよおすすめできない #hbaselars
2012-10-12 20:05:34フラッシュ。メムストアがいっぱいになるとデータをディスクに書き出す。コンパクションも行われる。さらにファイルサイズを見てリージョンの適切サイズを超えていればさらにリージョン分割が行われる #hbaselars
2012-10-12 20:07:18コンパクションストーム。フラッシュなど、今まで説明した全てをきちんと管理しないとこれが発生する。小さいファイルを大きいファイルにまとめるという操作が繰り返され、IO性能が落ちる #hbaselars
2012-10-12 20:08:39フラッシュサイズ。ストアごとや列ファミリで決まるわけではない。3つの列ファミリがあるときその総和でディスクにフラッシュされる。 #hbaselars
2012-10-12 20:10:58HBase の書き込みパフォーマンスサイジング表。一般的なHDFS書き込みパフォーマンスは35-50MB/s。しかし現実には15MB/sかそれ以下になる。 #hbaselars
2012-10-12 20:12:40サーバ上のリージョン数に基づいてメムストアのサイズを計算。保存するログの数もフラッシュの比率などから計算。Heap サイズ、リージョン数とサイズ、キーの分散の程度などから容量を計算 #hbaselars
2012-10-12 20:14:30まとめとチートシート。以下のことを確認。WALの性能は十分以上を確保。メムストアの許容範囲を超えてクライアントが利用しないこと。フラッシュ頻度が上がる。 #hbaselars
2012-10-12 20:16:02