HBase 快速学习 笔记
概述
特性
Hbase
是一种NoSQL
数据库,这意味着它不像传统的RDBMS
数据库那样支持SQL
作为查询语言。Hbase
是一种分布式存储的数据库,技术上来讲,它更像是分布式存储而不是分布式数据库,它缺少很多RDBMS
系统的特性,比如列类型,辅助索引,触发器,和高级查询语言等待。那Hbase
有什么特性呢?如下:
- 强读写一致,但是不是“
最终一致性
”的数据存储,这使得它非常适合高速的计算聚合 - 自动分片,通过
Region
分散在集群中,当行数增长的时候,Region
也会自 - 动的切分和再分配
- 自动的故障转移
Hadoop/HDFS
集成,和HDF
S开箱即用,不用太麻烦的衔接- 丰富的“简洁,高效”
API
,Thrift/REST API
,ava API
- 块缓存,布隆过滤器,可以高效的列查询优化
- 操作管理,
Hbase
提供了内置的web
界面来操作,还可以监控JMX
指标
什么时候用Hbase?
Hbase
不适合解决所有的问题:
- 首先数据库量要足够多,如果有十亿及百亿行数据,那么
Hbase
是一个很好* 的选项,如果只有几百万行甚至不到的数据量,RDBMS
是一个很好的选择。因为数据量小的话,真正能工作的机器量少,剩余的机器都处于空闲的状态 - 其次,如果你不需要辅助索引,静态类型的列,事务等特性,一个已经用
RDBMS
的系统想要切换到Hbase
,则需要重新设计系统。 - 最后,保证硬件资源足够,每个
HDFS
集群在少于5
个节点的时候,都不能表现的很好。因为HDFS
默认的复制数量是3
,再加上一个NameNode
。
Hbase
在单机环境也能运行,但是请在开发环境的时候使用。
架构
命令
创建命名空间
create_namespace
create_namespace "命名空间"
创建表
create
create "表名","列蔟"
namespace create
这里命名空间需要提前创建好
create "命名空间:表名","列蔟"
插入数据
put
put '表名','行标签','列蔟:列名',"数据"
这里行标签
要唯一,要不然原数据会被覆盖。
获取数据
get
get '表名','行标签'[,'列蔟:列名'] [条件]
通过行标签
进行查找数据
带上 '列蔟:列名'
查询
scan
scan '表名' [条件]
表行数
count
count '表名' [条件]
表数据删除
delete
delete '表名','行标签','列蔟:列名' [条件]
删除列
deleteall
deleteall '表名','行标签' [条件]
删除行
truncate
truncate '表名'
清除表数据(类似删除表重新创建,配置会丢失)
表删除
delete
drop '表名'
注意:删表需要前置操作
disable '表名'
参考文章
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »