hbase简介
hbase是一个高可靠性,高性能,面向列,可伸缩,可实时读写的分布式数据库。
利用hadoop HDFS作为文件存储系统,利用hadoop MR来处理HBase中的海量数据,利用zk作为分布式协同服务。
主要用来存储非结构化和半结构化的松散数据(列存储,NoSQL数据库)
ROW KEY决定一行数据,按照字典排序,最大存储64k,太大查询效率极低,row key 设计,加时间戳,row key 设计策略。
列族 Column Family ,一个列族里面可以有很多列,权限控制、存储以及调优都是在列族层面进行。
无类型 字节数据
HBase-1.2
1、hbase中有row key,column family,column,cell
每个cell单元格能设置版本,可以设置有1个版本10各版本,版本通过时间戳timestamp来区分,可以有新的版本,换成之前的版本等,解决了数据更新的问题。
短期之内cell历史版本不会删除,只有在文件合并等会删除。
2、hbase 中null不占用存储空间。cell单元格中都是未解析的字节数组组成,cell无类型,以字节码存储。
3、row key 大小最大64k,row key 设计很关键,影响效率。
4、可以存储结构化、非结构化、半结构化的数据。
5、hbase使用字典排序。如果cell有多个版本,可以使用一个最大值减去最之前的数据,使历史数据往下排列(字典排序)。
比如001 也可以换成100往下降 策略。
6、列族是可以操作的最小单位,列族下可以存放几百万个列,调优、权限控制都是列族层面的。
7、WAL log hbase的日志文件,里面存储的 操作的记录 和 数据信息 。用于恢复数据,可以开启,不重要的数据可以不开启。
恢复根据数据量可能会很慢。
HBase Compact &&Split
当StoreFile文件数量增长到一定阀值,就会触发Compact合并操作,并将多个StoreFile合并成一个StoreFile,当这个StoreFile大小超过一定阀值后,会触发Split操作,同时把当前Region Split成2个Region,这是旧的Region会下线,新Split出的2个Region会被HMaster分配到相应的HregionServer上,使得原先1个Region的压力得以分散到2个Region上。
如下图四个Storefile文件(从memstore文件经过flush而得到,默认64M的storefile文件)经过Compact合并成一个大的256M storefile文件,当设定的Region阀值为128M时,就会Split为两个128M的Storefile文件,然后HMaster再把这两个storefile文件分配到不停地Regionserver上。
分布式安装
1、下载地址https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/hbase-1.2.11/
下载后解压
2、cd hbase-1.2/conf
vim hbase-env.sh
export JAVA_HOME=/usr/local/jdk
export HBASE_MANAGES_ZK=false # 用现有zk,不用hbase自带的
hbase-site.xml
<!-- zk 的主机名-->
这里的主机名也不需要写端口,否则其他组件连接会报域名解析失败,如kylin
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,node1,node2</value>
</property>
<!--hadoop dfs的地址,ha的hadoop不用写端口-->
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<!--表示分布式安装-->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
vim regionservers
node1
node2
3、把hdfs-site.xml 复制到hbase/conf/下
4、分发到节点
先看date是否同步
再启动zk集群
最后./start-hbase.sh启动hbase
使用hbase shell进入hbase的命令行窗口
使用命令创建一张表
create 'test1', {NAME=>'cf',VERSIONS=>3,COMPRESSION=>'gz'}
插入四条记录
put 'test1','rowkey1','cf:q1','r1-v1'
put 'test1','rowkey1','cf:q2','r1-v2'
put 'test1','rowkey2','cf:q1','r2-v1'
put 'test1','rowkey2','cf:q2','r2-v2'
put 'test1','rowkey2','cf:q3','r2-v3'
使用命令查看表数据
scan 'test1'
登录master的web管理界面 http://192.168.88.129:60010
Hmaster HA配置
只需要在conf下 vim backup-masters
node1
记得分发一下
这里只选择了一台作为backup-masters,当master:60010挂掉,访问node1:60010