《大数据技术原理与应用》暑假学习计划_05 - 分布式文件数据库HBase

《大数据技术原理与应用》暑假学习计划_05 - 分布式文件数据库HBase

HBase简介

HBase分布式数据库 → 用来存储非结构化及半结构化松散数据,具有高可靠,高性能,面向列,可伸缩的特性。

底层分布式文件系统存储完全非结构化数据,Hbase通过水平扩展允许上千台服务器存储数据

  • 文件存储系统:HDFS
  • 海量数据处理:Hadoop MapReduce
  • 协同管理服务:Zookeeper

与传统关系型数据库相比,传统关系型数据库存储关系数据模型。对于数据操作,HBase没有多表连接操作。对于存储模式,HBase基于列,关系数据库基于行。数据维护方面,HBase没有数据覆盖的操作。对于可伸缩性,HBase基于分布式。

HBase访问接口

  • 原生Java API
    1. shell命令
    2. Thrift Gateway
    3. REST Gateway
  • SQL类型接口
    1. Pig
    2. 数据仓库产品Hive

HBase数据模型

Hbase是一个稀疏多维度排序映射表 → 每一个值都是未经解释的字符串及Bytes数组

列族(核心):支持动态扩展,保留旧版本,新版本增加时间戳

单元格:具体存储数据的地方

HBase → 采用四维坐标确定位 →行键,列族,列限定符,时间戳(以列族为单位)

列式存储:便于分析操作

HBase实现原理

Hbase功能组件

  • 库函数 → 用于链接每个客户端访问数据
  • Maste服务器
    1. 分区信息进行维护和管理
    2. 维护Region服务器列表
    3. 整个集群中有哪些Region在工作
    4. 负责对Region进行分配
    5. 负载均衡
  • Region维护管理Region服务器
    1. 客户端要访问的数据直接对Region服务器进行数据存取
    2. 客户端不依赖Maste获取数据存放位置
    3. Region实际大小取决于单台服务器有效处理能力

HBase三层结构 → 实现Region寻址与定位

  • Zookeeper文件 → 记录ROOT表位置信息
  • ROOT表 → 只有一个Region → 记录MATE表Region信息
  • MATE表(元数据表) → 记录用户表Region位置信息
    1. Region的id
    2. Region服务器的id
  • 用户数据表

客户端可以缓存位置信息可以起到加速寻址的效果,但是需要解决缓存失效的问题

HBase运行机制

客户端 → 访问HBase接口

Zookeeper服务器 → 实现协同管理服务 → 大量用于分布式系统 → 提供配置,域名服务,分布式同步服务 → 同时也提供管家服务负责维护整个HBase集群

Master服务器 → 主服务器

  • 对表实现增删改查
  • Region服务器负载均衡
  • 负责调整分裂,合并后的Region分布
  • 负责重新分配故障,失效的Region服务器

Region服务器 → 负责用户数据存储和管理

HBase应用方案

实际应用中的性能优化方法

  • 时间相近的数据存放在一起 → 时间戳
    1. 按升序排列
    2. 时间戳越来越大
    3. 64位长整形
    4. 用系统最大整型值减去时间戳(Long.Max_VALUE - timestamp) → 排序反过来从而改变排序顺序
  • 设置最大版本数
  • 设置数据生命周期 → 过期数据自动删除

SQL → HBase(易使用,减少代码量) → Hive,Phoenix

构建HBase二级索引

原生HBase只支持对键索引

  • 通过单个键去访问
  • 可以定一个行键开始点和结束点去访问区间数据
  • 只能全表扫描对整个Hbase顺序扫一遍

二级索引引入Coprocessor

  • endpoint相当于关系数据库中的存储过程
  • observer相当于触发器
  • 在HBase额外构建索引表
posted @ 2019-07-28 20:16  符黑石  阅读(149)  评论(0编辑  收藏  举报