开发者学堂课程【HBase入门教程:HBase伪分布式、命令_3】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/397/detail/5069
HBase伪分布式、命令_3
目录
一、伪分布式讲解
一、伪分布式讲解
flush 是做什么的呢?之前在讲解 start 的时候,star t有 memory start 和 start fill,memory start 是会掉一个flash cash 进程,如果是强制让它手动发生就是flash。
在 ddl中,create 是创建表,那么怎么用呢?
输入 create 可以直接回车,得到 wrong number of arguments (0 for 1),报错了,是因为没有加参数,但是它会将用法罗列出来。这里选择第三条举例,这里创建了一个表,这个表叫做 t1,f1、f2、f3是列组。要创建表,一定要先把列组给出,后面再根据需求动态的修改。
Here is some help for this command :
Creates a table. Pass a table name, and a set of column family
specifications (at least one), and
,optionally, table configuration.
Column specification can be a simple string (name), or a dictionary
(dictionaries are described below in main help output)
,necessarily
including NAME attribute.
Examples :
Create a table with namespace=ns1 and table qualifier=t1
hbase>create' 'ns1:t1 ', {NAME => 'f1', VERSIONS=>5}
Create a table with namespace=default and table qualifier=t1
hbase> create 't1'
,{NAME => 'f1',{NAME => 'f2'},{NAME => 'f3'}
hbase> # The above in shorthand would be the following:
hbase create‘t1'
,‘f1', ‘f2',‘f3'
hbase> create 't1', {NAME > "f1'
,VERSIONS => 1,TTL =2592000,BLOCKCACHE = true}
hbase> create ‘t1'
,{NANE => "f1', CONFIGURATION =>{'hbase.hstore.blockingStoreFiles'=>‘10'}}
输入 create ‘psn’,’cf1’,’cf2’创建表得到0 row(s) in 1.0210 seconds,输入 list 查看得出:
TABLE
psn
1 row(s) in 0.0180 seconds
输入 describe ‘psn’查看表描述得出:
Table psn is ENABLED
psn
COLUMN FAMILIES DESCRIPTION
{NAME => ‘cf1’, DATA_BLOCK_ENCODING => ‘NONE’
,BLOONFILTER =>’ROM’,REPLITCATION_SCOPE=>‘0’’,VERSIONS =1', COMPRESSION =>‘NONE’,MIN_VERSIONS=>‘0',TTL=>‘FOREVER’,KEP DELETED CELLS => ‘FALSE’,BLOCKSIZE => ‘65536',INNENORY => ‘false’, BLOCKCACHE=’true’}
{NAME => ‘cf2’, DATA_BLOCK_ENCODING => ‘NONE’
,BLOONFILTER =>’ROM’,REPLITCATION_SCOPE=>‘0’’,VERSIONS =1', COMPRESSION =>‘NONE’,MIN_VERSIONS=>‘0',TTL=>‘FOREVER’,KEP DELETED CELLS => ‘FALSE’,BLOCKSIZE => ‘65536',INNENORY => ‘false’, BLOCKCACHE=’true’}
在这里面有一个 VERSIONS,就是来标注最大版本数的;MIN_VERSIONS 就是最小版本数;TTL 即 time to live,存活时间,默认是 forever,可以手动删除;BLOCKCACHE 是读缓存,默认启用读缓存。
创建表之后需要插入数据:输入 put 回车它会给出例子,这里第二个例子中的’t1’对应的 table,’r1’对应的row,’c1’对应的列,value 对应的值。
hbase(main):008:0> put
ERROR: wrong number of arguments (0 for 4)
Here is some help for this command:
Put a cell 'value' at specified table/row/column and optionally
timestamp coordinates. To put a cell value into table 'ns1:tl' or 't1'
at row 'rl' under column 'cl' marked with the time 'ts1', do:
hbase> put 'ns1:t1', 'r1', 'c1', 'value'
hbase> put 't1', 'r1', 'c1', 'value'
hbase> put 't1', 'r1', 'c1', 'value', ts1
hbase> put 't1', 'r1', 'c1', 'value'
,{ATTRIBUTES=> {'mykey'=>'myvalue'}}
hbase> put 't1'
,'r1', 'c1','value', ts1,{ATTRIBUTES=>{'mykey'=>'myvalue'}}
hbase> put 't1', 'r1', 'c1', 'value', ts1,{VISIBILITY=>'PRIVATE SECRET'}
输入 put ‘psn’,‘0001’,’cf1:name’,’xiaoming’回车得到0 row(s) in 0.1580 seconds,再输入 put ‘psn’,‘0001’,’cf1:sex’,’boy’回车得到0 row(s) in 0.0120 seconds。这里插入了一行数据,两个单元格。输入 scan ‘psn’回车,得到:
ROW COLUMN+CELL
0001 column=cf1:name, timestamp=1478662294079, value=xiaoming
0001 column=cf1:sex, timestamp=1478662311059,value=boy
1 row(s) in 0.0240 seconds
可以看出这里的一行数据中 row 对应的是0001;再看列,是以列组和列名组成的,每一个单元格对应的都有一个时间丛来标记这个单元格的版本;最后面就是代表的值,这个就是 scan。scan 是全部的扫描,使用的时候要慎重。比如大数据中的数据库,一张表里的数据很大很大,而需要的只有几条,那么扫描就会很费时间。所以可以使用 get 来查询个别数据。比如这里输入 get ‘psn’,‘0001’,’cf1:name’回车得到:
COLUMN CELL
cf1:name timestamp=1478662294079, value=xiaoming
1 row(s) in 0.0160 seconds
可以看到把一个单元格取出来了。
若再向 psn 中赋值,输入 put ‘psn’,‘0001’,’cf1:name’,’lilei’回车,再 get ‘psn’,‘0001’,’cf1:name’回车,于是就得到了:
COLUMN CELL
cf1:name timestamp=1478662547816, value=lilei
1 row(s) in 0.0090 seconds
根据时间版本,xiaoming 时间版本在下面,lilei 是高版本在上面。但是创建表的时候最大版本数 version 是1,所以上面 lilei 这条是有效的数据,下面的是失效的数据,并且 get 只查最新的一条,下面的数据在合并的时候才会把失效或者过期的数据删掉。