Hbase,
应用:
海量数据存储(上百亿行,上百亿列)
准实时查询
在实际业务场景的应用:
交通 ,金融,电商,移动
特点:
单表可以有百亿行,百万列,数据矩阵横向和纵向两个维度所支持的数据量级都非常有弹性
HBase是面向列存储和权限控制,并支持独立检索。列式存储,其数据在表中按照某列存储,这样在查询只需要几个字段的时候,就能大大减少读取的数据量。
HBase每一个列的数据存储多个Version
为空的列并不占用储存空间,表可以设计的非常稀疏
底层依赖于HDFS
WAL机制保证了数据写入时不会因集群异常导致写入数据丢失:Replication机制保证了在集群中出现严重的问题时,数据不会发生丢失或损坏。而且Hbase底层使用HDFS HDFS本身也有备份
底层LSM数据结构和Rowkey有序排列等架构上的独特设计,使得Hbase具有非常高的写入性能。region切分,主键索引和缓存机制使得Hbase在海量数据下具备一定的随机读取性能,该性能针对Rowkey的查询可以达到毫秒级别
高可靠,高性能,面向列,可伸缩,实时读写的分布式数据库
支持MR程序读取程序
存储非结构化,半结构化,结构化数据
Rowkey:数据唯一标示,按字典排序
支持多版本数据同时存在
HBase版本
官网版本:http://archive.apache.org/dist/hbase
CDH版本:http://archive.cloudera.com/cdh5
HBase架构体系:
ZooKeeper和Master收到RegionServer报告的信息:1.是否存活2.管理那些Region
Master可以从zookeeper获取信息
HBase架构体系和设计模式:
列簇:一张表列簇不会超过五个
每个列簇中的列数没有限制
列只有插入数据后存在,动态增加
列在列簇中有序的
HBase与关系型数据库对比:
| HBase | 关系型数据库 |
| 列动态增加 | 不能动态增加 |
| 数据自动切分 | 手动切分 |
| 高并发读写 | 不支持高并发读写 |
| 不支持条件查询 | 复杂查询 |
配置HBase:
hbase-env.sh
export HBASE_MANAGES_ZK=false
export JAVA_HOME=/home/huawei/jdk1.8.0_161
hbase-site.xml(hbase-default.xml)
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:8020/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave2,slave3</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/home/huawei/HBaseTmp</value>
</property>
regionservers
验证:
In HBase newer than 0.98.x, the HTTP ports used by the HBase Web UI changed from 60010 for the Master and 60030 for each RegionServer to 16010 for the Master and 16030 for the RegionServer.
HBaseShell:
scan,list,create,disable,is_enabled,drop,get,put,delete,truncate
总结:
概念:HBase是一个分布式的数据库
主要作用:海量数据存储和海量数据的准实时查询
应用场景:交通,金融,电商,移动
HBase特点:容量大,列式存储,多版本,可扩展性,稀疏性,高性能(读写),可靠性(副本和log信息)
Hbase部署条件:1.JDK1.7以上
2,Hadoop2.5.x以上的版本
3.zookeeper3.4.x以上的版本