一般的な HBase 運用および保守ツール 10 個の概要

一般的な HBase 運用および保守ツール 10 個の概要

概要: HBase には、ユーザーに管理、分析、修復、デバッグ機能を提供するための多くの操作および保守ツールが付属しています。この記事では、よく使用される HBase ツールをいくつか紹介します。開発者や運用保守担当者は、この記事を参考にして、これらのツールを使用して HBase の日常的な管理と運用を行うことができます。

HBase コンポーネントの紹介

HBase は人気があり、広く使用されている NoSQL データベースです。設計アーキテクチャとプロセスが複雑なため、ビッグデータの経験がほとんどない運用・保守担当者にとっては敷居が高くなります。この記事では、HBase の既存のツールを紹介し、まとめます。

冒頭に書いたメモ:

1) HBase のバージョンによって大きな違いがあるため (たとえば、hbck ツールは HBase2.x から削除されています)、この記事で使用されているすべてのコマンド ラインは、HBase バージョン 1.3.1 に対応する MRS_1.9.3 の環境で実行されています。一部のコマンドは HBase2 ではサポートされていません (HBase2 については、時間があれば別途紹介します)。

2) この記事で言及されている HBase ツールはすべてオープンソース ツールであり、メーカーが開発した最適化および運用保守ツールは含まれていません。

カナリアツール

HBase Canary は、HBase クラスターの現在のステータスを検出するためのツールです。簡単なクエリを使用して、HBASE 上のリージョンが使用可能 (読み取り可能) かどうかを確認します。主に2つのモードに分かれています

1) リージョン モード (デフォルト): 各リージョンの各 CF のデータの一部をランダムにクエリし、クエリが成功したかどうかとクエリの待機時間を出力します。

#t1 および tsdb-uid テーブルを確認します hbase org.apache.hadoop.hbase.tool.Canary t1 tsdb-uid
  #注: テーブルが指定されていない場合はすべての領域をスキャンします

2) リージョンサーバー モードでは、クエリ用に各リージョンサーバーでテーブルがランダムに選択され、クエリの成功とクエリの待機時間が出力されます。

#リージョンサーバーをチェック hbase org.apache.hadoop.hbase.tool.Canary -regionserver node-ana-coreQZLQ0002.1432edca-3d6f-4e17-ad52-098f2adde2e6.com
  #注: リージョンサーバーが指定されていない場合は、すべてのリージョンサーバーをスキャンします

Canaryは、次のように参照できるいくつかの単純なパラメータを指定することもできます。

要約:

  • クラスターへの影響: 2 つ星 (単純な読み取り操作のみで、リージョンの数が多い場合はリクエスト スループットのごく一部を占めます)
  • 実用性: 2つ星

HFile ツール

HBase HFile 表示ツール。主に特定の HFile のコンテンツ/メタデータを確認するために使用されます。業務上、リージョンが読み取れない、ファイルの問題によりリージョンサーバー上でリージョンを開けない、またはファイルの読み取り時に例外が発生するなどの問題が発生した場合は、このツールを使用して、HFile のみに問題があるかどうかを確認できます。

#t1テーブルのHFilesの1つの詳細を表示し、KVを出力します
hbase org.apache.hadoop.hbase.io.hfile.HFile -v -m -p -f /hbase/data/default/t1/4dfafe12b749999fdc1e3325f22794d0/cf1/06e102be436c449693734b222b9e9aab

使用されるパラメータは次のとおりです。

要約:

  • クラスターへの影響: 1 つ星 (このツールは HBase チャネルを使用せず、単にファイルを読み取るだけで、クラスターに影響を与えません)
  • 実用性: 4 つ星 (特定の HFile コンテンツに問題があるかどうかを正確に判断できます)

RowCounter および CellCounter ツール

RowCounter は、MapReduce タスクを使用してテーブル行の数をカウントする統計ツールです。 RowCounter に似ていますが、行数、列ファミリ、修飾子、テーブル内の対応する出現回数など、テーブルに関連するより詳細な統計を収集します。どちらのツールも、行の開始位置と終了位置、およびタイムスタンプを指定して範囲クエリを実行できます。

