art

图片 1

hbase(main):010:0> put 'scores','baoniu','course:math','89'

Tom column=course:math, timestamp=1224726377027, value=87

(8) 给baoniu这一行的数据的列族course添加一列<math,89>

0 row(s) in 0.0040 seconds

 baoniu                                  column=course:math, timestamp=1316100234410, value=89                                                             

hbase(main):006:0> put \’scores\’, \’Tom\’, \’course:math\’,
\’87\’

(1) 建立一个表格scores  具有两个列族grad 和courese

3 row(s) in 0.0070 seconds

 

hbase(main):007:0> put \’scores\’, \’Tom\’, \’course:art\’,
\’97\’

(1) Row Key

Tom column=course:art, timestamp=1224726394286, value=97

DESCRIPTION                                                 ENABLED                                              

这里grad对于表来说是一个列,course对于表来说是一个列族,这个列族由两个列组成:math和art,当然我们可以根据我们的需要在course中建立更多的列族,如computer,physics等相应的列添加入course列族.

hbase表中的每个列,都归属与某个列族。列族是表的chema的一部分(而列不是),必须在使用表之前定义。列名都以列族作为前缀。例如courses:history
, courses:math 都属于 courses 这个列族。

0 row(s) in 0.0040 seconds

以网上的一个学生成绩表的例子来演示hbase的用法。

hbase(main):004:0> describe \’scores\’

column3

Jerry column=course:art, timestamp=1224726424967, value=80

column1

{NAME => \’scores\’, IS_ROOT => \’false\’, IS_META =>
\’false\’, FAMILIES => }

 

9,给Jerry这一行的数据的列族添加一列

 

1 row(s) in 0.0210 seconds

89

course:math timestamp=1224726377027, value=87

hbase(main):013:0> scan 'scores'

对于HBase使用的类似与BigTable的技术我们这里就不仔细描述,可以参考google的论文以及网上的一些相关资料.另外,HBase的配置在HBase的官方文档中有很详细的描述.可以参见相关文档.

key3

下面是学生的成绩表:

t1:taobao.com

Tom column=grade:, timestamp=1224726360727, value=1

Row key行键 (Row key)可以是任意字符串(最大长度是
64KB,实际应用中长度一般为 10-100bytes),在hbase内部,row
key保存为字节数组。

1, 建立一个表格 scores 具有两个列族grad 和courese

4

hbase(main):012:0> scan \’scores\’

 

2,查看当先HBase中具有哪些表

80

HBase
是Hadoop的一个子项目,HBase采用了Google
BigTable的稀疏的,面向列的数据库实现方式的理论,建立在hadoop的hdfs上,一方面里用了hdfs的高可靠性和可伸缩行,另外一方面里用了BigTable的高效数据组织形式.可以说HBase为海量数据的real-time相应提供了很好的一个开源解决方案.据说在某运营商中使用类似于
BigTable(个人猜测应该就是HBase)的技术可以在两秒时间内从2TB数据中查找到某条话费记录.而这是原来该运营商使用Oracle数据库所无法解决的问题.

 zkb                                     column=course:art, timestamp=1316100110921, value=87                                                              

0 row(s) in 4.1610 seconds

Row Key

有了上面的想法和需求,我们就可以在HBase中建立相应的数据表啦!

5

hbase(main):002:0> create \’scores\’, \’grade\’, \’course\’

(5) 给zkb这一行的数据的列族course添加一列<math,97>

Jerry column=grade:, timestamp=1224726404965, value=2

HBase是一个分布式的、面向列的开源数据库,源于google的一篇论文《bigtable:一个结构化数据的分布式存储系统》。HBase是Google
Bigtable的开源实现,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop
MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服务。

Tom 1 87 97

行的一次读写是原子操作
(不论一次读写多少列)。这个设计决策能够使用户很容易的理解程序在对同一个行进行并发更新操作时的行为。

hbase(main):011:0> get \’scores\’, \’Tom\’

87

4, 加入一行数据,行名称为 Tom 列族grad的列名为”” 值位1

  1. 简介

0 row(s) in 0.0050 seconds

(11) 查看scores表中所有数据

scores

t2:gdxdf

