その他のHBaseの特徴
その他のHBaseの特徴としては以下が挙げられます。
- Hadoop分散ファイルシステム上に構築されている
- スケールアウト戦略
- 高速な書き込み
- レンジスキャン&フィルタ
- 自動シャーディング
- 強い一貫性(インクリメント・CAS操作)
以下、簡単に説明します。
Hadoop分散ファイルシステム上に構築されている
HBaseはHadoop分散ファイルシステム(以下、HDFS)上に構築されています。HDFSに保存されたデータはレプリケーションされるので、HBaseのデータは安全に保持されます。
HBaseはHDFSクライアントを用いてレプリケーションなどを意識せず透過的にファイルアクセスを行います。
HDFSにはNameNodeとDataNodeというプロセスがいます。NameNodeがマスタになっており、HDFSはマスタ型のアーキテクチャです。
以前までは、NameNodeが単一障害点になってしまうという問題がありましたが、現在はHadoop HAというソリューションが開発され、NameNodeのホットスタンバイを立てることによって解決しています。
スケールアウト戦略
HBaseはコモディティなサーバをたくさん並べて動作させることを想定して開発されています。具体的には、HRegionServerの台数を増やすことによって、性能がスケールしていきます。
また、HRegionServerの台数が多くなると障害の起きる確率も高くなりますが、障害時にはRegionの再割当てを行い自動的にフェイルオーバーされます。
高速な書き込み
HBaseでは書き込み時に以下のような処理を行います。
- WAL(Write Ahead Log)をHDFSに書き込む
- メモリ内にデータを追加する
1のWALの書き込みは、ディスクへのシーケンシャルな書き込みになるので高速です。また、2に関してもメモリ内の処理になるので高速です。従って、HBaseでは書き込み処理を高速に行うことができるのです。
レンジスキャン&フィルタ
前述したようにHBaseはRowKeyでソートされた状態でデータが保存されているので、RowKeyによるレンジスキャンが可能です。
また、フィルタを用いることで取得する必要のないRowをスキップできるため、スキャンの効率を大幅に高めることができます。
さらに、独自のフィルタを作成することも可能です。
自動シャーディング
HBaseはRegionという単位でデータが分割されていることはすでに書きましたが、Regionのサイズが大きくなった時に自動的に分割する機構や、HRegionServerへのRegionの割り当てを自動的に行う機構を持っています。
これらの機構を自動シャーディングと呼びます。自動シャーディングによって、負荷分散されていきます。
強い一貫性(インクリメント・CAS操作)
前述しましたが、HBaseは強い一貫性を持っているので古いデータが見えることはありません。また、Rowに関する操作はアトミックに行われます。つまり、Rowに関する操作についてはコミットやロールバックに近いことが可能になります。
また、HBaseでは値のインクリメントやCAS操作が可能であり、これらを用いることでクライアントの処理をシンプルにすることができます。