Hbase理论与操作

1、结构

 数据库以 region 的形式存在
 支持 HDFS 文件系
 使用 WAL(Write-Ahead Logs)存储日志
 参考系统是 Zookeeper
 使用行键(row key)
 支持分片
 使用行、列、列族和单元格

2、功能

 支持向外扩展
 使用 API 和 MapReduce 来访问 HBase 表数据
 面向列,即每一列都是一个连续的单元
 数据总量不依赖具体某台机器,而取决于机器数量
 HBase 不支持 ACID(Atomicity、Consistency、Isolation、Durability)
 适合结构化数据和非结构化数据
 一般都是分布式的
 HBase 不支持事务
 

3、Hbase组件的结构解析

 HMaster
功能:
1. 监控 RegionServer
2. 处理 RegionServer 故障转移
3. 处理元数据的变更
4. 处理 region 的分配或移除
5. 在空闲时间进行数据的负载均衡
6. 通过 Zookeeper 发布自己的位置给客户
 RegionServe
功能:
7. 负责存储 HBase 的实际数据
8. 处理分配给它的 Region
9. 刷新缓存到 HDFS
10. 维护 HLog
11. 执行压缩
12. 负责处理 Region 分片
13. Write-Ahead logs
HBase 的修改记录,当对 HBase 读写数据的时候,数据不是直接写进磁盘,它
会在内存中保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内
存中可能有更高的概率引起数据丢失,为了解决这个问题,数据会先写在一个叫
做 Write-Ahead logfile 的文件中,然后再写入内存中。所以在系统出现故障
的时候,数据可以通过这个日志文件重建。 
14. HFile
这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。
15. Store
HFile 存储在 Store 中,一个 Store 对应 HBase 表中的一个列族。
16. MemStore
顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据
保存在 WAL 中之后,RegsionServer 会在内存中存储键值对。
17. MemStore
顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据
保存在 WAL 中之后,RegsionServer 会在内存中存储键值对。

4、shell 的基本操作

1) 添加操作
18. 进入 HBase 客户端命令操作界面
$ bin/hbase shell
19. 查看帮助命令
hbase(main):001:0> help
20. 查看当前数据库中有哪些表
hbase(main):002:0> list
21. 创建一张表
创建 user 表,包含 info、data 两个列族
hbase(main):010:0> create 'user', 'info', 'data' 或者
hbase(main):010:0> create 'user', {NAME => 'info', VERSIONS => '3'},{NAME => 'data'}
22. 添加数据操作
向 user 表中插入信息,row key 为 rk0001,列族 info 中添加 name 列标示
符,值为 zhangsan
hbase(main):011:0> put 'user', 'rk0001', 'info:name', 'zhangsan'user 表中插入信息,row key 为 rk0001,列族 info 中添加 gender 列标
示符,值为 female
hbase(main):012:0> put 'user', 'rk0001', 'info:gender', 'female'user 表中插入信息,row key 为 rk0001,列族 info 中添加 age 列标示符,
值为 20
hbase(main):013:0> put 'user', 'rk0001', 'info:age', 20user 表中插入信息,row key 为 rk0001,列族 data 中添加 pic 列标示符,
值为 picture
hbase(main):014:0> put 'user', 'rk0001', 'data:pic', 'picture

2) 查询操作
23. 通过 rowkey 进行查
获取 user 表中 row key 为 rk0001 的所有信息
hbase(main):015:0> get 'user', 'rk0001' 2. 查看 rowkey 下面的某个列族的信息
获取 user 表中 row key 为 rk0001,info 列族的所有信息
hbase(main):016:0> get 'user', 'rk0001', 'info' 3. 查看 rowkey 指定列族指定字段的值
获取 user 表中 row key 为 rk0001,info 列族的 name、age 列标示符的信息
hbase(main):017:0> get 'user', 'rk0001', 'info:name', 'info:age' 4. 查看 rowkey 指定多个列族的信息
获取 user 表中 row key 为 rk0001,info、data 列族的信息
hbase(main):018:0> get 'user', 'rk0001', 'info', 'data' 或者这样写
hbase(main):019:0> get 'user', 'rk0001', {COLUMN => ['info', 'data']}
或者这样写
hbase(main):020:0> get 'user', 'rk0001', {COLUMN => ['info:name', 'data:pic']}
5. 指定 rowkey 与列值查询
获取 user 表中 row key 为 rk0001,cell 的值为 zhangsan 的信息
hbase(main):030:0> get 'user', 'rk0001', {FILTER => "ValueFilter(=, 'binary:zhangsa
n')"}
6. 指定 rowkey 与列值模糊查询
获取 user 表中 row key 为 rk0001,列标示符中含有 a 的信息
hbase(main):031:0> get 'user', 'rk0001', {FILTER => "(QualifierFilter(=,'substring:
a'))"}
继续插入一批数据
hbase(main):032:0> put 'user', 'rk0002', 'info:name', 'fanbingbing'
hbase(main):033:0> put 'user', 'rk0002', 'info:gender', 'female'
hbase(main):034:0> put 'user', 'rk0002', 'info:nationality', '中国'
hbase(main):035:0> get 'user', 'rk0002', {FILTER => "ValueFilter(=, 'binary:中国')"}
 7. 查询所有数据
查询 user 表中的所有信息
scan 'user' 8. 列族查询
查询 user 表中列族为 info 的信息
scan 'user', {COLUMNS => 'info'}
scan 'user', {COLUMNS => 'info', RAW => true, VERSIONS => 5}
scan 'user', {COLUMNS => 'info', RAW => true, VERSIONS => 3}
9. 多列族查询
查询 user 表中列族为 info 和 data 的信息
scan 'user', {COLUMNS => ['info', 'data']}
scan 'user', {COLUMNS => ['info:name', 'data:pic']}
10.指定列族与某个列名查询
查询 user 表中列族为 info、列标示符为 name 的信息
scan 'user', {COLUMNS => 'info:name'}
11.指定列族与列名以及限定版本查询
查询 user 表中列族为 info、列标示符为 name 的信息,并且版本最新的 5 个
scan 'user', {COLUMNS => 'info:name', VERSIONS => 5}
12.指定多个列族与按照数据值模糊查询
查询 user 表中列族为 info 和 data 且列标示符中含有 a 字符的信息
scan 'user', {COLUMNS => ['info', 'data'], FILTER => "(QualifierFilter(=,'substring:
a'))"}
13.rowkey 的范围值查询
查询 user 表中列族为 info,rk 范围是(rk0001, rk0003)的数据
scan 'user', {COLUMNS => 'info', STARTROW => 'rk0001', ENDROW => 'rk0003'}
14.指定 rowkey 模糊查询
查询 user 表中 row key 以 rk 字符开头的
scan 'user',{FILT
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值