【Hbase】hbase基本概念とhbase shell常用コマンド用法

10422 ワード

[転自]
http://www.cnblogs.com/flying5/archive/2011/09/15/2178064.html
1.概要
HBAseは、googleの論文「bigtable:構造化データの分散ストレージシステム」に由来する分散型、カラム向けのオープンソースデータベースです.HBAseはGoogle Bigtableのオープンソース実装であり、Hadoop HDFSをファイルストレージシステムとして利用し、Hadoop MapReduceを利用してHBAseの大量のデータを処理し、Zookeeperを協同サービスとして利用している.
2.HBAseのテーブル構造
HBAseはテーブル形式でデータを格納します.表は行と列で構成されています.カラムは、いくつかのカラムファミリー/カラムクラスタ(column family)に分割されます.
【Hbase】hbase基本概念和hbase shell常用命令用法
上の図に示すように、key 1、key 2、key 3は3つの記録の唯一のrow key値であり、column-family 1、column-family 2、column-family 3は3つの列族であり、各列族の下にはいくつかの列が含まれている.例えばcolumn−family 1という列族の下には、column 1とcolumn 2という名前の2つの列が含まれており、t 1:abc、t 2:gdxdfはrow key 1とcolumn−family 1−column 1によって一意に決定されるセルcellである.このcellにはabcとgdxdfの2つのデータがある.2つの値のタイムスタンプは異なり、それぞれt 1,t 2であり、hbaseはリクエスト者に最新の時間の値を返します.
これらの名詞の具体的な意味は以下の通りである.
  (1) Row Key
nosqlデータベースと同様にrow keyはレコードを取得するためのプライマリ・キーです.hbase tableのローにアクセスするには、次の3つの方法しかありません.
(1.1)単一row keyによるアクセス
(1.2)row keyのrangeを通過
(1.3)全表スキャン
Row key行キー(Row key)は任意の文字列(最大長64 KB、実際のアプリケーションでは通常10-100 bytes)であり、hbase内部ではrow keyはバイト配列として保存される.
格納する場合、データはRow keyの辞書順に並べて格納されます.keyを設計するときは、この特性を十分にソートして保存し、よく一緒に読むローを一緒に保存します.(位置依存性)
注意:
辞書順intソートの結果は,1,10100,11,12,13,14,15,16,17,18,19,2,20,21,...,9,91,92,93,94,95,96,97,98,99であった.整形の自然な順序を保つには、行キーを0で左に塗りつぶす必要があります.
行の1回の読み書きは原子操作です(1回の読み書きにかかわらず).この設計決定は、プログラムが同じローに対して同時更新操作を行う場合の動作をユーザに容易に理解させることができる.
(2)列族column family
hbaseテーブルの各カラムは、カラムファミリーに帰属します.カラムファミリーは、テーブルのschemaの一部(カラムではなく)であり、テーブルを使用する前に定義する必要があります.カラム名は、カラムファミリーを接頭辞として使用します.たとえばcourses:history、courses:mathはcoursesという列族に属します.
アクセス制御、ディスク、メモリの使用統計は、カラムファミリーレベルで行われます.実際のアプリケーションでは、カラムファミリーの制御権限は、異なるタイプのアプリケーションを管理するのに役立ちます.いくつかのアプリケーションでは、新しい基本データを追加できます.いくつかのアプリケーションでは、基本データを読み取り、継承されたカラムファミリーを作成できます.いくつかのアプリケーションでは、データの閲覧のみが許可されます(プライバシーのため、すべてのデータを閲覧できません).
(3)ユニットCell
HBAseでrowとcolumnsによって決定された貯蔵ユニットをcellと呼ぶ.{row key,column(=+