HBase アプリケーションのシナリオ、原則、基本アーキテクチャ

1. HBaseの概要

  • HBase は、HDFS 上に構築された分散カラム ストレージ システムです。
  • HBase は Apache Hadoop エコシステムの重要なメンバーであり、主に大規模な構造化データ ストレージに使用されます。
  • 論理的には、HBase はデータをテーブル、行、列に格納します。

HDFS はバッチ処理シナリオに適しています。

データのランダム検索はサポートされていません。
増分データ処理には適していません
。データの更新はサポートされていません。

HBase テーブルの特徴:

:テーブルには数十億の行と数百万の列を含めることができます
无模式。各行には並べ替え可能な主キーと任意の数の列があります。列は必要に応じて動的に追加でき、同じテーブル内の異なる行にはまったく異なる列を含めることができます。:列
面向列(ファミリ) 指向のストレージと権限制御、列 (ファミリ) に依存しない取得;
稀疏: 空 (null) 列の場合、ストレージ領域を占有せず、テーブルを非常にまばらになるように設計できます; :
数据多版本各ユニット内のデータを複数のバージョン。デフォルトでバージョン番号が自動的に割り当てられます。これは、セルが挿入されたときのタイムスタンプです。
数据类型单一:Hbase のデータはすべて文字列であり、型はありません。

行ストレージと列ストレージの比較:

従来の行データベース:

  • データは行ごとに保存されます
  • インデックスのないクエリは大量の I/O を使用します
  • インデックスとマテリアライズド ビューの構築には多くの時間とリソースがかかります
  • クエリのニーズに対応するには、パフォーマンス要件を満たすためにデータベースを大規模に拡張する必要があります。

カラムデータベース:

  • データは列に格納されます - 各列は個別に格納されます
  • データはインデックスです
  • クエリに関係する列にのみアクセスします - システム I/O を大幅に削減します
  • 各列はスレッドによって処理されます - クエリの同時処理
  • 一貫したデータ型と同様のデータ特性 - 効率的な圧縮

2. HBase データモデル

HBase是基于Google BigTable模型开发的,典型的key/value系统.

  • HBase スキーマは複数のテーブルを持つことができ、各テーブルは複数の列ファミリーで構成できます。
  • HBase は動的列を持つことができます。列名はセル内でエンコードされており、異なるセルには異なる列を含めることができます。
    ここに画像の説明を挿入します

行キーと列ファミリー

ここに画像の説明を挿入します
Row Key: テーブル内の各レコードの「主キー」。素早い検索が容易になります。各行の行キーは一意である必要があり、昇順に挿入する必要はありません。: 名前があり、1 つ以上の関連列が含まれます
Column Family
Column:特定の列ファミリーに属し、列に含まれます familyName:columnName
Version Number: 各行キーに一意、デフォルト値 -> システム タイムスタンプ、タイプ Long
Value (Cell): バイト配列

Hbase によってサポートされる操作

  • すべての操作は行キーに基づいています。
  • CRUD (作成、読み取り、更新、削除) とスキャンをサポートします。
  • 単一行の操作: Put、Get、Scan
  • 複数行の操作: Scan、MultiPut
  • 組み込みの結合操作はなく、MapReduce を使用して解決できます。

3. HBase 物理モデル

  • 各列ファミリーは HDFS 上の個別のファイルに保存されます。
  • キーとバージョン番号は、各列ファミリーに 1 つのコピーがあります。
  • Null値は保存されません。
  • HBase は、各値、つまり <キー、列ファミリー、列名、タイムスタンプ> のマルチレベル インデックスを維持します。
  • 1. テーブル内のすべての行は、行キーに従って辞書順に配置されます。
    ここに画像の説明を挿入します
  • 2. テーブルは行方向に複数の領域に分割されます。
  • 3. 領域はサイズに応じて分割されます。各テーブルは 1 つの領域から始まります。データが増加するにつれて、領域は増加し続けます。しきい値まで増加すると、領域は 2 つの新しい領域に分割され、その後、地域はますます増えています。
    ここに画像の説明を挿入します
  • 4. リージョンは、HBase の分散ストレージと負荷分散の最小単位です。異なるリージョンは異なるリージョンサーバーに分散されます。
    ここに画像の説明を挿入します
  • 5、Region虽然是分布式存储的最小单元、ただし、ストレージの最小単位ではありません ( 数据存储的最小单元是cell)。
    • リージョンは 1 つ以上のストアで構成され、各ストアには列ファミリーが格納されます。
    • 各ストアは、1 つの memStore と 0 個以上の StoreFiles で構成されます。
    • memStore はメモリに保存され、StoreFile は HDFS に保存されます。
      ここに画像の説明を挿入します

4. HBaseの基本構造

ここに画像の説明を挿入します

HBaseの基本コンポーネント

クライアント:

  • HBase にアクセスするためのインターフェイスが含まれており、HBase へのアクセスを高速化するためにキャッシュを維持します。

飼育員:

  • クラスター内には常にマスターが 1 つだけ存在するようにする
  • すべてのリージョンのアドレス指定エントリを保存する
  • リージョンサーバーのオンラインおよびオフライン情報をリアルタイムで監視します。そしてリアルタイムでマスターに通知します
  • HBase スキーマとテーブルのメタデータを保存する

マスター:

  • リージョンをリージョンサーバーに割り当てる
  • リージョンサーバーの負荷分散を担当します
  • 障害が発生したリージョン サーバーを検出し、そのサーバー上でリージョンを再割り当てします。
  • ユーザーによるテーブルの追加、削除、変更、確認などの操作を管理します

地域サーバー:

  • リージョンサーバーはリージョンを維持し、これらのリージョンへの IO リクエストを処理します。
  • リージョン サーバーは、操作中に大きくなりすぎたリージョンを分割する役割を果たします。

動物園飼育員の役割

HBase は ZooKeeper に依存しており、
デフォルトでは、HBase は ZooKeeper インスタンスを管理します。たとえば、ZooKeeper を起動または停止すると、
マスターとリージョンサーバーは起動時に ZooKeeper に登録されます。Zookeeper
の導入により、マスターは単一障害点ではなくなりました。

ログ先行書き込み(WAL)

ここに画像の説明を挿入します

HBase フォールト トレランス

マスター フォールト トレランス: Zookeeper が新しいマスターを再選択します

  • マスターを使用しないプロセスでも、データの読み取りは通常どおり続行されます。
  • マスターのないプロセスでは、領域分割、負荷分散などが実行できません。

RegionalServer フォールト トレランス: 一定時間内にハートビートが発生しない場合、定期的にハートビートを Zookeeper に報告します。

  • マスターは、R​​egionServer 上のリージョンを他のリージョンサーバーに再配布します。
  • 障害が発生したサーバー上の「先行書き込み」ログはメイン サーバーによって分割され、新しいリージョン サーバーに送信されます。

Zookeeper の耐障害性: Zookeeper は信頼できるサービスです

  • 通常、3 つまたは 5 つの Zookeeper インスタンスが構成されます。

Region定位: RegionServer を探しています -> (ZooKeeper、-ROOT-(単一リージョン)、.META.、ユーザー テーブル)

-根-

  • テーブルには、.META. テーブルが配置されているリージョンのリストが含まれています。テーブルにはリージョンが 1 つだけ含まれます。
  • -ROOT- テーブルの場所は Zookeeper に記録されます。

.メタ。

  • このテーブルには、すべてのユーザー空間領域のリストと、RegionServer のサーバー アドレスが含まれています。

おすすめ

転載: blog.csdn.net/m0_49447718/article/details/129994834