分布式列式数据库HBase

本文概述:
1、HBase概述
2、HBase特点
3、HBase和RDBMS以及HDFS的对比区别
4、HBase核心术语
5、HBase物理模型
6、HBase架构
7、HBase容错
8、HBase环境搭建
HBase官网:http://hbase.apache.org/Apache HBase是一个开源,分布式,版本化的非关系型数据库
HBase概述
1)构建在HDFS之上的,分布式、面向列的开源数据库
2 ) 分布式: 分而治之
3)面向列:HBase、Hive(ORC/Parquet)
HBase特点
1)大:数十亿行*数百万列*数千个版本 = TB级或PB级的存储
2)面向列:面向列(族)的存储和权限控制,列(族)独立检索
3)稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏
4)数据类型单一:Hbase中的数据都是字符串,没有类型
5)无模式: 不同的行所对应的列是可以不同的
6)数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;
Cell:一行一列交叉处可以有多个值
HBase和RDBMS以及HDFS的对比区别

分布式列式数据库HBase

分布式列式数据库HBase

1)phoenix、hive&hbase
2)hbase在上亿条的数据查询可以控制在毫秒或者秒内(rowkey的设计好坏)
HBase核心术语
1)rowkey 主键
对应于RDBMS的主键
字符串,字典顺序存储,在HBase内存保存为字节数组
rowkey查询方式:单个rowkey、range、全表扫描
2) column family/cf 列族
列族是在创建表的时候指定,一个列族包含多个列
private_info:age private_info:tel
basic_info:name
3) column 列
术语某个cf
4) timestamp 时间戳 & cell
hbase中通过row和columns来确定一个cell
每个cell里面可以保存同一份数据的多个版本
在写入数据时,时间戳可以由hbase自动赋值,也可以手工赋值
{rowkey、cf、column、version} ==> Cell
HBase物理模型
table中的所有行都按照rowkey的字典序排列
table在行的方向上分割为多个Region
一个Region在同一时刻只能被同一个RegionServer管理
RegionServer能管理多个Region
1) Region:hbase中在行的方向上进行切割
Region1: rowkey:1-100
Region2: rowkey:101-200
2) RegionServer:
管理Region
一个Region在同一时刻只能被一个RegionServer管理
一个RegionServer能够管理多个Region
拆分Region??
1)并行化
2)理解时可以对比MapReduce并行处理
HBase架构
分布式列式数据库HBase
1)HDFS:存储数据
2)Client: 客户端
与HBase进行读写操作
可以有多个client来访问HBase
3) ZK
保证集群中只有一个HMaster
监控我们RegionServer的上线或者下线,并实时通知给Master
4) HMaster
为RegionServer分配Region
负责RegionServer的负载均衡
发现RegionServer失效了,会把该RegionServer上的Region分配到其他的RegionServer上去
5)HRegionServer
维护Region,处理对这些Region的IO请求
RegionServer负责切分在运行过程中变得过大的Region
6)HRegion
按行对rowkey对应的数据进行拆分
7)HLog
记录操作记录,为了容错处理
HBase是依赖于ZK的
1)ZK是外置的(建议)
2)HBase内置的
HBase容错
1)Master
ZK实现Master容错
2)RegionServer
Master会将该RegionServer上管理的Region重新分配到其他的RegionServer上去(负载均衡的算法)
3)zk
一般配置奇数个ZK实例,一个集群中配置7,9,11个实例
就不会存在单点故障
HBase环境搭建
1)conf/hbase-env.sh
export JAVA_HOME=/home/hadoop/app/jdk
export HBASE_MANAGES_ZK=false
2)conf/hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:8020/hbase</value>
</property>
hbase.rootdir指的是hbase的存储目录,它的值必须与hadoop/core-site.xml中fs.defaultFS保持一致
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
运行模式,true分布式/伪分布式, false单机
<property>
<name>hbase.zookeeper.quorum</name>
<value>master:2181</value>
</property>
指的是zk节点的主机名和端口,如果有多个,则使用逗号分隔(hadoop000:2181,hadoop001:2181)
3) regionservers
配置hbase regionserver的机器,多台的话,每行一个hostname
将HBASE配置到系统环境变量(~/.bashrc )
export HBASE_HOME=/home/hadoop/app/hbase
export PATH=$HBASE_HOME/bin:$PATH
HBase启动
bin/start-hbase.sh
启动成功
JPS会出现:HMaster、HReqionServer
页面:主机名:60010
hbase shell客户端
$HBASE_HOME/bin/hbase shell
help