Hbase1.2.4 standlone模式安裝以及基本概念

Hbase1.2.4 standlone模式安裝以及基本概念html

hbase standlone模式的安裝


參考官方文檔:http://hbase.apache.org/book.html#quickstartapache

新建hbase 目錄,數組

➜  hbase pwd
/Users/xinxingegeya/IDE/hbase


而後把解壓好的hbase 拷貝到當前的hbase目錄下。bash

按照官方文檔說明的,只須要以下配置,性能

   <property>
        <name>hbase.rootdir</name>
        <value>file:///Users/xinxingegeya/IDE/hbase/hbase</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/Users/xinxingegeya/IDE/hbase/zookeeper</value>
    </property>

注意這兩個路徑沒必要新建,會自動幫你創建。而後啓動hbase。ui

➜  bin pwd
/Users/xinxingegeya/IDE/hbase/hbase-1.2.4/bin
➜  bin ./start-hbase.sh
starting master, logging to /Users/xinxingegeya/IDE/hbase/hbase-1.2.4/logs/hbase-xinxingegeya-master-Yale-Li.out
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0

 

hbase的基本概念

基本概念spa

Row key

行主鍵, HBase不支持條件查詢和Order by等查詢,讀取記錄只能按Row key(及其range)或全表掃描,所以Row key須要根據業務來設計以利用其存儲排序特性(Table按Row key字典序排序如1,10,100,11,2)提升性能。

=====
Column Family(列族)

在表建立時聲明,每一個Column Family爲一個存儲單元。

=====
Column(列)

HBase的每一個列都屬於一個列族,以列族名爲前綴,如列article:title和article:content屬於article列族,author:name和author:nickname屬於author列族。

Column不用建立表時定義便可以動態新增,同一Column Family的Columns會羣聚在一個存儲單元上,並依Column key排序,所以設計時應將具備相同I/O特性的Column設計在一個Column Family上以提升性能。

=====
Timestamp

HBase經過row和column肯定一份數據,這份數據的值可能有多個版本,不一樣版本的值按照時間倒序排序,即最新的數據排在最前面,查詢時默認返回最新版本。Timestamp默認爲系統當前時間(精確到毫秒),也能夠在寫入數據時指定該值。

=====
Value

每一個值經過4個鍵惟一索引,TableName+RowKey+ColumnKey+Timestamp=>value

=====
存儲類型

TableName 是字符串
RowKey 和 ColumnName 是二進制值(Java 類型 byte[])
Timestamp 是一個 64 位整數(Java 類型 long)
value 是一個字節數組(Java類型 byte[])。

 

下面就用實例來講明一下上面的概念。設計

建表語句code

hbase(main):003:0* create 'test', 'cf'
0 row(s) in 1.5090 seconds

=> Hbase::Table - test

test爲表名,cf的列簇的名字。建表的時候必須指定表名和列簇的名字,能夠有多個列簇。xml

插入數據語句,

hbase(main):005:0> put 'test','row1','cf:a','value1'
0 row(s) in 0.2070 seconds
hbase(main):009:0* put 'test','row2','cf:b','value2'
0 row(s) in 0.0040 seconds
hbase(main):010:0> put 'test','row3','cf:c','value3'
0 row(s) in 0.0090 seconds

上面的幾個數據依次是:表名,row key ,列簇:列名,值。

其中,cf:a , cf:b , cf:c 表示a , b , c三列都屬於同一個列簇cf,可是是不一樣的三列,列的名字分別爲 a , b , c。

scan 和 get 查詢命令

hbase(main):012:0> scan 'test'
ROW                                                                   COLUMN+CELL
 row1                                                                 column=cf:a, timestamp=1481531060401, value=value1
 row2                                                                 column=cf:b, timestamp=1481531083332, value=value2
 row3                                                                 column=cf:c, timestamp=1481531091578, value=value3
3 row(s) in 0.0280 seconds

hbase(main):013:0> get 'test','row1'
COLUMN                                                                CELL
 cf:a                                                                 timestamp=1481531060401, value=value1
1 row(s) in 0.0640 seconds

get命令 的參數爲 表名和row key。

 

列簇和列的關係以下圖所示,

每一個列簇能夠有不一樣的列。能夠動態的增長列簇。

hbase(main):018:0> describe 'test'
Table test is ENABLED
test
COLUMN FAMILIES DESCRIPTION
{NAME => 'cf', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
1 row(s) in 0.1710 seconds

hbase(main):019:0> alter 'test' , NAME => 'cf2'
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 2.0880 seconds

hbase(main):020:0> describe 'test'
Table test is ENABLED
test
COLUMN FAMILIES DESCRIPTION
{NAME => 'cf', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
{NAME => 'cf2', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
2 row(s) in 0.0990 seconds

如今就有了兩個列簇,cf 和 cf2 。

=======END=======

相關文章
相關標籤/搜索