HBaseアーキテクチャ:知っておくべきことすべて[2022]
公開: 2021-01-06構造化データと非構造化データの両方が指数関数的に増加しており、 ApacheHadoopはそのような膨大なデータの処理においてその卓越性を証明しています。 したがって、Apache Hadoopは、ビッグデータの世界で大きな注目を集めています。 ただし、HadoopのHDFSアーキテクチャには特定の制限があります。
HDFSは高遅延操作を出力し、大量の読み取り要求と書き込み要求を同時に処理することはできません。 もう1つの制限は、HDFSが追記型のアーキテクチャであるということです。つまり、データセットを変更するには、ファイルを完全に再書き込みする必要があります。 HDFSアーキテクチャのこれらの制限により、 HBaseアーキテクチャの必要性が高まりました。
目次
HBaseとは何ですか?
HBaseは、制限を克服するためにHDFS上に形成される列指向のデータストレージアーキテクチャです。 HDFSの基本機能を活用し、HDFSに基づいて構築されており、大量の読み取りおよび書き込み要求をリアルタイムで処理することでスケーラビリティを提供します。 HBaseアーキテクチャはNoSQLデータベースですが、データをクラスター全体に均等に分散することで、データを維持するプロセスを容易にします。 これにより、HBaseデータモデルのデータへのアクセスと変更が迅速になります。 HBaseの詳細をご覧ください。
HBaseデータモデルのコンポーネントは何ですか?
HBaseデータモデルはNoSQLデータベースであるため、開発者は必要に応じてデータを簡単に読み書きでき、HDFSアーキテクチャよりも高速になります。 次のコンポーネントで構成されています。
1. HBaseテーブル: HBaseアーキテクチャは列指向です。 したがって、データはテーブルベースの形式のテーブルに保存されます。
2. RowKey :RowKeyは、記録されるすべてのデータセットに割り当てられます。 これにより、HBaseテーブルで特定のデータを簡単に検索できます。

3.列:列はデータセットのさまざまな属性です。 各RowKeyは無制限の列を持つことができます。
4.列ファミリー:列ファミリーは、いくつかの列の組み合わせです。 列ファミリーを読み取る単一の要求により、そのファミリー内のすべての列にアクセスできるため、データの読み取りがより迅速かつ容易になります。
5.列修飾子:列修飾子は、通常のテーブルの列タイトルまたは属性名のようなものです。
6.セル:RowKeyと列修飾子を使用して識別される行と列のタプルです。
7.タイムスタンプ:データがHBaseデータモデルに保存されるときはいつでも、データはタイムスタンプとともに保存されます。
読む:Hadoopエコシステムのコンポーネント
HBaseアーキテクチャのコンポーネントは何ですか?
HBaseアーキテクチャは、HMaster、Region Server、ZooKeeperの3つの主要コンポーネントで構成されています。
1. HMaster
HMasterはその名前と同じように動作します。 リージョンをリージョンサーバー(スレーブ)に割り当てるのはマスターです。 HBaseアーキテクチャは、自動シャーディングプロセスを使用してデータを維持します。 このプロセスでは、HBaseテーブルが長くなりすぎると、HMasterを使用してシステムによって配布されます。 HMasterの典型的な責任のいくつかは次のとおりです。
- フェイルオーバーを制御する
- リージョンサーバーとHadoopクラスターを管理する
- テーブルの作成や削除などのDDL操作を処理します
- メタデータ操作の変更を管理する
- リージョンを管理し、リージョンサーバーに割り当てます
- リクエストを受け入れて、関連するリージョンサーバーに送信します
2.リージョンサーバー
リージョンサーバーは、すべてのユーザーリクエストを処理するエンドノードです。 複数のリージョンが単一のリージョンサーバー内で結合されます。 これらの領域には、指定されたキー間のすべての行が含まれます。 ユーザーリクエストの処理は実行が複雑なタスクであるため、リージョンサーバーはさらに4つの異なるコンポーネントに分割され、リクエストの管理がシームレスになります。

- ログ先行書き込み(WAL) :WALはすべてのリージョンサーバーに接続され、ドライブにまだコミットされていない種類の一時データを格納します。
- ブロックキャッシュ:読み取り要求キャッシュです。 最近読み取られたすべてのデータはブロックキャッシュに保存されます。 頻繁に使用されないデータは、いっぱいになると自動的にストックから削除されます。
- MemStore :まだディスクに書き込まれていないデータを保存するための書き込みキャッシュです。
- HFile :HFileは、コミット後のすべての実際のデータを保存します。
3. ZooKeeper
ZooKeeperは、 HBaseアーキテクチャーの通信を介したブリッジとして機能します。 すべてのリージョンサーバーとその中にあるリージョンを追跡する責任があります。 どのリージョンサーバーとHMasterがアクティブで、どれが失敗したかを監視することも、ZooKeeperの任務の一部です。 サーバーリージョンに障害が発生したことが検出されると、HMasterがトリガーされて必要なアクションが実行されます。 一方、HMaster自体に障害が発生すると、非アクティブなHMasterがトリガーされ、アラート後にアクティブになります。 すべてのユーザーとHMasterでさえ、リージョンサーバーとその中のデータにアクセスするためにZooKeeperを経由する必要があります。 ZooKeeperは、すべてのリージョンサーバーのリストを含む.Metaファイルを保存します。 ZooKeeperの責任は次のとおりです。
- Hadoopクラスター全体での通信の確立
- 構成情報の保守
- リージョンサーバーとHMasterの障害の追跡
- リージョンサーバー情報の維持
リクエストはHBaseアーキテクチャでどのように処理されますか?
HBaseアーキテクチャーの主要なコンポーネントとその機能がわかったので、アーキテクチャー全体でリクエストがどのように処理されるかを深く掘り下げてみましょう。
1.HBaseアーキテクチャでの検索を開始します
検索を初期化する手順は次のとおりです。
- ユーザーはZooKeeperからメタテーブルを取得し、関連するリージョンサーバーの場所を要求します。
- 次に、ユーザーはRowKeyを使用してRegionServerに正確なデータを要求します。
2.HBaseアーキテクチャでの書き込みメカニズム
HBaseアーキテクチャーに書き込む手順は次のとおりです。
- クライアントは、最初にリージョンサーバーを見つけ、次にそれを変更するためのデータの場所を見つける必要があります。 (この手順は、データの変換にのみ関係し、新しい情報の書き込みには関係しません)
- 実際の書き込み要求は、クライアントがデータを書き込むWALから始まります。
- WALはデータをMemStoreに転送し、ユーザーに確認応答を送信します。
- MemStoreがデータでいっぱいになると、データはHFileにコミットされ、そこで保存されます。
3.HBaseアーキテクチャの読み取りメカニズム
データを読み取るには、ユーザーは最初に関連するリージョンサーバーにアクセスする必要があります。 リージョンサーバーがわかると、他のプロセスには次のものが含まれます。

- 最初のスキャンは、ブロックキャッシュである読み取りキャッシュで行われます。
- 次のスキャン場所は、書き込みキャッシュであるMemStoreです。
- データがブロックキャッシュまたはMemStoreに見つからない場合、スキャナーはHFileからデータを取得します。
データリカバリはHBaseアーキテクチャでどのように機能しますか?
Hbaseアーキテクチャーは、データを圧縮と領域分割によって分割し、クラスター内のデータ負荷を軽減します。 ただし、クラッシュが発生し、リカバリが必要な場合は、次のように実行されます。
- サーバー障害が発生すると、ZooKeeperはHMasterをトリガーします。
- HMasterは、クラッシュしたリージョンとWALをアクティブなリージョンサーバーに配布します。
- これらのリージョンサーバーはWALを再実行し、MemStoreを構築します。
- すべてのリージョンサーバーがWALを再実行すると、列ファミリーとともにすべてのデータが回復されます。
チェックアウト: Hadoopエコシステムとコンポーネント
結論
データは、さまざまな業界で新しいオイルになりました。 したがって、Hadoopには複数のキャリアの機会があります。 upGradでHadoopとビッグデータのすべてを学ぶことができます。
Hbase、ビッグデータについて詳しく知りたい場合は、ビッグデータプログラムのソフトウェア開発スペシャライゼーションのPGディプロマをチェックしてください。このプログラムは、働く専門家向けに設計されており、7つ以上のケーススタディとプロジェクトを提供し、14のプログラミング言語とツール、実用的なハンドをカバーしています。 -ワークショップでは、トップ企業との400時間以上の厳格な学習と就職支援。
世界のトップ大学からオンラインでソフトウェア開発コースを学びましょう。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。