大数据全知识点讲解之HBASE(上)

  • NOSQL
  • NOSQL三大基石
  • 索引和查询
  • MapReduce/Sharding
  • NOSQL分类
  • HBASE
  • HBASE应用场景
  • HBASE物理架构
  • HBase数据管理
  • HBase架构特点
  • HBase Shell


NOSQL

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

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

为什么使用NOSQL?

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

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

NOSQL和关系型数据库的对比

NOSQL数据库原理设计与应用黑马程序员课后习题答案解析_java

NOSQL特点

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

NOSQL基本概念

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

NOSQL三大基石

CAP理论

数据库最多支持3个中的2个:

1.Consistency(一致性)

2.Availability(可用性)

3.Partition Tolerance(分区容错性)

NOSQL不保证“ACID”,提供“最终一致性”

NOSQL数据库原理设计与应用黑马程序员课后习题答案解析_hbase_02

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

NOSQL数据库原理设计与应用黑马程序员课后习题答案解析_hadoop_03

键值存储数据库(key-value)

NOSQL数据库原理设计与应用黑马程序员课后习题答案解析_数据库_04

列存储数据库(Wide Column Store)

NOSQL数据库原理设计与应用黑马程序员课后习题答案解析_数据库_05

文档型数据库(Document Store)

NOSQL数据库原理设计与应用黑马程序员课后习题答案解析_hadoop_06

图数据库(Graph Databases)

NOSQL数据库原理设计与应用黑马程序员课后习题答案解析_java_07

HBASE

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

HBASE应用场景

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

HBASE物理架构

HBase采用Master/Slave架构

NOSQL数据库原理设计与应用黑马程序员课后习题答案解析_数据库_08

HMaster的作用:

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

RegionServer

RegionServer负责管理维护Region

NOSQL数据库原理设计与应用黑马程序员课后习题答案解析_java_09

Region和Table

NOSQL数据库原理设计与应用黑马程序员课后习题答案解析_java_10

Row

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

NOSQL数据库原理设计与应用黑马程序员课后习题答案解析_java_11

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的交互模式

NOSQL数据库原理设计与应用黑马程序员课后习题答案解析_java_12

通过HBase Shell进入

NOSQL数据库原理设计与应用黑马程序员课后习题答案解析_hbase_13

基本操作

NOSQL数据库原理设计与应用黑马程序员课后习题答案解析_分布式_14

将文档数据导入HBase

NOSQL数据库原理设计与应用黑马程序员课后习题答案解析_java_15