# RowCounter スキャン t1
hbase org.apache.hadoop.hbase.mapreduce.RowCounter t1
#CellCounter を使用して t1 テーブルをスキャンし、結果を HDFS の /tmp/t1.cell ディレクトリに書き込みます hbase org.apache.hadoop.hbase.mapreduce.CellCounter t1 /tmp/t1.cell

使用されるパラメータは次のとおりです。

要約:

クラスターへの影響: 3 つ星 (テーブルのすべての領域をスキャンするには MapReduce を開始する必要があり、クラスター リソースを占有します)

実用性: 3 つ星 (HBase が独自のテーブル内の行数をカウントする唯一のツールであり、HBase シェルでのカウント効率は比較的低い)

クリーンツール

clean コマンドは、ZooKeeper および HDFS 上の HBase データをクリアするために使用されるツールです。クラスターがすべてのデータをクリーンアップまたは消去する必要がある場合、HBase を元の状態に復元できます。

#HBase 内のすべてのデータをクリアします。hbase clean --cleanAll は次のパラメータを使用します。 

要約:

クラスターへの影響: 5 つ星 (HBase クラスター上のすべてのデータを削除)

実用性: 2 つ星 (HBase データをリセットする必要があるシナリオ (OBS 上の HBase への切り替えなど) は除きますが、これはめったに使用されません)

HBCKツール

HBase の hbck ツールは、日常の運用とメンテナンスで最もよく使用されるツールです。クラスター上のリージョンの一貫性をチェックできます。 HBase の RIT ステータスはより複雑で問題が発生しやすいため、日常の運用やメンテナンス中にリージョンのオフライン/不整合などの問題に頻繁に遭遇します。このとき、hbck のさまざまな検査結果に応じて、対応するコマンドを使用して修復できます。

#テーブルt1のリージョンステータスを確認する hbase hbck t1
#テーブル t1 のメタを修正し、再割り当てします hbase hbck -fixMeta -fixAssignments t1

このツールは、非常に多くの詳細なシナリオで使用されるため、ここでは詳細を紹介しません。さまざまな異常なシナリオを修復するためのパラメータの説明を表示できます。注意: 異常の原因がわからない場合は、修復コマンドをむやみに使用しないでください。問題が悪化する可能性があります。

使用されるパラメータは次のとおりです。

要約:

  • クラスターへの影響: 4 つ星 (一部のメタ関連コマンドはクラスターに大きな影響を与えます)
  • 実用性: 5 つ星 (hbck は HBase の運用保守担当者にとって最も基本的な運用保守ツールです)

領域分割ツール

RegionSplitter は HBase の事前分割ツールです。テーブルを初期化するときに事前分割を構成しないと、HBase はリージョンを分割する方法を知らず、後続のリージョン/リージョン サーバーのホットスポットが発生する可能性があります。最善の方法は、最初に分割ポイントを予測し、テーブルの構築時に事前分割を実行して、最初にビジネス アクセスの全体的な負荷分散を確保することです。 RegionSplitter は、特定の分割アルゴリズムを使用してテーブルを構築するときに事前分割を実行できます。次の 2 つのアルゴリズムが付属しています。

16進文字列分割

8つの16進文字を使用して分割します。これは、行キーがプレフィックスとして16進文字列(ASCII)である場合に適しています。

ユニフォーム分割

長さ 8 のバイト配列を使用して分割し、元のバイト値 (0x00 から 0xFF) に応じて右側に 00 を入力します。このようにパーティション化されたテーブルにデータを配置する場合、何らかの方法で行キーを変更する必要があります。たとえば、元の行キーが rawStr の場合、その hashCode を取得し、バイト ビットを反転して、元の行キー文字列の前に配置する必要がありま す。

#test_table テーブルを作成し、HexStringSplit アルゴリズムを使用して 10 を事前パーティション分割します hbase org.apache.hadoop.hbase.util.RegionSplitter test_table HexStringSplit -c 10 -f f1
#ヒント: この操作は、hbase シェルで create 'test_table', {NAME => 'f1'}, {NUMREGIONS => 10, SPLITALGO => 'HexStringSplit'} を実行するのと同等です。 

要約:

