工作中我自己总结的hbase文档,供初学者学习。看了这个,就不用去查什么文档了。(八)

2015-02-03 10:03:38 · 作者: · 浏览: 153
ilterString ?more information on this is available in the

FilterLanguage document attached to the HBASE-4176 JIRA

b.Using the entire package name of the filter.

还有一个CACHE_BLOCKS修饰词,开关scan的缓存的,默认是开启的(CACHE_BLOCKS=>true),可以选择关闭(CACHE_BLOCKS=>false)。

5) 删除指定数据

复制代码 代码如下:

delete‘scores','Jim','grade'

delete‘scores','Jim'

删除数据命令也没太多变化,只有一个:

hbase>delete ‘t1′, ‘r1′, ‘c1′, ts1

另外有一个deleteall命令,可以进行整行的范围的删除操作,慎用!

如果需要进行全表删除操作,就使用truncate命令,其实没有直接的全表删除命令,这个命令也是disable,drop,create三个命令组合出来的。

6) 修改表结构

复制代码 代码如下:

disable‘scores'

alter ‘scores',NAME=>'info'

enable‘scores'

alter命令使用如下(如果无法成功的版本,需要先通用表disable):

a、改变或添加一个列族:

hbase>alter ‘t1′, NAME => ‘f1′, VERSIONS => 5

b、删除一个列族:

复制代码 代码如下:

hbase>alter ‘t1′, NAME => ‘f1′, METHOD => ‘delete'

hbase>alter ‘t1′, ‘delete' => ‘f1′

c、也可以修改表属性如MAX_FILESIZE

MEMSTORE_FLUSHSIZE,READONLY,和 DEFERRED_LOG_FLUSH:

hbase>alter ‘t1′, METHOD => ‘table_att', MAX_FILESIZE => '134217728′

d、可以添加一个表协同处理器

hbase>alter ‘t1′, METHOD => ‘table_att', ‘coprocessor'=> ‘hdfs:///foo.jar|com.foo.FooRegionObserver|1001|arg1=1,arg2=2′

一个表上可以配置多个协同处理器,一个序列会自动增长进行标识。加载协同处理器(可以说是过滤程序)需要符合以下规则:

[coprocessorjar file location] | class name | [priority] | [arguments]

e、移除coprocessor如下:

hbase>alter ‘t1′, METHOD => ‘table_att_unset', NAME => ‘MAX_FILESIZE'

hbase>alter ‘t1′, METHOD => ‘table_att_unset', NAME => ‘coprocessor$1′

f、可以一次执行多个alter命令:

hbase>alter ‘t1′, {NAME => ‘f1′}, {NAME => ‘f2′, METHOD => ‘delete'}

7) 统计行数:

复制代码 代码如下:

hbase>count ‘t1′

hbase>count ‘t1′, INTERVAL => 100000

hbase>count ‘t1′, CACHE => 1000

hbase>count ‘t1′, INTERVAL => 10, CACHE => 1000

count一般会比较耗时,使用mapreduce进行统计,统计结果会缓存,默认是10行。统计间隔默认的是1000行(INTERVAL)。

8) disable 和 enable 操作

很多操作需要先暂停表的可用性,比如上边说的alter操作,删除表也需要这个操作。disable_all和enable_all能够操作更多的表。

9) 表的删除

先停止表的可使用性,然后执行删除命令。

drop ‘t1′

以上是一些常用命令详解,具体的所有hbase的shell命令如下,分了几个命令群,看英文是可以看出大概用处的,详细的用法使用help “cmd” 进行了解。

复制代码 代码如下:

COMMANDGROUPS:

Groupname: general

Commands:status, version

Groupname: ddl

Commands:alter, alter_async, alter_status, create, describe, disable, disable_all, drop,drop_all,

enable,enable_all, exists, is_disabled, is_enabled, list, show_filters

Groupname: dml

Commands:count, delete, deleteall, get, get_counter, incr, put, scan, truncate

Groupname: tools

Commands:assign, balance_switch, balancer, close_region, compact, flush, hlog_roll,major_compact,

move,split, unassign, zk_dump

Groupname: replication

Commands:add_peer, disable_peer, enable_peer, list_peers, remove_peer,start_replication,

stop_replication

Groupname: security

Commands:grant, revoke, user_permission

10) hbase shell脚本

既然是shell命令,当然也可以把所有的hbase shell命令写入到一个文件内,想linux shell脚本程序那样去顺序的执行所有命令。如同写linux shell,把所有hbase shell命令书写在一个文件内,然后执行如下命令即可:

复制代码 代码如下:

$hbase shell test.hbaseshell

六、JAVA操作HBASE方面

1) 连接原理和配置

HBase Master是服务器负责管理所有的HRegion服务器,HBase Master并不存储HBase服务器的任何数据,HBase逻辑上的表可能会划分为多个HRegion,然后存储在HRegion Server群中,HBase Master Server中存储的是从数据到HRegion Server的映射。

一台机器只能运行一个HRegion服务器,数据的操作会记录在Hlog中,在读取数据时候,HRegion会先访问Hmemcache缓存,如果 缓存中没有数据才回到Hstore中上找,没一个列都会有一个Hstore集合,每个Hstore集合包含了很多具体的HstoreFile文件,这些文 件是B树结构的,方便快速读取。

再看下HBase数据物理视图如下:

Row Key

Timestamp

Column Family

URI

Parser

r1

t3

url=http: