hbase 1.2.4 java_Hbase1.2.4 standlone模式安装以及基本概念

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

hbase standlone模式的安装

参考官方文档:http://hbase.apache.org/book.html#quickstart

新建hbase 目录,

➜  hbase pwd

/Users/xinxingegeya/IDE/hbase

然后把解压好的hbase 拷贝到当前的hbase目录下。

按照官方文档说明的,只需要如下配置,

hbase.rootdir

file:///Users/xinxingegeya/IDE/hbase/hbase

hbase.zookeeper.property.dataDir

/Users/xinxingegeya/IDE/hbase/zookeeper

注意这两个路径不必新建,会自动帮你建立。然后启动hbase。

➜ 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的基本概念

基本概念

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[])。

下面就用实例来说明一下上面的概念。

建表语句

hbase(main):003:0* create 'test', 'cf'

0 row(s) in 1.5090 seconds

=> Hbase::Table - test

test为表名,cf的列簇的名字。建表的时候必须指定表名和列簇的名字,可以有多个列簇。

插入数据语句,

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。

列簇和列的关系如下图所示,

6d0b35241459039622b16ef2b05cdcd5.png

每个列簇可以有不同的列。可以动态的增加列簇。

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=======

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值