大数据全知识点讲解之HBASE
大数据全知识点讲解之HBASE(上)
NOSQL
NOSQL的全称是:not only sql,即非关系型数据库。NOSQL是一个通用术语:
- 指不遵循传统RDBMS模型的数据库
- 数据是非关系的,且不使用SQL作为主要查询语言
- 解决数据库的可伸缩性和可用性问题
- 不针对原子性和一致性问题
为什么使用NOSQL?
因为传统关系型数据库存在瓶颈,NOSQL具有以下优点:
- 高并发读写
- 高存储量
- 高可用性
- 高扩展性
- 低成本
NOSQL和关系型数据库的对比
NOSQL特点
- 最终一致性
- 应用程序增加了维护一致性和处理事务等职责
- 冗余数据存储
NOSQL基本概念
- 三大基石
CAP、BASE、最终一致性 - Indexing(索引)、Query(查询)
- MapReduce
- Sharding
NOSQL三大基石
CAP理论
数据库最多支持3个中的2个:
1.Consistency(一致性)
2.Availability(可用性)
3.Partition Tolerance(分区容错性)
NOSQL不保证“ACID”,提供“最终一致性”
BASE
- Basically Available(基本可用)
保证核心可用 - Soft-state(软状态)
状态可以用一段时间不同步 - Eventual Consistency(最终一致性)
系统经过一定时间后,数据最终能够达到一致的状态
核心思想是即使无法做到强一致性,但应用可以选择适合的方式达到最终一致性
最终一致性
- 最终结果保持一致性,而不是实时一致
- 如账户余额,库存量等数据需要强一致性
- 如catalog等信息不需要强一致性
Causal Consistency
Read-your-write Consistency
Session Consistency
索引和查询
-
Indexing(索引)
大多数NoSQL是按key进行索引
部分NoSQL允许二级索引
HBase使用HDFS,append-only
批处理写入Logged
重新创建并排序文件 -
Query(查询)
没有专门的查询语言,通常使用脚本语言查询
有些开始支持SQL查询
有些可以使用MapReduce代码查询
MapReduce/Sharding
-
MapReduce
不是Hadoop的MapReduce,概念相关
可进行数据的处理查询 -
Sharding(分片)
一种分区模式
可以复制分片
有利于灾难恢复
NOSQL分类
键值存储数据库(key-value)
列存储数据库(Wide Column Store)
文档型数据库(Document Store)
图数据库(Graph Databases)
HBASE
- HBase是一个领先的NoSQL数据库
是一个面向列存储的数据库
是一个分布式hash map
基于Google Big Table论文
使用HDFS作为存储并利用其可靠性 - HBase特点
数据访问速度快,响应时间约2-20毫秒
支持随机读写,每个节点20k~100k+ ops/s
可扩展性,可扩展到20,000+节点
HBASE应用场景
- 增量数据-时间序列数据
高容量,高速写入 - 信息交换-消息传递
高容量,高速读写 - 内容服务-Web后端应用程序
高容量,高速读写
HBASE物理架构
HBase采用Master/Slave架构
HMaster的作用:
- 是HBase集群的主节点,可以配置多个,用来实现HA
- 管理和分配Region
- 负责RegionServer的负载均衡
- 发现失效的RegionServer并重新分配其上的Region
RegionServer
RegionServer负责管理维护Region
Region和Table
Row
- Rowkey(行键)是唯一的并已排序
- Schema可以定义何时插入记录
- 每个Row都可以定义自己的列,即使其他Row不使用
相关列定义为列族 - 使用唯一时间戳维护多个Row版本
在不同版本中值类型可以不同 - HBase数据全部以字节存储
HBase数据管理
- 数据管理目录
系统目录表hbase:meta
存储元数据等
HDFS目录中的文件
Servers上的region实例 - HBase数据在HDFS上
可以通过HDFS进行修复File
修复路径
RegionServer->Table->Region->RowKey->列族
HBase架构特点
- 强一致性
- 自动扩展
当Region变大会自动分割
使用HDFS扩展数据并管理空间 - 写恢复
使用WAL(Write Ahead Log) - 与Hadoop集成
HBase Shell
HBase Shell是一种操作HBase的交互模式
通过HBase Shell进入
基本操作
将文档数据导入HBase