HBase にどのような事前分割アルゴリズムが付属しているかに関係なく、テーブル データ自体の行キーが合意された形式に準拠していることが条件となります。実際には、ユーザーはビジネスに応じて行キーを設計し、独自の事前分割アルゴリズムを実装する必要があります (SplitAlgorithm インターフェイスを実装)。

クラスターへの影響: 1 つ星 (テーブル作成操作、他のクラスター サービスへの影響なし)

実用性: 3 つ星 (実際の事前分割は実際のビジネスに基づいています。テストでは、HBase のデフォルトの分割アルゴリズムを使用して行キー形式を構築できます)

FSHLog ツール

FSHLog は、HBase に付属する WAL ファイルの検査および分割ツールです。主に 2 つの部分に分かれています。

ごみ

WALファイルの特定の内容をダンプする

スプリット

WALフォルダのWAL分割操作をトリガーする

# 現在の WAL ファイルの内容をダンプします hbase org.apache.hadoop.hbase.regionserver.wal.FSHLog --dump /hbase/WALs/node-ana-coreqzlq0002.1432edca-3d6f-4e17-ad52-098f2adde2e6.com,16020,1591846214733/node-ana-coreqzlq0002.1432edca-3d6f-4e17-ad52-098f2adde2e6.com%2C16020%2C1591846214733.1592184625801

関連パラメータ

要約:

  • クラスターへの影響: 2 つ星 (トリガーされた WAL 分割操作により、対応するワーカー ノードに少量の負荷が追加されます。分割する必要がある WAL が非常に大きい場合、リージョン レベルのビジネスに影響します)
  • 実用性: 4 つ星 (WAL コンテンツの正確性をチェックするために使用でき、WAL 移行シナリオに適しています)

WALPlayerツール

WALPlayer は、WAL ファイル内のログを HBase に再生するツールです。特定のテーブルまたはすべてのテーブルのデータを再生したり、対応する時間間隔やその他の条件を指定してデータを再生したりできます。

#WALファイルのデータをテーブルt1に再生する
hbase org.apache.hadoop.hbase.mapreduce.WALPlayer /tmp/node-ana-coreqzlq0002.1432edca-3d6f-4e17-ad52-098f2adde2e6.com%2C16020%2C1591846214733.1592184625801 t1

Q&A: FSHLog と WALPlayer はどちらも WAL ファイル内のデータを HBase に復元できます。それらの違いは何ですか?

FSHLog は HMaster への WAL 分割要求をトリガーし、HBase 独自の WAL 分割プロセスに従って、WAL 内のすべてのデータを HBase に復元します。 WALPlayerは独自のMRタスクを開始してWALファイル内のデータをスキャンし、適格なデータを特定のテーブルに格納するか、HFileを特定のディレクトリに出力します。

関連パラメータ:

要約:

  • クラスターへの影響: 3 つ星 (MR タスクを開始すると、クラスター リソースが一部消費されます)
  • 実用性: 4 つ星 (レプリケーションの事前同期やテーブル データの回復など、特定のシナリオでは非常に実用的)

オフラインメタ修復

OfflineMetaRepair ツールは、HBase メタデータを修復するために使用されます。 HDFS 上の HBase のリージョン/テーブル メタデータに基づいて HBase メタデータを再構築します。

#hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair のメタデータを再確立します

Q&A: hbck の fixMeta は HBase メタデータを修復し、より柔軟に使用するために特定のテーブルを指定することもできます。OfflineMetaRepair を使用する必要はありますか?

hbck ツールは HBase のオンライン修復ツールであり、HBase が起動されていない場合は使用できません。 OfflineMetaRepairはオフライン状態のHBaseメタデータを修復します

関連パラメータ:

要約:

  • クラスターへの影響: 5 つ星 (元のメタデータ テーブルをバックアップした後、HBase メタデータが再構築されます)
  • 実用性: 4 つ星 (このツールは、メタデータの理由で起動に失敗した場合に HBase を回復できます)

スイーパーツール

Sweeper ツール (HBASE-11644) は、HBase クラスター内の小さな MOB ファイルをマージし、冗長な MOB ファイルを削除できます。列ファミリに基づいて対応する SweepJob タスクを開始し、対応する MOB ファイルをマージします。このツールは MOB メジャー コンパクションと同時に実行することはできず、同じ列ファミリの複数の Sweeper タスクを同時に実行することもできないことに注意してください。

