HBase シェル コマンドと例
⚡ スマートサマリー
HBaseシェルコマンドを使用すると、対話型プロンプトから直接テーブルとデータを管理できます。コマンドは、一般的なコマンド、作成や削除などのテーブル管理コマンド、配置や取得などのデータ操作コマンド、クラスタレプリケーションコマンドに分類されています。

シェルコマンドを使用してHBaseとやり取りする方法 Java API
Hadoop上にHBaseを正常にインストールすると、対話型シェルが利用可能になり、さまざまなコマンドを実行して複数の操作を実行できます。これらのコマンドを使用することで、データテーブルに対して複数の操作を実行でき、データストレージの効率性を向上させ、クライアントとの柔軟なやり取りを実現できます。
HBaseとのやり取りには、次の2つの方法があります。
- HBaseインタラクティブシェルモード、および
- 介して Java APIです。
HBaseでは、テーブル操作、テーブル管理、データモデリングのためにHBaseと対話するには、対話型シェルモードを使用します。 Java API モデルでは、HBase ですべてのタイプのテーブルとデータ操作を実行できます。これらの両方の方法を使用して HBase とやり取りできます。2 つの唯一の違いは、 Java APIの使用 Java HBaseに接続するにはコードを使用するモードと、シェルモードのようにシェルコマンドを使用してHBaseに接続するモードがあります。
先に進む前に、HBaseについて簡単に復習しておきましょう。
- HBase の用途 Hadoopの HBaseは、大量のデータを保存するためのストレージシステムとしてファイルを使用します。HBaseは、マスターサーバーとリージョンサーバーで構成されています。
- HBaseに保存されるデータはリージョンという形式になります。さらに、これらのリージョンは分割され、複数のリージョンサーバーに保存されます。
- これらのシェルコマンドを使用すると、プログラマは完全なシェルモード対話を用いてテーブルスキーマとデータ操作を定義できます。
- どのコマンドを使用しても、それはHBaseのデータモデルに反映されます。
- 私たちは、BashシェルなどのオペレーティングシステムのスクリプトインタープリタでHBaseシェルコマンドを使用します。
- Bashシェルはほとんどのコマンドインタープリタのデフォルトです Linux そしてUnix系オペレーティングシステムのディストリビューション。
- HBaseの高度なバージョンでは、テーブルに対してJRubyスタイルのオブジェクト指向参照を用いたシェルコマンドが提供されます。
- テーブル参照変数を使用すると、HBaseシェルモードでデータ操作を実行できます。
具体的な例を挙げますと、以下の通りです。
- このチュートリアルでは、「education」がテーブル名を表し、「guru99」という列名に対応するテーブルを作成しました。
- 一部のコマンドでは、「guru99」自体がテーブル名を表します。
一般的なコマンド
HBaseでは、一般的なコマンドは以下のように分類されます。
- ステータス
- Table_help (スキャン、ドロップ、取得、挿入、無効化など)
- 私は誰
HBaseシェルコマンドに入るには、まず、以下に示すコードを実行する必要があります。
hbase Shell
HBaseシェルに入ると、以下のシェルコマンドをすべて実行できます。これらのコマンドを使用すると、HBaseシェルモードであらゆる種類のテーブル操作を実行できます。対話型シェルプロンプトは以下のように表示されます。
これらすべてのコマンドとその使用法を例を挙げて XNUMX つずつ見てみましょう。
ステータス
Syntax:status
このコマンドを実行すると、クラスタ内のサーバー数、アクティブなサーバー数、平均負荷値など、システムの状態に関する詳細情報が表示されます。システムの状態をどの程度詳細に知りたいかに応じて、特定のパラメータを指定することもできます。パラメータは「summary」、「simple」、「detailed」のいずれかで、デフォルトのパラメータは「summary」です。
以下に、statusコマンドに様々なパラメータを渡す方法を示します。下のスクリーンショットをご覧いただくと、より理解が深まるでしょう。
hbase(main):001:0>status hbase(main):002:0>status 'simple' hbase(main):003:0>status 'summary' hbase(main):004:0> status 'detailed'
ステータス出力は以下のとおりです。
このステータスコマンドを実行すると、稼働中のサーバー数、停止中のサーバー数、およびサーバーの平均負荷に関する情報が表示されます。このスクリーンショットには、稼働中のサーバーが1台、停止中のサーバーが1台、平均負荷が7.0000であるといった情報が表示されています。
Syntax: version
バージョン出力は以下のとおりです。
- このコマンドは、コマンドモードで現在使用されているHBaseのバージョンを表示します。
- versionコマンドを実行すると、上記のような出力が表示されます。
テーブルヘルプ
Syntax:table_help
table_helpの出力は以下のとおりです。
このコマンドは以下をガイドします。
- テーブル参照コマンドとは何か、そしてその使い方について説明します。
- 本書では、HBaseの様々なシェルコマンドの使用方法とその構文について解説します。
- 上記のスクリーンショットでは、「create」コマンドと「get_table」コマンドの構文と使用方法が示されています。HBaseにテーブルが作成されると、これらのコマンドを使用してテーブルを操作できるようになります。
- これにより、put、getなどのテーブル操作コマンド、およびその他のすべてのコマンド情報が表示されます。
whoami
Syntax: Whoami
whoamiの出力結果は以下のとおりです。
このコマンド「whoami」は、HBaseクラスタから現在のHBaseユーザー情報を取得するために使用されます。以下のような情報が表示されます。
- HBaseに存在するグループ。
- ユーザー情報。例えば、この例では「hduser」はスクリーンショットに示されているユーザー名を表します。
TTL(Time To Live) – 属性
HBaseでは、カラムファミリーにTTL(有効期限)を使用して秒単位の時間値を設定できます。有効期限が切れると、HBaseは自動的に行を削除します。この属性は、現在のバージョンを含む、行のすべてのバージョンに適用されます。
HBaseで各行にエンコードされるTTL時間はUTCで指定されます。この属性はテーブル管理コマンドで使用されます。TTL処理とカラムファミリーTTLの重要な違いは以下のとおりです。
- セルの TTL は、秒ではなくミリ秒単位で表されます。
- セルTTLは、カラムファミリーレベルのTTL設定を超えてセルの有効寿命を延長することはできません。
テーブル管理コマンド
これらのコマンドを使用すると、プログラマーは行と列のファミリを持つテーブルとテーブルスキーマを作成できます。テーブル管理コマンドは次のとおりです。
- 創造する
- リスト
- 説明する
- 無効にします
- すべて無効にします
- 有効にする
- 全て可能にする
- ドロップ
- ドロップオール
- Show_filters
- 年齢
- 変更ステータス
HBaseにおける様々なコマンドの使い方を例を交えて見ていきましょう。
創造する
Syntax: create <tablename>, <columnfamilyname>
例:-
hbase(main):001:0> create 'education' ,'guru99' 0 rows(s) in 0.312 seconds =>Hbase::Table – education
createコマンドの実行結果を以下に示します。
上記の例では、各カラムファミリーの仕様に従って指定された名前でHBaseにテーブルを作成する方法を説明しています。さらに、テーブルスコープ属性を渡すこともできます。テーブル「education」が作成されたかどうかを確認するには、以下の「list」コマンドを使用します。参照 HBaseテーブルを作成する Java そして貝殻.
リスト
Syntax:list
リスト出力は以下のとおりです。
- 「list」コマンドを実行すると、HBaseに存在する、または作成されたすべてのテーブルが表示されます。
- 上記のスクリーンショットに示されている出力は、現在HBaseに存在するテーブルを表示したものです。
- このスクリーンショットには、HBase内に合計8つのテーブルが存在することが示されています。
- オプションの正規表現パラメータを渡すことで、テーブルからの出力値をフィルタリングできます。
説明する
Syntax:describe <table name>
hbase(main):010:0>describe 'education'
describeコマンドの出力結果は以下のとおりです。
このコマンドは、名前付きテーブルを説明します。
- これにより、前述の表に存在する列ファミリーに関する詳細情報が得られます。
- 私たちの場合、それは「教育」という表の説明を与えます。
- テーブル名、列ファミリー、関連するフィルター、バージョン、その他の詳細情報が表示されます。
disable
Syntax: disable <tablename>
hbase(main):011:0>disable 'education'
無効化後の出力は以下のとおりです。
- このコマンドを実行すると、指定されたテーブルの無効化が開始されます。
- テーブルを削除またはドロップする必要がある場合は、まず無効化する必要があります。
上記のスクリーンショットでは、教育に関する表を無効にしています。
すべて無効にします
Syntax: disable_all<"matching regex"
- このコマンドは、指定された正規表現に一致するすべてのテーブルを無効にします。
- 実装方法はdropコマンドと同じです(ただし、マッチング用の正規表現が追加されています)。
- テーブルが無効化されると、ユーザーはHBaseからそのテーブルを削除できるようになります。
- 削除またはドロップする前にping テーブルの場合は、まず無効化する必要があります。
有効にする
Syntax: enable <tablename>
hbase(main):012:0>enable 'education'
有効化時の出力は以下のとおりです。
- このコマンドを実行すると、指定されたテーブルの有効化が開始されます。
- どちらのテーブルが無効になっている場合でも、それを以前の状態に戻すには、このコマンドを使用します。
- テーブルが最初に無効化され、削除またはドロップされていない場合、無効化されたテーブルを再利用したい場合は、このコマンドを使用して有効化する必要があります。
- 上記のスクリーンショットでは、「education」テーブルを有効にしています。
show_filters
Syntax: show_filters
show_filtersの出力結果は以下のとおりです。
このコマンドは、ColumnPrefixFilter、TimestampsFilter、PageFilter、FamilyFilterなど、HBaseに存在するすべてのフィルターを表示します。
ドロップ
Syntax:drop <table name>
hbase(main):017:0>drop 'education'
ドロップ出力は以下のとおりです。
dropコマンドを使用する際には、以下の点に留意する必要があります。
- HBaseに存在するテーブルを削除するには、まずそのテーブルを無効にする必要があります。
- HBaseに存在するテーブルを削除するには、まずそのテーブルを無効にする必要があります。
- したがって、テーブルを削除または破棄するには、まずdisableコマンドを使用してテーブルを無効にする必要があります。
- 上記のスクリーンショットでは、ping 表「教育」。
- このコマンドを実行する前に、「education」テーブルを無効にする必要があります。
ドロップオール
Syntax: drop_all<"regex">
- このコマンドは、指定された正規表現に一致するすべてのテーブルを削除します。
- このコマンドを実行する前に、disable_all を使用してテーブルを無効にする必要があります。
- 正規表現に一致する式を含むテーブルは、HBaseから削除されます。
有効になっています
Syntax: is_enabled 'education'
このコマンドは、指定されたテーブルが有効になっているかどうかを確認します。通常、「enable」コマンドと「is_enabled」コマンドの動作には多少の混乱が見られますが、ここではその点を明確にします。
- テーブルが無効になっている場合、そのテーブルを使用するには、enableコマンドを使用して有効にする必要があります。
- is_enabledコマンドは、テーブルが有効になっているかどうかを確認します。
変更する
Syntax: alter <tablename>, NAME=><column familyname>, VERSIONS=>5
このコマンドは、列ファミリーのスキーマを変更します。 正確に何を行うのかを理解するために、ここでは例を示して説明しました。
例:これらの例では、テーブルとその列に対してALTERコマンド操作を実行します。次のような操作を実行します。
- 単一列および複数列のファミリー名を変更する。
- テーブルから列ファミリー名を削除する。
- テーブルに対してスコープ属性を使用するその他の操作がいくつかあります。
テーブル「education」の列ファミリー「guru99_1」を現在の値から変更または追加して、最大5つのセルバージョンを保持します。ここで、「education」は、以前に列名「guru99」で作成されたテーブル名です。以下に示すように、ALTERコマンドを使用して、列ファミリースキーマをguru99からguru99_1に変更しようとしています。
hbase> alter 'education', NAME='guru99_1', VERSIONS=>5
alterコマンドは、複数のカラムファミリーに対しても使用できます。例えば、以下に示すように、既存のテーブル「education」に2つの新しいカラムを定義します。
hbase> alter 'edu', 'guru99_1', {NAME => 'guru99_2', IN_MEMORY => true}, {NAME => 'guru99_3', VERSIONS => 5}
- このコマンドを使用すると、複数の列スキーマを一度に変更できます。
- 上記のスクリーンショットに示されているように、guru99_2とguru99_3は、educationテーブル用に定義した2つの新しい列名です。
- このコマンドの使用方法は、前のスクリーンショットで確認できます。
この手順では、テーブルから列ファミリーを削除する方法を見ていきます。テーブル「education」の「f1」列ファミリーを削除するには、以下のいずれかのコマンドを使用します。結果は次のスクリーンショットに示されています。
hbase> alter 'education', NAME => 'f1', METHOD => 'delete'
hbase> alter 'education', 'delete' =>' guru99_1'
このコマンドでは、最初のステップで作成した guru99_1 という名前の列スペースを削除しようとしています。以下のスクリーンショットに示すように、テーブルスコープ属性を変更する方法と、テーブルスコープ属性を削除する方法の 2 つの手順が示されています。
Syntax: alter <'tablename'>, MAX_FILESIZE=>'132545224'
ステップ 1) MAX_FILESIZE、READONLY、MEMSTORE_FLUSHSIZE、DEFERRED_LOG_FLUSH などのテーブルスコープ属性を変更できます。これらは末尾に記述できます。たとえば、領域の最大サイズを 128MB またはその他のメモリ値に変更するには、このコマンドを使用します。
使用法:
- 上記のように、テーブルに対してスコープ属性としてMAX_FILESIZEを使用できます。
- MAX_FILESIZEで表される数値は、メモリ容量(バイト単位)を表します。
注:MAX_FILESIZEのテーブルスコープは、HBaseに存在するいくつかの属性によって決定されます。MAX_FILESIZEもテーブルスコープ属性に含まれます。
ステップ2)table_att_unsetメソッドを使用してテーブルスコープ属性を削除することもできます。以下のコマンドを参照してください。
alter 'education', METHOD => 'table_att_unset', NAME => 'MAX_FILESIZE'
- 上記のスクリーンショットは、スコープ属性付きで変更されたテーブル名を示しています。
- メソッド table_att_unset は、テーブルに存在する属性を解除するために使用されます。
- 2番目の例では、属性MAX_FILESIZEの設定を解除しています。
- このコマンドを実行すると、「education」テーブルからMAX_FILESIZE属性が解除されます。
変更ステータス
Syntax: alter_status 'education'
alter_statusの出力は以下のとおりです。
- このコマンドを使用すると、alterコマンドのステータスを取得できます。
- これは、更新されたスキーマを受け取ったテーブルの領域の数を示します。テーブル名を渡してください。
- 上記のスクリーンショットでは、1/1 の領域が更新されたと表示されています。これは、1 つの領域が更新されたことを意味します。その後、更新が成功すると、「完了」というコメントが表示されます。
データ操作コマンド
これらのコマンドは、テーブルへのデータの挿入、テーブルからのデータの取得、スキーマの削除など、データ操作を行うためにテーブル上で動作します。これらに含まれるコマンドは次のとおりです。
- 数量カウント
- 入れ
- 以上
- 削除
- すべて削除
- 切り捨て
- スキャン
これらのコマンドの使い方を例を用いて見ていきましょう。 HBaseデータの読み書き.
数量カウント
Syntax: count <'tablename'>, CACHE =>1000
- このコマンドは、テーブル内の行数を取得します。返される値は行数です。
- 現在の件数は、デフォルトでは1000行ごとに表示されます。
- カウント間隔は任意で指定できます。
- デフォルトのキャッシュサイズは10行です。
- 適切なキャッシュを設定すれば、countコマンドは高速に動作します。
例:
hbase> count 'guru99', CACHE=>1000
カウント結果は以下のとおりです。
この例では、「guru99」テーブルから一度に1000行を取得します。テーブルの行数が多い場合は、キャッシュの値を小さくすることができます。ただし、デフォルトでは一度に1行ずつ取得します。
hbase>count 'guru99', INTERVAL => 100000 hbase> count 'guru99', INTERVAL =>10, CACHE=> 1000
テーブル「guru99」に、例えばgのようなテーブル参照があるとします。以下のように、そのテーブル参照に対してcountコマンドを実行することもできます。
hbase>g.count INTERVAL=>100000 hbase>g.count INTERVAL=>10, CACHE=>1000
入れ
Syntax: put <'tablename'>,<'rowname'>,<'columnvalue'>,<'value'>
このコマンドは以下の目的で使用されます。
- 定義または指定されたテーブル、行、または列にセルの「値」を配置します。
- オプションでタイムスタンプを同期します。
例:ここでは、「guru99」テーブルのr1行目、c1列目に値を入力します。
hbase> put 'guru99', 'r1', 'c1', 'value', 10
以下のスクリーンショットに示すように、テーブル「guru99」に10、15、30の3つの値を格納しました。
テーブル「guru99」に、例えばgのようなテーブル参照があるとします。テーブル参照に対して、次のようなコマンドを実行することもできます。
hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
「guru99」に値を入力すると、上記のスクリーンショットのように出力されます。入力値がテーブルに正しく挿入されているかどうかを確認するには、「scan」コマンドを使用します。下のスクリーンショットでは、値が正しく挿入されていることがわかります。
Code 抜粋:練習用
create 'guru99', {NAME=>'Edu', VERSIONS=>213423443} put 'guru99', 'r1', 'Edu:c1', 'value', 10 put 'guru99', 'r1', 'Edu:c1', 'value', 15 put 'guru99', 'r1', 'Edu:c1', 'value', 30
コードスニペットから、私たちは以下のことを行っています。
- ここでは、「guru99」という名前のテーブルを作成し、列名を「Edu」とします。
- 「put」コマンドを使用することで、テーブル「guru99」の「Edu」列の行名r1に値を挿入します。
以上
Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}
ここ、 TIMERANGE、TIMESTAMP、VERSIONS、FILTERSなどのパラメータを含めることができます。このコマンドを使用すると、テーブル内の行またはセルの内容を取得できます。さらに、TIMESTAMP、TIMERANGE、VERSIONS、FILTERSなどの追加パラメータを追加して、特定の行またはセルの内容を取得することもできます。
以下のgetコマンドの出力は、行r1と列c1の値を返します。
例:-
hbase> get 'guru99', 'r1', {COLUMN => 'c1'}
テーブル「guru99」の場合、このコマンドを使用すると、上記のスクリーンショットに示すように、行r1と列c1の値が表示されます。
hbase> get 'guru99', 'r1'
テーブル「guru99」の場合、このコマンドを使用すると、行r1の値が表示されます。
hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}
このコマンドを使用すると、テーブル「guru99」の行r1の、時間範囲ts1からts2までの値が表示されます。
hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}
このコマンドを使用すると、テーブル「guru99」の行r1と列ファミリーc1、c2、c3の値が表示されます。
削除
Syntax:delete <'tablename'>,<'row name'>,<'column name'>
- このコマンドは、指定された行または列の表にあるセル値を削除します。
- 削除は、削除されたセルの座標と完全に一致していなければなりません。
- スキャン時に削除セルを使用すると、古いバージョンの値が削除されます。
例:以下の削除コマンドは、guru99 テーブルからセル r1、c1 を削除します。
hbase(main):)020:0> delete 'guru99', 'r1', 'c1''.
- 上記の実行により、テーブル「guru99」の列ファミリーc1から行r1が削除されます。
- テーブル「guru99」に、例えばgのようなテーブル参照があるとします。
- テーブル参照に対してもコマンドを実行できます。例えば、hbase> g.delete 'guru99', 'r1', 'c1'" のようにです。
すべて削除
Syntax: deleteall <'tablename'>, <'rowname'>
- このコマンドは、指定された行のすべてのセルを削除します。
- 構文内で、列名とタイムスタンプを任意で定義できます。
例:以下のdeleteallコマンドは、r1行目のすべてのセルを削除します。
hbase>deleteall 'guru99', 'r1', 'c1'
これにより、テーブル内のすべての行と列が削除されます。必要に応じて、列名を指定することもできます。
切り捨て
Syntax: truncate <tablename>
以下の truncate コマンドはテーブルを空にしますが、ping そのスキーマ:
HBaseテーブルを切り捨てた後、スキーマは残りますが、レコードは残りません。このコマンドは、以下の3つの機能を実行します。
- テーブルが既に存在する場合は、そのテーブルを無効にします。
- テーブルが既に存在する場合は削除します。
- 上記のテーブルを再作成します。
スキャン
Syntax: scan <'tablename'>, {Optional parameters}
このコマンドはテーブル全体をスキャンし、テーブルの内容を表示します。
- このスキャン コマンドにいくつかのオプションの仕様を渡して、システム内に存在するテーブルに関する詳細情報を取得できます。
- スキャナー仕様には、次の属性の 1 つ以上が含まれる場合があります。
- これらは、TIMERANGE、FILTER、TIMESTAMP、LIMIT、MAXLENGTH、COLUMNS、CACHE、STARTROW、およびSTOPROWです。
scan 'guru99'
スキャン結果は以下のとおりです。
上記のスクリーンショットでは、次のようになっています。
- これは、「guru99」テーブルとその列名および値を示しています。
- これは、単一の列値c1に対応する3つの行値r1、r2、r3で構成されます。
- 各行に関連付けられた値を表示します。
例:- scanコマンドのさまざまな使用例:
| Command | 使用法 |
|---|---|
| スキャン '.META.', {COLUMNS => 'info:regioninfo'} | これは、HBaseのテーブルに存在する列に関連するすべてのメタデータ情報を表示します。 |
| スキャン 'guru99', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'} | これは、テーブルguru99の内容とその列ファミリーc1およびc2を表示し、値を10に制限します。 |
| スキャン 'guru99'、{COLUMNS => 'c1'、TIMERANGE => [1303668804, 1303668904]} | これは、指定された時間範囲属性値の間に存在する値を持つ、列名c1のguru99の内容を表示します。 |
| 'guru99' をスキャン、{RAW => true、VERSIONS =>10} | このコマンドでは、RAW=> true は、テーブル guru99 に存在するすべてのセル値を表示するなどの高度な機能を提供します。 |
Code 例:まず、テーブルを作成し、テーブルに値を入力します。入力例は以下のスクリーンショットに示されています。
create 'guru99', {NAME=>'e', VERSIONS=>2147483647} put 'guru99', 'r1', 'e:c1', 'value', 10 put 'guru99', 'r1', 'e:c1', 'value', 12 put 'guru99', 'r1', 'e:c1', 'value', 14 delete 'guru99', 'r1', 'e:c1', 11
scanコマンドを実行すると:
Query: scan 'guru99', {RAW=>true, VERSIONS=>1000}
以下のような出力が表示されます。
上記のスクリーンショットに示されている出力には、以下の情報が含まれています。
- 属性RAW=>true、VERSIONS=>1000でguru99テーブルをスキャンしています。
- 列ファミリーと値を含む行を表示します。
- 3行目には、その列に存在していた削除された値が表示されています。
- 表示される出力はランダムであり、テーブルに入力した値と同じ順序になることはありません。
Cluster レプリケーションコマンド
- これらのコマンドは、HBaseのクラスタ設定モードで動作します。
- クラスターへのピアの追加と削除、およびレプリケーションの開始と停止には、一般的にこれらのコマンドが使用されます。
| Command | Functionality |
|---|---|
| 追加ピア | レプリケーション対象のピアをクラスタに追加します。 hbase> add_peer '3', zk1,zk2,zk3:2182:/hbase-prod |
| 削除ピア | 定義されたレプリケーション ストリームを停止し、ピアに関するすべてのメタデータ情報を削除します。 hbase>remove_peer '1' |
| start_replication | すべてのレプリケーション機能を再起動します。 hbase> start_replication |
| 停止レプリケーション | すべてのレプリケーション機能を停止します。 hbase>stop_replication |























