HBase基础(Hadoop DataBase)
1、HBase是一个开源的(可以查看源码)、非关系型的、分布式的、列导向的数据库
2、以Google BigTable为原型
3、把HBase想象成一个连续的、分布式的、多维度的并且排序的Map
4、(row key,columnfamily,column,timestamp)
Value
5、特点
线性、模块化可扩展性
读写严格一致性
自动的、可配置的表分片
自动故障转移支持(RegionServers)
方便地基础类用于协助MR处理HBase的表
易用的Java API客户端
多客户端
交互式shell
6、HBase VS HDFS
HBase = HDSF + 随机读写
HDFS | HBase |
HDFS是一个分布式的文件系统,用于存储大量文件数据 | HBase是一个数据库,构建在HDFS之上 |
HDFS不支持快速单个记录查找 | HBase支持快速表数据查找 |
对于批量操作延迟较大 | 在10亿级表中查找单个记录延迟低 |
只能顺序读取数据 | 可以随机读取数据 |
7、HBase VS RDBMS(关系型数据库)
ACID
| HBase | RDBMS |
硬件 | 集群商用硬件 | 较贵的多处理器硬件 |
容错 | 针对单个或少个节点宕机没有影响 | 需要额外较复杂的配置 |
数据大小 | TB到PB级数据,千万到十亿级行 | GB到TB级数据,十万到百万级行 |
数据层 | 一个分布式、多维度的、排序序的Map | 行或列导向 |
数据类型 | 只有Bytes | 多种数据类型支持 |
事务 | 单个行的ACID | 支持表间和行间的ACID |
查询语言 | 支持自身提供的API | SQL |
索引 | Row-key 索引 | 支持 |
吞吐量 | 每秒百万查询 | 每秒千次查询 |
8、HBase VS HIVE
| HBase | Hive |
延迟性 | 在线,低延迟 | 批处理,较高延迟 |
结构化 | 非结构化数据 | 结构化数据 |
适用人员 | 程序员 | 分析人员 |
HBase:在线实时查询
Hive:离线批量报表查询
9、HBase+Hadoop 集群
RegionServer是HBase的一个子节点
9、集群规模&参数
最大集群:600 nodes,~600TB
一般集群:5~20 nodes,100GB-4TB
写入:1~3ms,1k~10k每秒,每节点
读取:0~3ms(缓存),10~30ms(磁盘),10~40k每秒每节点(缓存)
Cell大小:0~3MB(推荐)
10、HBase使用场景
(1)适用
针对已经存在的Hadoop集群
针对大量的数据
要求快速随机读取或写入
简单访问模式
(2)不适用
只需要增加数据的场景
只有批量处理而不是随机读取的场景
复杂的访问模式(如joins)
需要完全sql支持
单个节点可以处理所有数据的场景