#テーブルt1でSweeperを実行する
hbase org.apache.hadoop.hbase.mob.mapreduce.スイーパー t1 cf1

関連パラメータ:

要約:

  • クラスターへの影響: 5 つ星 (MOB タスクのマージは大量の Yarn リソースと IO を占有し、ビジネスに大きな影響を与えます)
  • 実用性: 2 つ星 (MOB シナリオにのみ適しています。MOB を使用すると、HMaster での圧縮でボトルネックが発生するため、推奨されません (コミュニティ HBASE3 でのみサポートされています。関連 jira HBASE-22749))

今回紹介したHBaseの運用保守ツールは以上です。Bulkloadの一括インポートやデータ移行、テスト関連のPEなど他のツールについては今回は割愛します。何か間違っている点がありましたら、ご訂正ください。ありがとうございます。

公式ドキュメント: https://hbase.apache.org/book.html

これで、HBase の一般的な運用および保守ツールのトップ 10 に関するこの記事は終了です。HBase の運用および保守ツールに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • HBase テーブルデータをコピーする一般的な MapReduce プログラム
  • Hadoop+HBase+ZooKeeper 分散クラスタ環境を構築する手順
  • Hbase 入門
  • HBase の紹介
  • hbaseの利点の詳細な分析
  • Hbase 列ストレージ チュートリアル
  • HBaseテーブルのデータモデルの詳細な説明

<<:  MySQLデータベース入門:マルチインスタンス構成方法の詳しい説明

>>:  TypeScript における列挙型の理解と応用シナリオ

推薦する

MySQLは数百万のシミュレーションデータ操作コードを自動的に挿入します

私はデータベースツールとして Navicat を使用しています。他のものも同様です。 1. Navi...

CSS 8 目を引く HOVER 効果のサンプル コード

1. エフェクトHTMLを送信する <div id="送信ボタン">...

MySQL の自動インクリメント主キーが連続していないのはなぜですか?

目次1. はじめに2. 自己増分ストレージの説明3つの自己付加価値修正メカニズム4. 自己評価を修正...

シンプルなカルーセル チャートを実装するための JavaScript の最も完全なコード分析 (ES5)

この記事では、シンプルなカルーセル効果を実現するためのJavaScriptの具体的なコードを参考まで...

Flex レイアウトで適応型ページを作成する (構文と例)

Flex レイアウトの紹介英語の Flex はフレキシブル ボックス、つまり伸縮性のあるボックスを...

Navicat を MySQL に接続するときに発生する 2059 エラーの解決方法

最近、Djangoを学習しているときにデータベースを使用する必要があったため、MySQLで使用するた...

ubuntu20.04 LTSにdockerをインストールする方法

ゼロ: 古いバージョンをアンインストールするDocker の古いバージョンは、docker、dock...

バッチモードでtopコマンドを実行する方法

top コマンドは、Linux システムのパフォーマンスを監視するために誰もが使用している最適なコマ...

JavaScriptのクローン作成についての簡単な説明

目次1. 浅いクローニング2. ディープクローニング1. 浅いクローニング浅いクローンでは配列やオブ...

JSアルバム画像の揺れと拡大表示効果のサンプルコード

前回の記事では、JS を使って簡単な揺れ効果を実現する方法を紹介しました。ご興味があればクリックして...

Dockerイメージとコンテナの一般的な操作の詳細な説明

画像アクセラレータ中国の Docker Hub からイメージをプルすることが難しい場合があります。こ...

display または visibility を通じて HTML 要素を表示または非表示にする

場合によっては、特定の条件に基づいて Web ページ内の HTML 要素を表示するか非表示にするかを...

Linux で Multitail コマンドを使用するチュートリアル

MultiTail は、tail コマンド機能と同様に、複数のドキュメントを同時に監視するために使用...

要素テーブルの行と列のドラッグを実装する例

要素 ui テーブルにはドラッグ アンド ドロップによる並べ替え機能が組み込まれておらず、サードパー...

JavaScript ツールチェーンの不完全なガイド

目次概要静的型チェックコードスタイルチェック(Linter)パッケージマネージャーモジュールローダー...