COLUMN CELL

  1. HBase shell的基本用法

11,查看scores表中所有数据

 

0 row(s) in 0.0070 seconds

访问控制、磁盘和内存的使用统计都是在列族层面进行的。实际应用中,列族上的控制权限能帮助我们管理不同类型的应用:我们允许一些应用可以添加新的基本数
据、一些应用可以读取基本数据并创建继承的列族、一些应用则只允许浏览数据(甚至可能因为隐私的原因不能浏览所有数据)。

hbase(main):010:0> put \’scores\’, \’Jerry\’, \’course:art\’,
\’80\’

 zkb                                     column=grade:, timestamp=1316099975625, value=5                                                                   

Jerry column=course:math, timestamp=1224726416145, value=100

 

1 row(s) in 0.0130 seconds

(10) 查看scores表中zkb的相关数据

course:art timestamp=1224726394286, value=97

hbase(main):001:0> create 'scores','grade''course'

0 row(s) in 0.0030 seconds

course

Jerry 2 100 80

字典序对int排序的结果是1,10,100,11,12,13,14,15,16,17,18,19,2,20,21,…,9,91,92,93,94,95,96,97,98,99。要保持整形的自然序,行键必须用0作左填充。

grade: timestamp=1224726360727, value=1

key2

name grad course:math course:art

总结下,hbase
shell常用的操作命令有create,describe,disable,drop,list,scan,put,get,delete,deleteall,count,status等,通过help可以看到详细的用法。

hbase(main):008:0> put \’scores\’, \’Jerry\’, \’grade:\’,
\’2\’

0 row(s) in 0.4780 seconds

hbase(main):009:0> put \’scores\’, \’Jerry\’, \’course:math\’,
\’100\’

(7) 加入一行数据,行名称为baoniu 列族grad的列名为”” 值为4

3,查看表的构造

1 row(s) in 0.0270 seconds

0 row(s) in 0.0030 seconds

key1

hbase(main):005:0> put \’scores\’, \’Tom\’, \’grade:\’, \’1\’

 baoniu                                  column=grade:, timestamp=1316100178609, value=4                                                                   

这里我们用一个学生成绩表作为例子,对HBase的基本操作和基本概念进行讲解:

 baoniu                                  column=course:art, timestamp=1316100293784, value=80                                                              

ROW COLUMN+CELL

column-family1

6,给Tom这一行的数据的列族添加一列

COLUMN                     CELL                                                                                                              

hbase(main):003:0> list

(3) 查看表的构造

6 row(s) in 0.0410 seconds

2 row(s) in 0.0470 seconds

5,给Tom这一行的数据的列族添加一列

  1. HBase的表结构

HBase提供了一个类似于mysql等关系型数据库的shell.通过该shell我们可以对HBase的内的相关表以及列族进行控制和处理.HBase
shell的help命令比较详细的列出了HBase所支持的命令.具体使用方法可以参见其文档.

t3:hello

8,给Jerry这一行的数据的列族添加一列

(1.3) 全表扫描

7, 加入一行数据,行名称为 Jerry 列族grad的列名为”” 值位2

 COMPRESSION => 'NONE', VERSIONS => '3', TTL => '2147483647', BLOCKSIZE => '65536', IN_MEMORY => 'fal                                                      

10,查看scores表中Tom的相关数据

0 row(s) in 0.0330 seconds

每个cell都保存着同一份数据的多个版本。版本通过时间戳来索引。时间戳的类型是
64位整型。时间戳可以由hbase(在数据写入时自动
)赋值,此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值。如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。每个
cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。

math

97

column-family2

t1:dfdasddsf

t2:world

column2

hbase(main):017:0> scan 'scores',{COLUMNS => 'course'}
2 row(s) in 0.0350 seconds

(1.1) 通过单个row key访问

hbase(main):011:0> put 'scores','baoniu','course:art','80'

baoniu

(2) 查看当前HBase中具有哪些表

t2:dfdsfa

hbase基本概念和hbase shell常用命令用法

hbase(main):008:0> put 'scores','zkb','course:art','87'
hbase(main):012:0> get 'scores','zkb'

(12) 查看scores表中所有数据courses列族的所有数据

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注