HBase には2つのプロセスが存在する
-
Master
jpsコマンドで、「HMaster」というプロセスが確認出来る -
RegionServer
jpsコマンドで、「HRegionServer」というプロセスが確認出来る
各プロセスの役割
[Master]
-
Table の管理
-
RegionServer の調整
(Regionの割り当て・ロードバランサ、RegionServer のフェイルオーバー)
クライアントとのデータのやり取りは行わないので、Master がデータやり取りにおけるボトルネックにはならない。
実際にデータやり取り時、Master プロセスに割り当てられている Javaヒープ領域使用量に変化はほとんど見られない。
[RegionServer]
-
クライアントとのデータやり取り
-
割り当てられた Region の管理(Flush など)
クラスタ構成の場合、クライアントとのデータのやり取りは 各RegionServer で分散される。
一度に扱うデータサイズが大きい場合、ヒープサイズの設定に依っては、OutOfMemoryError が発生する可能性も考慮する。
障害時の動作
[Master]
-
ホットスタンバイを立てられるため、Master ダウンしてもサービス継続が可能
-
データのやり取りは Master を経由していないため、Master がダウンしてもクライアントとのデータのやり取りは継続可能
-
Master のフェイルオーバが完了するまでの間、RegionServer の調整は出来ない
[RegionServer]
- Region の再割り当てを行い、自動的にフェイルオーバする
HBase は高可用性を実現したデータベースとして、「落ちない」とされている。
全ての RegionServer が同時にダウンしてしまうと、さすがにサービス継続することは出来なくなる。