HBaseのご紹介
1、リレーショナルデータベースと非リレーショナルデータベース
(1)リレーショナルデータベース
最も一般的なリレーショナルデータベーステーブルのデータ構成は、以下からなる2次元テーブルの間でデータ及びリンクの組織であります
利点:
1、保守が容易:テーブル構造を使用して、一貫した形式であります
2は、使いやすい:SQL共通言語を、それが複雑なクエリのために使用することができます
3、複雑な操作:SQLサポートは、テーブルおよび複数のテーブル間の非常に複雑なクエリのために使用することができます
短所:
1、読み取りおよび書き込みパフォーマンスが比較的悪く、特に効率的な大量のデータの読み出しと書き込み
従って図2に示すように、固定テーブル構造、より少ない柔軟性
図3は、高い需要を読み書き同時、従来のリレーショナルデータベース、ディスクIOは大きなボトルネックとなっています
(2)非リレーショナルデータベース
厳密に非リレーショナルデータベースではないデータベース、それは構造化データ格納方法の収集のためにする必要があり、文書またはキーと値のペアすることができ
利点:
図1に示すように、フレキシブルフォーマット:保存されたデータのフォーマットは、キー、値の形式等の文書、画像、フォームの形態、文書、画像、フォーム、等の形態で、フレキシブル、幅広いアプリケーションシナリオこと、及び基本的なリレーショナル・データベース・タイプをサポートすることができます。
2、スピード:NoSQLのランダム・アクセス・メモリまたはハードディスク担体として使用することができ、リレーショナルデータベースのみハードディスクを使用して
3、高いスケーラビリティ
4、低コスト:NoSQLの簡単なデータベースの展開、基本的にはオープンソースソフトウェア
短所:
1、サポートSQL、学習や高コストの使用を提供していません。
2、トランザクションなし
あまり印象から3、データ構造が比較的複雑で、複雑なクエリ
2、HBaseのプロフィール
Use Apache HBase™ when you need random, realtime read/write access to your Big Data. This project's goal is the hosting of very large tables -- billions of rows X millions of columns -- atop clusters of commodity hardware. Apache HBase is an open-source, distributed, versioned, non-relational database modeled after Google's Bigtable: A Distributed Storage System for Structured Data by Chang et al. Just as Bigtable leverages the distributed data storage provided by the Google File System, Apache HBase provides Bigtable-like capabilities on top of Hadoop and HDFS.
HBaseのは、Hadoopのデータベースを立って、読み書きする高信頼性、高性能、列指向、スケーラブルな分散型リアルタイムデータベースです。
HadoopのHDFSはファイルストレージシステム、その飼育係分散コラボレーションサービスとして使用する大量のデータのHadoopのMapReduceのHBaseの使用としての使用します。
非構造化および半構造化データのためのルーズプライマリ・データ・ストア(列メモリのNoSQLデータベース)。
注意:NoSQLのは、だけでなく、SQLの略で、非リレーショナルデータベースを参照。
3、HBaseのデータモデル
(1)のrowKey
一意の識別子は、(1)行の各データの行を決定します
(2)辞書順にソート
記憶装置(3)のrowKeyのみ64Kバイト
(2)カラムファミリー&予選
(1)表HBaseの列の各列は、グループに属する表モードで定義され、グループは予めカラム(スキーマ)の一部を与えられなければなりません。「テスト」、「コース」を作成します。
(2)列グループに接頭辞としてカラム名を、それぞれ「列グループ」のメンバーは、カラム(列)を複数持つことができます。もちろん:数学、もちろん:英語、新しい列(カラム)の家族は、その後必要に応じてすることができます、動的に参加します。
(3)アクセス制御、格納およびチューニングは、列グループレベルで行われます。
(4)同じ列グループデータ内のHBaseのは、同じディレクトリ内のいくつかで保存されたファイルが格納されています。
(3)タイムスタンプ、タイムスタンプ
(1)各HBaseのセル記憶部に一列にデータの最新バージョン、新しい順にデータのユニークな、異なるバージョンに基づいて、タイムスタンプの各バージョン間の違いを区別するために、同じデータの複数のバージョンを持っていますフロント。
タイプ(2)タイムスタンプは、64ビットの整数です。
(3)タイムスタンプが(自動的に書き込みデータ)のHBaseによって割り当てられてもよく、このタイムスタンプは、ミリ秒単位で現在のシステム時刻に正確です。
(4)タイムスタンプは、明示的にアプリケーションデータがバージョンの競合を避けるためにならば、あなたは、独自のユニークなタイムスタンプを生成する必要があり、顧客によって割り当てることができます。
(4)細胞
(1)交差判定の行および列の座標によって、
(2)細胞のバージョンがあります。
コンテンツ(3)細胞は、未解決のバイト配列です。
1、由{行キー、カラム(=
2、細胞型にデータ、バイト配列の形式で格納されている全ては存在しません。
4、HBaseのアーキテクチャ
役割の説明:
(1)クライアント
1は、HBaseのにアクセスして、HBaseのへのアクセスを高速化するキャッシュを維持するためのインタフェースが含まれています。
(2)飼育係
図1に示すように、任意の時間が唯一のアクティブ・マスター・クラスタがあることを確認します
図2に示すように、入口の全アドレス可能な記憶領域
3、オンラインリアルタイム監視領域サーバー及びオフライン情報をリアルタイムで、マスターに通知します
4、および表はHBaseのメタデータ・スキーマに格納されます。
(3)マスター
1、領域サーバに分布領域
地域サーバーの負荷分散を担当する2、
3、リージョン・サーバーの故障とは、その上に領域を再配布することを見出しました
図4に示すように、ユーザ管理テーブルは、操作を追加または削除するように変更されています
(4)リージョンサーバー
地域のためのIO要求を処理1、領域サーバメンテナンス領域と、
2、地域サーバが動作中に大きくなりすぎるから地域を分割する責任があります
リージョンサーバーの紹介
(1)領域
1、HBaseの水平方向のテーブルが領域(領域)の複数に自動的に分割し、各領域は、特定のデータテーブルを保存し、連続的であろう
2は、各テーブル領域の一方のみが成長しているテーブル、領域への連続的なデータで、始め、時間が閾値を増加させると、地域2つの新クラブは、地域(核分裂)を希望
図3に示すように、テーブルの行成長で、地域のより多くがあるでしょう。このような完全なテーブルは、複数のリージョンサーバーに保存されています。
(2)Memstore与storefile
図1に示すように、店舗の複数からなる領域、CF(列ファミリー)に対応する店舗
データが特定の閾値に達したときに2、ストアはmemstore、メモリディスクstorefileはmemstoreに位置しmemstoreを書き込むための書き込み動作を含む、hregionserverプロセスはflashcache書き込みstorefileを開始し、それぞれが単一のフォームstorefileを書きます
3、storefileファイルの数が一定のしきい値に成長する場合、システムは、(メジャー、マイナー)マージし、マージプロセスがマージバージョンとなり、大きなstorefileを形成するために、ジョブ(majar)を削除
図4に示すように、全てのサイズと数が領域がある閾値を超えたstorefile場合、現在の領域が適切なサーバに割り当てられHMASTERのリージョンサーバー、負荷分散によって2分割されます
5、クライアントが見つける最初memstoreで、データを取得し、blockcacheを見つけることができない、storefileを見つける見つけることができません
問題への注意:
1、HRegion HBaseのは、分散ストレージと負荷分散の最小単位です。これは、最小単位が異なるHRegion異なるHRegionサーバに分散させることができることを意味します。
2、一つ以上によってHRegionストアは、各ストレージ列ファミリを保存します。
3、順番に各々がmemStore複数のStoreFile組成物にStrore及び0から成ります。図:HFILEフォーマットにHDFSに格納さStoreFile。
5、HBaseの書き込み処理
(1)読み出し処理
1、飼育係のテーブルからメタ情報を取得リージョンサーバー、クライアントノード
図2に示すように、クライアントアクセスリージョンサーバーノードメタテーブルは、情報領域ここリージョンサーバーを得るために、配置されています
、対応する領域と店舗を見つける特定の領域にアクセスするための3、リージョンサーバークライアント
図4に示すように、第一memstoreからデータを読み出し、これを直接読み出し、リターンデータであれば、そうでない場合、blockcacheにデータを読み出します
5は、blockcacheがデータを読み取る場合、データが読み込まれていない場合、そのデータを見つけ、storefileファイルを横断し、直接クライアントに返されます
データはstorefileから読まれていない場合は、読み出しデータは、データが最初に(便利一度読んで)blockcacheにキャッシュされる必要があるし、クライアントにデータを返す場合6は、返されたクライアントは空です終わり。
7は、メモリ空間blockcacheで、キャッシュされたデータは、フル後にLRUポリシーを使用される多くの場合、古いデータが削除されます。
(2)プロセスを書きます
1、飼育係のテーブルからメタ情報を取得リージョンサーバー、クライアントノード
図2に示すように、クライアントアクセスリージョンサーバーノードメタテーブルは、情報領域ここリージョンサーバーを得るために、配置されています
、対応する領域と店舗を見つける特定の領域にアクセスするための3、リージョンサーバークライアント
4も、バックグラウンドでデータを書き込む場合があり、メモリに書き込まれたHLOGを優先した後(データmemstoreを簡単に[ハント]に従って失われたデータを回復することができます書き込みデータが最初の[ハント]データを書きたいと思うとき、データを書き込むようになりました)ハントデータも、データ損失が発生し、失敗した書くことができれば、定期的に、HDFSにデータを書き込む非同期スレッドを磨きます
[ハント]書き込みデータが完了した後5は、データが最初memstoreに書き込まれ、memstoreのデフォルトサイズは、フルmemstoreオーバーフロー書き込み動作を統一する64Mは、あるデータは、にHDFSをmemstoreに永続化されています
6、頻繁にオーバーフロー書き込みが小さなファイルの多くにつながることができますので、ファイル、2つの方法でファイル、合併時におけるマイナーおよびメジャーをマージします、マイナーな統合は、小さなファイルを表し、すべての主要なstorefileを表しファイルは1、具体的かつ詳細なプロセスにマージされ、フォローアップを説明します。