大数据全知识点讲解之HBASE

NOSQL

NOSQL的全称是:not only sql,即非关系型数据库。NOSQL是一个通用术语:

  • 指不遵循传统RDBMS模型的数据库
  • 数据是非关系的,且不使用SQL作为主要查询语言
  • 解决数据库的可伸缩性和可用性问题
  • 不针对原子性和一致性问题

为什么使用NOSQL?

因为传统关系型数据库存在瓶颈,NOSQL具有以下优点:

  1. 高并发读写
  2. 高存储量
  3. 高可用性
  4. 高扩展性
  5. 低成本

NOSQL和关系型数据库的对比

大数据全知识点讲解之HBASE

NOSQL特点

  • 最终一致性
  • 应用程序增加了维护一致性和处理事务等职责
  • 冗余数据存储

NOSQL基本概念

  • 三大基石
    CAP、BASE、最终一致性
  • Indexing(索引)、Query(查询)
  • MapReduce
  • Sharding

NOSQL三大基石

CAP理论

数据库最多支持3个中的2个:
1.Consistency(一致性)
2.Availability(可用性)
3.Partition Tolerance(分区容错性)
NOSQL不保证“ACID”,提供“最终一致性”
大数据全知识点讲解之HBASE

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分类

大数据全知识点讲解之HBASE

键值存储数据库(key-value)
大数据全知识点讲解之HBASE

列存储数据库(Wide Column Store)

大数据全知识点讲解之HBASE

文档型数据库(Document Store)

大数据全知识点讲解之HBASE

图数据库(Graph Databases)
大数据全知识点讲解之HBASE

HBASE

  • HBase是一个领先的NoSQL数据库
    是一个面向列存储的数据库
    是一个分布式hash map
    基于Google Big Table论文
    使用HDFS作为存储并利用其可靠性
  • HBase特点
    数据访问速度快,响应时间约2-20毫秒
    支持随机读写,每个节点20k~100k+ ops/s
    可扩展性,可扩展到20,000+节点

HBASE应用场景

  • 增量数据-时间序列数据
    高容量,高速写入
  • 信息交换-消息传递
    高容量,高速读写
  • 内容服务-Web后端应用程序
    高容量,高速读写

HBASE物理架构

HBase采用Master/Slave架构
大数据全知识点讲解之HBASE

HMaster的作用:

  • 是HBase集群的主节点,可以配置多个,用来实现HA
  • 管理和分配Region
  • 负责RegionServer的负载均衡
  • 发现失效的RegionServer并重新分配其上的Region

RegionServer

RegionServer负责管理维护Region
大数据全知识点讲解之HBASE

Region和Table
大数据全知识点讲解之HBASE

Row

  • Rowkey(行键)是唯一的并已排序
  • Schema可以定义何时插入记录
  • 每个Row都可以定义自己的列,即使其他Row不使用
    相关列定义为列族
  • 使用唯一时间戳维护多个Row版本
    在不同版本中值类型可以不同
  • HBase数据全部以字节存储

大数据全知识点讲解之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

通过HBase Shell进入

大数据全知识点讲解之HBASE

基本操作
大数据全知识点讲解之HBASE

将文档数据导入HBase
大数据全知识点讲解之HBASE