HBase シェル コマンドと例
Hadoop 上に HBase を正常にインストールすると、さまざまなコマンドを実行し、いくつかの操作を実行するための対話型シェルが提供されます。これらのコマンドを使用すると、データ テーブルに対して複数の操作を実行でき、データ ストレージの効率が向上し、クライアントによる柔軟な操作が可能になります。
HBase と対話するには XNUMX つの方法があります。
- HBase インタラクティブ シェル モードと
- 介して Java API
HBaseでは、インタラクティブシェルモードを使用して、テーブル操作、テーブル管理、データモデリングのためにHBaseと対話します。 Java API モデルを使用すると、HBase であらゆる種類のテーブルおよびデータ操作を実行できます。この両方の方法を使用して HBase と対話できます。
この2つの唯一の違いは Java API は Java コードを使用して HBase に接続し、シェル モードはシェル コマンドを使用して HBase に接続します。
先に進む前に、HBase の簡単なオーバーキャップ -
- HBase の用途 Hadoopの ファイルを大量のデータを保存するストレージ システムとして使用します。 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」です。
以下では、さまざまなパラメータを status コマンドに渡す方法を示しました。
以下のスクリーンショットを見ると、より良いアイデアが得られるでしょう。
hbase(main):001:0>status hbase(main):002:0>status 'simple' hbase(main):003:0>status 'summary' hbase(main):004:0> status 'detailed'
このコマンド status を実行すると、現在サーバーの数、停止中のサーバー、およびサーバーの平均負荷に関する情報が得られます。スクリーンショットでは次のような情報が表示されます。 ライブ サーバー 1 台、デッド サーバー 1 台、平均負荷 7.0000。
Syntax: version
- このコマンドは、コマンド モードで現在使用されている HBase のバージョンを表示します。
- version コマンドを実行すると、上記のような出力が得られます。
テーブルヘルプ
Syntax:table_help
このコマンドのガイドは、
- テーブル参照コマンドの使い方と使い方
- さまざまな HBase シェル コマンドの使用法とその構文が提供されます。
- 上のスクリーンショットでは、「」の構文が示されています。作成" と "get_table” コマンドとその使用法。 HBase でテーブルが作成されたら、これらのコマンドを使用してテーブルを操作できます。
- put、get などのテーブル操作コマンドやその他すべてのコマンド情報を提供します。
whoami
構文:
Syntax: Whoami
このコマンド「whoami」は、HBase クラスターから現在の HBase ユーザー情報を返すために使用されます。
などの情報を提供します
- HBase に存在するグループ
- ユーザー情報、たとえばこの場合「hduser」は、スクリーンショットに示すようにユーザー名を表します。
TTL(Time To Live) – 属性
HBase では、TTL を使用して列ファミリーに秒単位の時間値を設定できます。 有効期限に達すると、HBase は行を自動的に削除します。 この属性は、行のすべてのバージョン (現在のバージョンにも適用されます) に適用されます。
HBase で行に対してエンコードされた TTL 時間は UTC で指定されます。 この属性はテーブル管理コマンドで使用されます。
TTL 処理と列ファミリー TTL の重要な違いは以下のとおりです。
- セルの TTL は、秒ではなくミリ秒単位で表されます。
- セル TTL は、列ファミリー レベルの TTL 設定を超えてセルの実効寿命を延長することはできません。
テーブル管理コマンド
これらのコマンドを使用すると、プログラマは行と列ファミリーを含むテーブルとテーブル スキーマを作成できます。
以下はテーブル管理コマンドです
- 創造する
- リスト
- 説明する
- 無効にします
- すべて無効にします
- 有効にする
- 全て可能にする
- Drop
- ドロップオール
- Show_filters
- 年齢
- 変更ステータス
HBase でのさまざまなコマンドの使用法を例を挙げて見てみましょう。
創造する
Syntax: create <tablename>, <columnfamilyname>
例:-
hbase(main):001:0> create 'education' ,'guru99' 0 rows(s) in 0.312 seconds =>Hbase::Table – education
上記の例は、辞書やカラムファミリーごとの仕様に従って指定された名前で HBase にテーブルを作成する方法を説明しています。 これに加えて、いくつかのテーブルスコープ属性も渡すことができます。
テーブル「education」が作成されたかどうかを確認するには、 "リスト" 以下で説明するようにコマンドを実行します。
リスト
Syntax:list
- 「List」コマンドは、HBase に存在する、または HBase に作成されたすべてのテーブルを表示します。
- 上記のスクリーンショットに表示されている出力は、現在HBaseの既存のテーブルを表示しています。
- このスクリーンショットでは、HBase 内に合計 8 つのテーブルが存在することが示されています。
- オプションの正規表現パラメータを渡すことで、テーブルからの出力値をフィルタリングできます。
説明する
Syntax:describe <table name>
hbase(main):010:0>describe 'education'
このコマンドは、名前付きテーブルを説明します。
- 前述のテーブルに存在する列ファミリーに関する詳細情報が得られます。
- 今回の場合は、テーブル「教育」についての説明を与えます。
- 列ファミリ、関連するフィルター、バージョン、その他の詳細情報を含むテーブル名に関する情報が提供されます。
disable
Syntax: disable <tablename>
hbase(main):011:0>disable 'education'
- このコマンドは、指定されたテーブルの無効化を開始します
- テーブルを削除または削除する必要がある場合は、最初にテーブルを無効にする必要があります
ここで、上のスクリーンショットではテーブル教育を無効にしています。
すべて無効にします
Syntax: disable_all<"matching regex"
- このコマンドは、指定された正規表現に一致するすべてのテーブルを無効にします。
- 実装は delete コマンドと同じです (照合用の正規表現の追加を除く)
- テーブルが無効になると、ユーザーは HBase からテーブルを削除できるようになります。
- テーブルを削除またはドロップする前に、まずテーブルを無効にする必要があります
有効にする
Syntax: enable <tablename>
hbase(main):012:0>enable 'education'
- このコマンドは、指定されたテーブルの有効化を開始します。
- どのテーブルが無効になっても、以前の状態に戻すには、このコマンドを使用します。
- 最初のインスタンスでテーブルが無効になっており、削除またはドロップされていない場合、および無効になったテーブルを再利用したい場合は、このコマンドを使用してテーブルを有効にする必要があります。
- 上のスクリーンショットでは、「教育」テーブルを有効にしています。
show_filters
Syntax: show_filters
このコマンドは、ColumnPrefix Filter、TimestampsFilter、PageFilter、FamilyFilter など、HBase に存在するすべてのフィルタを表示します。
ドロップ
Syntax:drop <table name>
hbase(main):017:0>drop 'education'
ドロップコマンドについては以下の点に注意する必要があります
- HBase に存在するテーブルを削除するには、まずテーブルを無効にする必要があります
- HBase に存在するテーブルを削除するには、まずテーブルを無効にする必要があります
- したがって、最初にテーブルを削除するか削除するかは、disable コマンドを使用してテーブルを無効にする必要があります。
- 上のスクリーンショットでは、テーブル「教育」を削除しています。
- このコマンドを実行する前に、テーブル「教育」を無効にする必要があります。
ドロップオール
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コマンド操作を実行します。次のような操作を実行します。
- 単一の複数の列ファミリー名の変更
- テーブルから列ファミリー名を削除する
- テーブルでスコープ属性を使用するその他の操作
- 最大 99 つのセル バージョンを維持するために、テーブル 'education' の 'guru1_5' 列ファミリーを現在の値から変更または追加するには,
- 「education」は先ほどカラム名「guru99」で作成したテーブル名です
- ここでは、alter コマンドを使用して、列ファミリーのスキーマを guru99 から guru1_99 に変更しようとしています。
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 用に定義した XNUMX つの新しい列名です。
- このコマンドの使用方法は、前のスクリーンショットで確認できます。
- このステップでは、テーブルから列ファミリーを削除する方法を見ていきます。 テーブル「education」の列ファミリー「f1」を削除します。
以下のコマンドのいずれかを使用します。
hbase> alter 'education', NAME => 'f1', METHOD => 'delete'
hbase> alter 'education', 'delete' =>' guru99_1'
- このコマンドでは、最初のステップで作成した列スペース名 guru99_1 を削除しようとしています。
- 以下のスクリーン ショットに示すように、テーブル スコープ属性を変更する方法とテーブル スコープ属性を削除する方法の XNUMX つの手順が示されています。
Syntax: alter <'tablename'>, MAX_FILESIZE=>'132545224'
ステップ1) MAX_FILESIZE、READONLY、MEMSTORE_FLUSHSIZE、DEFERRED_LOG_FLUSH などのテーブル スコープの属性を変更できます。これらは最後に置くことができます。たとえば、領域の最大サイズを 128MB またはその他のメモリ値に変更するには、このコマンドを使用します。
使用法:
- 上記のようにテーブルをスコープ属性として MAX_FILESIZE を使用できます。
- MAX_FILESIZE で表される数値はメモリのバイト単位です。
NOTE: MAX_FILESIZE 属性テーブルのスコープは、HBase に存在するいくつかの属性によって決定されます。 MAX_FILESIZE もテーブル スコープ属性に含まれます。
ステップ2) table_att_unset メソッドを使用してテーブル スコープ属性を削除することもできます。 コマンドが表示された場合
alter 'education', METHOD => 'table_att_unset', NAME => 'MAX_FILESIZE'
- 上のスクリーン ショットは、スコープ属性を持つ変更されたテーブル名を示しています。
- table_att_unset メソッドは、テーブルに存在する属性の設定を解除するために使用されます。
- XNUMX 番目のインスタンスでは、属性 MAX_FILESIZE の設定を解除します。
- コマンドの実行後、単に「education」テーブルから MAX_FILESIZE 属性の設定が解除されます。
変更ステータス
Syntax: alter_status 'education'
- このコマンドを通じて、alter コマンドのステータスを取得できます。
- 更新されたスキーマパステーブル名を受け取ったテーブルの領域の数を示します。
- 上のスクリーンショットでは、1/1 領域が更新されたことが示されています。 これは、XNUMX つのリージョンを更新したことを意味します。 その後、成功すると完了したコメントが表示されます。
データ操作コマンド
これらのコマンドは、テーブルへのデータの挿入、テーブルからのデータの取得、スキーマの削除などのデータ操作に関連するテーブルに対して機能します。
これらのコマンドは次のとおりです。
- ワンランク上の
- 入れ
- 以上
- 削除
- すべて削除
- 切り捨て
- スキャン
これらのコマンドの使用法を例を挙げて見てみましょう。
ワンランク上の
Syntax: count <'tablename'>, CACHE =>1000
- このコマンドは、テーブル内の行数のカウントを取得します。 これによって返される値は行数です。
- 現在の数はデフォルトで 1000 行ごとに表示されます。
- カウント間隔はオプションで指定できます。
- デフォルトのキャッシュ サイズは 10 行です。
- Count コマンドは、適切なキャッシュが設定されている場合に高速に動作します。
例:
hbase> count 'guru99', CACHE=>1000
この例では、「Guru1000」テーブルから一度に 99 行をフェッチします。
テーブルがより多くの行で構成されている場合は、キャッシュをより低い値に設定できます。
ただし、デフォルトでは一度に XNUMX 行ずつフェッチされます。
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
- 以下のスクリーンショットに示すように、テーブル「guru10,15」に 30、99、XNUMX の XNUMX つの値を配置しました。
- テーブル「Guru99」に g のようなテーブル参照があるとします。 同様にテーブル参照に対してコマンドを実行することもできます
hbase> g.put 'guru99', 'r1', 'c1', 'value', 10
- 「guru99」に値を入力すると、出力は上のスクリーンショットのようになります。
入力値がテーブルに正しく挿入されているかどうかを確認するには、「scan」コマンドを使用します。 以下のスクリーンショットでは、値が正しく挿入されていることがわかります。
コードスニペット: 練習用
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」コマンドを使用して、テーブル「guru1」の列「Edu」の行名 r99 に値を配置します。
以上
Syntax: get <'tablename'>, <'rowname'>, {< Additional parameters>}
ここTIMERANGE、TIMESTAMP、VERSIONS、FILTERS が含まれます。
このコマンドを使用すると、テーブル内の行またはセルの内容を取得できます。 それに加えて、TIMESTAMP、TIMERANGE、VERSIONS、FILTERS などのパラメータを追加して、特定の行またはセルの内容を取得することもできます。
例:-
hbase> get 'guru99', 'r1', {COLUMN => 'c1'}
テーブル「guru99」の場合、上のスクリーン ショットに示すように、このコマンドを使用すると行 r1 と列 c1 の値が表示されます。
hbase> get 'guru99', 'r1'
テーブル「guru99」の行r1の値はこのコマンドを使用して表示されます。
hbase> get 'guru99', 'r1', {TIMERANGE => [ts1, ts2]}
テーブル「guru99」の場合、このコマンドを使用すると、時間範囲ts1とts1の行2の値が表示されます。
hbase> get 'guru99', 'r1', {COLUMN => ['c1', 'c2', 'c3']}
テーブル「guru99」の行r1と列ファミリのc1、c2、c3の値は、このコマンドを使用して表示されます。
削除
Syntax:delete <'tablename'>,<'row name'>,<'column name'>
- このコマンドは、定義されたテーブルの行または列のセル値を削除します。
- 削除は、削除されたセルの座標と正確に一致する必要があります。
- スキャン時にセルを削除すると、古いバージョンの値が抑制されます。
例:
hbase(main):)020:0> delete 'guru99', 'r1', 'c1''.
- 上記の実行により、テーブル「guru1」の列ファミリー c1 から行 r99 が削除されます。
- たとえば、g のようなテーブル参照を持つテーブル「guru99」があるとします。
- 次のようにテーブル参照に対してコマンドを実行することもできます hbase> g.「guru99」、「r1」、「c1」を削除します。
すべて削除
Syntax: deleteall <'tablename'>, <'rowname'>
- このコマンドは、指定された行内のすべてのセルを削除します。
- オプションで列名とタイムスタンプを構文に定義できます。
例:-
hbase>deleteall 'guru99', 'r1', 'c1'
これにより、テーブルに存在するすべての行と列が削除されます。 必要に応じて、その中で列名を言及できます。
切り捨て
Syntax: truncate <tablename>
hbase テーブルを切り詰めると、スキーマは表示されますが、レコードは表示されません。 このコマンドは 3 つの機能を実行します。 それらは以下にリストされています
- テーブルがすでに存在する場合は無効にします
- テーブルがすでに存在する場合は削除します
- 前述のテーブルを再作成します
スキャン
Syntax: scan <'tablename'>, {Optional parameters}
このコマンドはテーブル全体をスキャンし、テーブルの内容を表示します。
- このスキャン コマンドにいくつかのオプションの仕様を渡して、システム内に存在するテーブルに関する詳細情報を取得できます。
- スキャナー仕様には、次の属性の 1 つ以上が含まれる場合があります。
- これらは、TIMERANGE、FILTER、TIMESTAMP、LIMIT、MAXLENGTH、COLUMNS、CACHE、STARTROW、および STOPROW です。
scan 'guru99'
以下のスクリーンショットのような出力が表示されます
上のスクリーンショットでは
- 「guru99」テーブルに列名と値が表示されます
- 単一の列値 c1 に対する 2 つの行値 r3、r1、rXNUMX で構成されます。
- 行に関連付けられた値を表示します
例:-
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]} | 列名が c99 の guru1 の内容を、指定された時間範囲属性値の間に存在する値で表示します。 |
'guru99' をスキャン、{RAW => true、VERSIONS =>10} | このコマンド RAW=> true は、テーブル guru99 に存在するすべてのセル値を表示するなどの高度な機能を提供します。 |
コード例:
まずテーブルを作成し、テーブルに値を配置します
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=>99 を持つ guru1000 テーブルをスキャンしています
- 列ファミリーと値を含む行の表示
- 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 |
まとめ
HBase シェルと一般的なコマンドは、さまざまな種類のデータ操作、テーブル管理、およびクラスター レプリケーション コマンドに関する完全な情報を提供します。これらのコマンドを使用して、HBase にあるテーブルに対してさまざまな機能を実行できます。