目录
1、概念介绍
2、原理图
3、基本命令
4、java远程连接hbase
-
列(column)是最基本的存储单位
列的名称规范:列族名:列名
hbase 会尽量将属于同一个列族的列放在一台机器上面 -
多个列可以组成一个列族(column family)
表的属性定义在列族上,如:过期时间、数据块缓存、是否压缩等
因此,同一个表的列族可以有完全不同的属性,
但是,同一个列族内的列具有相同的属性 -
每个行都拥有唯一的一个行键(rowkey),行键是一串不可重复的字符串
hbase中无法根据column来排序,只能根据rowkey进行排序,排序规则是根据字典
如:key1 key2 key11
结果:key1 key11 key2 -
单元格
一个列上面可能存储多个版本的值
多个版本的值被存储在多个单元格中
唯一确定一条结果的表达式应该是:行键:列族:列:版本号
版本号可以省略,如果不写版本号,hbase会默认使用最后一个版本的数据
每个列或者每个单元都会被赋予一个时间戳,
该时间戳默认由系统指定,也可以用户显示指定 -
注意:
行与行的列可以完全不一样
上一行和下一行的数据也可以存储在不同的机器上
同一行内的列可以存储在完全不同的机器上 -
提示:
一个表设置多少列族比较好?官方建议越少越好
虽然hbase是分布式数据库,但是数据在同一台物理机上依然会加速数据的查询速度
所以列族太多会极大的降低数据库性能,并且列族定义太多容易出现bug -
Region
region是一段数据的集合
region是基于searchserver的,它的所有数据存取操作都是调用hdfs客户端来实现
一个region就是多个行 -
zookeeper、hbase、hdfs的关系
hbase中的regionServer存储实际的表数据信息
这些数据信息存储在hdfs上面
zookeeper管理这些regionServer,
包括具体的数据字段存储在哪个regionServer上面,
客户端每次与hbase连接,其实先和zookeeper通信,
查询出需要先和哪个regionServer通信,然后再连接该regionServer
- hbase shell 进入操作行
- list 查看表
- get ‘表名’ ‘rowkey名称’,‘列族:列的名称’
get ‘patient_count’,‘pat_001’ - describe ‘表名’ 查看表结构
获取的结果 name属性是列族名称
其余显示的是列族的属性 - scan ‘表名’ 查看 表数据
- count ‘表名’ 查看表中的记录总数
- create ‘表名’,‘列族名1’,‘列族名2’ …
- disable ‘表名’
drop ‘表名’ 删除表 必须先disable然后才能drop - exists ‘表名’ 判断该表是否存在
- put ‘表名’,‘rowkey名称’,‘列族:列名’,‘数据值’ 插入数据信息,如果存在则覆盖
- delete ‘表名’,‘rowkey名称’,‘列族:列名’
- 拷贝服务器上 hadoop core-site.xml 和hbase hbase-site.xml 文件放到项目的resource目录下面
- 即使是连接远程的 hadoop,也需要在本地安装 hadoop
下载winutils的windows版本 https://github.com/srccodes/hadoop-common-2.2.0-bin
下载后文件名为 hadoop-common-2.2.0-bin-master.zip ,然后再解压 - 配置环境变量
4、代码