図1に示すように、システム・アーキテクチャ
クライアント
-
-
1は、アクセスHBaseのインタフェースが含まれ、クライアントは、このようなregioneの位置情報として、HBaseのへのアクセスを高速化するキャッシュの一部を維持します。
-
飼育係
-
1任意の時間が唯一のマスタクラスタがあることを確実にするために
-
すべてのメモリは、リージョン2入口に対処します
-
3リアルタイム状態監視地域サーバ、情報は、マスタ地域サーバにリアルタイムで通知オンラインおよびオフラインになります
-
HBaseの4つの記憶テーブルを含むスキーマ、テーブルの各列ファミリー
-
マスターの責任
-
-
1つのリージョンサーバに割り当てられ域
-
2責任ある地域サーバロードバランシング
-
3は、領域サーバの障害との再割り当て、その地域ことがわかりました
-
4 HDFSファイルのガベージコレクション
-
5更新要求処理スキーマ
-
リージョンサーバーの役割
-
-
その領域に割り当てられた1つのリージョン・サーバーのメンテナンスマスター、これらの地域IO要求の処理
-
2リージョンサーバーが動作中に大きくなりすぎるから地域を分割する責任があります
-
見ることができ、マスター上のデータにアクセスするためのプロセスのHBaseクライアントは、マスター表とメタデータ情報領域の唯一のメンテナ(、データ読み取りおよびアクセスregioneサーバーを書き対処するとのZooKeeperサーバーの領域にアクセスする)に参加する必要はありませんが、負荷が低いです。
図2に示すように、全体的な構造(物理ストレージ)
-
-
1つの表のすべての行は、行キー辞書順に配置されています。
-
2表の行方向はHRegion複数に分割されています。
-
時間がしきい値に増加し、そしてサイズで割ったような意志HRegion二つの新しいブランチされたときに3地域(10Gでのデフォルト)、唯一の各テーブルの領域がテーブルに連続したデータを、開始したが、領域は、成長していますHregion。成長中の場合は、テーブルの行、より多くのHregionがあるでしょう。
-
4 Hregion HBaseのは、分散ストレージと負荷分散の最小単位です。これは、最小単位が異なるHregion異なるHRegionサーバに分散させることができることを意味します。しかしHregionは、サーバーの複数に分割されていません。
-
最小の物理記憶装置の最小単位5 HRegionロードバランシングが、ではありません。
実際には、一つ以上のHRegion店で、それぞれが保存された列の家族を保存します。各StroreターンはStoreFile組成物にmemStore複数の0から成ります。
-
(1)ストア・ファイル・HFILE構造
StoreFileはHFILE形式にHDFSに保存されています。
(2)Memstore与storefile
店舗の複数の領域は、各店舗は、すべてのデータ・メモリはmemstore StoreFile位置ハードディスクを含むカラムファミリーストアを含みます。
最初memstoreにおけるデータ検索エンドユーザーは、見つけたとき、私はstorefileを見つける見つけることができません。
(3)[ハント(ウォルマート・ホイール)
各地域のサーバーではなく、地域ごとのよりも、[ハント]を維持します。(表とは別の)このような異なるログ領域が一緒に混合され、目的が同時に書き込みを複数のファイルに関して1つのファイルを追加し続けることで、ディスクのアクセス時間を短縮することができる、テーブルの書き込み性能を向上させることが可能です。
サーバーをオフライン地域であれば、サーバの分割領域にログオンする必要があり、その後、他の回復リージョン・サーバーに配布地域を回復するためです。[ハント]ファイルは、通常のHadoopシーケンスファイルです。
3、読み込みと書き込みプロセス
(1)処理を要求読み取ります
図1は、HRegionServerメタテーブルとテーブルデータ、アクセスするテーブルデータ、クライアントは、最初の訪問の飼育係行くその内部飼育係、このメタテーブルにHRegionServerを見つける保持メタテーブルから位置情報を取得し保持します。
アクセスするためにクライアントによって続く2は、メタテーブルに格納されたメタデータを単にテーブルは、それによってメタ読み出し、配置されているIP HRegionServerメタHRegionServerを取得し、次に得ます。
図3に示すように、データによってクライアントがMemstoreここHRegionServer Storefileをスキャンしてデータを照会し、その後、対応HRegionServerにアクセスするために、情報要素に格納されています。
4、クライアントに応答してデータを照会するために、最後のHRegionServer。
(2)書き込み要求処理
1、クライアントがメタテーブルを検索し、メタテーブルのメタデータを取得し、最初の訪問の飼育係です。書き込まれる電流を決定し、データがHRegion HRegionServerサーバに対応します。
2、書き込み要求、および要求とHRegionServerの受信に応答してHRegionServer開始し、サーバーへのクライアント。
図3に示すように、データは最初のデータ損失を防止し、Memstoreにデータを書き込むために、クライアント[ハント]に書き込まれます。
書き込みが成功した[ハントとMemstoreた場合4は、このデータが正常Memstoreが閾値に達した場合、データはStorefileでフラッシュするMemstoreれ、書き込まれます。より多くのStorefileとして、過剰Storefileは一つの大きなStorefileに合流し、コンパクトマージ操作をトリガーします。Storefileが成長すると、地域が成長され、しきい値に達した後、分割操作、2にリージョンをトリガします。
(3)詳細
ログ(WALログ)とメモリ(MemStore)を更新する場合、データが最初に書かれている1、データがMemStoreソートされMemStoreが一定のしきい値に蓄積されたとき、それは新しいMemStore、古いMemStoreを作成します。 StoreFileになるために、ディスクに別のスレッドによってフラッシュ、キューをフラッシュする追加。同時に、システムは、飼育係でのREDOポイントを記録し、このタイムアップ持続した前の変化を表します。
システムが予期しないときに2、それはチェックポイント後にデータを回復するためにログ(WALログ)を使用して、この時間を失っているデータメモリ(MemStore)をもたらすことができます。
3は、StoreFileは読み取り専用で、一旦作成した変更できなくなります。だから、実際には、それが常にHBaseの追加の操作を更新しています。StoreFileにストアが特定のしきい値に達すると、マージ(minor_compact、major_compact)を実行し、キーStoreFileの大きさが所定の閾値に達したときに、大きなStoreFileを形成するために一緒に変更とマージされ、そしてStoreFileは2 StoreFileに分け、分割されます。
テーブルは常に追加、コンパクトながら、店にStoreFileとMemStoreのすべてにアクセスする必要が更新されるため、StoreFileとMemStoreがソートされ、StoreFileとメモリをインデックス化しているので、図4に示すように、彼らは、行キーによってマージされます組み合わせプロセスは比較的高速です。
4、地域の管理
(1)領域割り当て
いつでも、領域は領域のみサーバに割り当てることができます。現在利用可能なリージョン・サーバーですマスタレコード。領域が割り当てられていない現在、どの領域のサーバーに割り当てられている地域、。新しい領域が割り当てられる場合には、時間領域Serverで使用可能なスペースがあり、この領域は、マスターサーバーがマウント要求、地域のサーバーに割り当てられた領域に送信し与えます。リージョン・サーバーが要求を取得するためにした後、彼らはこの地域にサービスを提供し始めます。
(2)領域サーバー上线
マスター飼育係は、地域のサーバのステータスを追跡するために使用します。
リージョン・サーバーが起動すると、最初の飼育係のサーバディレクトリでののznodeに代わって設立。マスターは、ファイルサーバディレクトリを追加または削除するには、表示されるサーバーのディレクトリ、上のメッセージを変更するために加入したように、マスタは、飼育係からのリアルタイム通知を受け取ることができます。そのため、オンラインサーバー域たら、マスターはすぐにメッセージを取得することができます。
(3)領域サーバーオフライン
リージョン・サーバーをオフラインには、それがセッションのZooKeeperを切断すると飼育係と、このサーバーに代わって、自動的にファイルの排他的ロックを解除されます。マスターは、マスターデータは、サーバーのディレクトリの下に、この地域のサーバーに代わってのznodeを削除され、決定し、他のサーバーにこの地域に地域を割り当てることができますまだ生き同志です。
(4)マスター機構
ライン上のマスタ
図1は、他のマスタを防止するための活性のZooKeeperからマスタに代わってのみ取得ロックは、マスタとなります。
図2に示すように、スキャンサーバZooKeeperの親ノードは、サーバは、現在利用可能な領域のリストを取得します。
図3に示すように、各領域サーバ通信、現在割り当てられている領域とリージョン・サーバーの対応関係。
算出したスキャン.META.regionコレクションは、現在領域に割り当てられていない4は、それらが割り当て領域のリストに配置されます。
マスターオフライン
マスター表によるとだけ維持するメタデータ領域、およびプロセス・テーブル・データIOに関与していない1、、マスターがオフラインのみ、テーブルを削除作成することはできません(凍結されているすべてのメタデータの改正につながる、テーブルスキーマを変更することはできません、領域をすることはできません組立ライン領域を扱うことができないオフロード・バランシングは、領域を結合することができない、唯一の例外は、関係する領域のみサーバ)、読み取りとも正常であることができるデータテーブルを書き込むための分割の領域は、正常であることができるです。だから、短時間での組立ラインオフマスターは全体のHBaseクラスタには影響を与えません。
5、HBaseの三つの重要なメカニズム
(1)フラッシュ機構
1、(hbase.regionserver.global.memstore.size)デフォルト; memstoreサイズのグローバル40%リージョンサーバーヒープサイズ操作のサイズがディスクにフラッシュトリガするよりも、
2、(hbase.hregion.memstore.flush.size)デフォルト:128M、memstoreキャッシュサイズの単一の領域、全体HRegionをフラッシュするよりも、
3、(hbase.regionserver.optionalcacheflushinterval)デフォルト:1時間、最長のメモリファイル自動リフレッシュが生き残ることができる前に、
(2)コンパクトな機構
小さなstoreFileファイルが保存されたデータのバージョン番号が3である、削除されたデータを含む古いデータを、クリーンアップ、大Storefileファイルにマージされます。
(3)分割機構
リージョンしきい値に達したとき、2、HFILEへの過度の地域は、10Gbのデフォルトの時間に到達するには、セグメント化されます。
5、コプロセッサ
HBase0.92バージョンに、例えば、それは3つのインターフェースオブザーバを提供します。
●RegionObserver:クライアントのデータ操作イベントフックを提供する:ように、GET、PUT、DELETE、スキャンと。
●WALObserver:WAL関連の操作は、フックを提供しています。
●MasterObserver:操作のDDL-フックタイプを提供します。作成など、データシートを変更、削除します。
図6に示すように、セカンダリインデックスのうちのHBase
HBaseのクエリは比較的弱いので、同様の選択名、給与を達成するために必要な場合には、給与など、基本的に不可能によって名前、給与の順序によって、そのようなユーザー・グループの複雑さの統計的なニーズから、(1)、MAX(給与)をカウントし、または私たちはHBaseのを使用する場合、通常は達成するためにセカンダリインデックスプログラムを用いて、より難しいです。
HBaseのは我々だけのrowKeyによって取得することができ、インデックスのrowKeyです。私たちは、家族内の問い合わせ相対列列列のHBaseのいくつかの組み合わせをすれば、我々は、マルチクエリ条件に2インデックススキームのHBaseを使用する必要があります。