|
本文概述: 1、HBase概述 2、HBase特点 3、HBase和RDBMS以及HDFS的对比区别 4、HBase核心术语 5、HBase物理模型 6、HBase架构 7、HBase容错 8、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的对比区别


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架构
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
|