栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hbase架构

Hbase架构

Hbase架构

文章目录
  • Hbase架构
    • 1. Client
    • 2.HMaster
    • 3.zookeeper
    • 4.HRegionServer
    • 5.HRegion
    • 6.Store
      • 6.1.StoreFile
        • 6.1.1.HFile
      • 6.2.MemStore
    • 7.Hlog

Hbase有三个主要组成部分:客户端库,主服务器和区域服务器。

1. Client
  • 定义:客户端
  • 客户端的连接方式
    • shell命令:hbase shell
    • 类JDBC(ODBC)
    • API实现(以JavaApi为例)
      • Hbase提供了Java的API来操作表与列簇等信息,它的shell就是对Java的API做了一层封装。
      • Hbase的Java API提供了很多高级的特性
        • 元数据管理,列簇的数据压缩,region分隔
        • 创建,删除,更新,读取 rowkey
  • 发送的请求主要包括
    • DDL:数据库定义语言(表的建立,删除,添加删除列族,控制版本)
    • DML:数据库操作语言(增删改)
    • DQL:数据库查询语言(查询–全表扫描–基于主键–基于过滤器)
  • 客户端必要的时候会对数据进行一些缓存
    • 下次查询或者什么的时候更快一点
    • 比如缓存regione的位置信息
2.HMaster
  • 定义:Hbase集群的主节点
  • HMaster也可以实现高可用(active–standby)
    • 通过Zookeeper来维护主副节点的切换
  • 作用
    • 负责接收客户端的请求(仅限于DDL)
    • 为Region server分配region并负责region server的负载均衡
    • 负责管理HRegionServer的健康状况
      • 上下线的监督
        • 创建表的时候分配Region
        • 当HRegionServer下线的时候,HMaster会将当前HRegionServer上的Region转移到其他的HRegionServer
    • 管理用户对table的结构DDL(创建,删除,修改)操作
      • 表的元数据信息存储在Zookeeper上面
      • 表的数据存储在HRegionServer上
  • 问题:HMaster没有联邦机制,业务承载能力还是有限
    • 一个数据库的表结构很少会发生变化,但是绝大部分是CRUD操作
    • 于是Hbase的Master只负责DDL,而DML,DQL由其他节点承担
3.zookeeper
  • 作用:Hbase协调服务
    • 保证任何时候,集群中只有一个master,配合完成主备的选举与切换
    • 存贮所有Region的寻址入口,存储所有的的元数据信息。
    • 实时监控Region Server的状态,将Region server的上线和下线信息实时通知给Master
    • 存储Hbase的schema,包括有哪些table,每个table有哪些column family
    • 记录当前集群的状态信息,当主备切换的时候,集群的状态可以被新的主节点直接读取到
4.HRegionServer
  • 定义:Hbase的具体工作节点,属于Hbase具体数据的管理者
    • 一般一台主机就是一个RegionServer
    • 一个RegionServer中包含很多的Region,HMaster负责分配Region
  • 作用
    • 负责接收客户端的DML和DQL请求
    • Region server维护Master分配给它的region,处理对这些region的IO请求
    • 当接收到Hmaster命令创建表的时候,分配一个Region对应一张表
    • Region server负责切分在运行过程中变得过大的region
    • 当客户端发送DML和DQL操作的时候,HRegionServer负责和客户端建立连接
    • 当意外关闭的时候,当前节点的Region会被其他HRegionServer管理
  • 怎么和HMaster保持通信的
    • 它会实时的和HMaster保持心跳,汇报当前节点的信息
5.HRegion
  • 定义:HRegion是Hbase中分布式存储和负载均衡的最小单元。也是Hbase的表数据具体存放的位置
    • 最小单元就表示不同的HRegion可以分布
      在不同的 HRegion server上。
  • 作用
    • Hbase自动把表水平划分成多个区域(region),每个region会保存一个表里面某段连续的数据
  • 组成:HRegion是表获取和分布的基本元素,由一个或者多个Store组成
  • 注意:最开始声明表的时候就会为这个表默认创建一个Region,随着时间的推移Region越来越大,这是就会对Region进行切分
    • Region达到阈值10G的时候会被平分(逻辑上平分,尽量保证数据的完整性)
    • 切分后的其中一个Region转移到其他的HRegionServer上管理
    • 当table中的行不断增多,就会有越来越多的region。这样一张完整的表被保存在多个Regionserver 上
    • 为了防止前期数据的处理都集中在一个HRegionServer,我们可以根据自己的业务进行预分区
6.Store
  • 定义:HRegion是表获取和分布的基本元素,由一个或者多个Store组成,每个store保存一个columns family。
  • 组成:每个Store又由1个memStore和0或多个StoreFile组成。
  • 和表的关系:一个表中一个列簇对应一个Store
6.1.StoreFile
  • 定义:文件的硬盘存储,直接存储到HDFS,存到HDFS之后被称为HFile
  • 组成
    • Data Blocks 段–保存表中的数据,这部分可以被压缩
    • meta Blocks 段 (可选的)–保存用户自定义的kv对,可以被压缩。
    • File Info 段–Hfile的元信息,不被压缩,用户也可以在这一部分添加自己的元信息。
    • Data Block Index 段–Data Block的索引。每条索引的key是被索引的block的第一条记录的key。
    • meta Block Index段 (可选的)–meta Block的索引
    • Trailer–这一段是定长的。
      • 保存了每一段的偏移量,读取一个HFile时,会首先读取Trailer
      • Trailer保存了每个段的起始位置(段的Magic Number用来做安全check)
      • 然后,DataBlock Index会被读取到内存中,当检索某个key时,不需要扫描整个HFile,而只需从内存中找到key所在的block
      • 通过一次磁盘io将整个 block读取到内存中,再找到需要的key。DataBlock Index采用LRU机制淘汰
    • 作用
      • 数据存储文件的映射,对应HDFS上的HFile
    • 注意
      • 一个Table对应多个Region对应多个Store,一个Store对应一个MemStore和多个StoreFile
      • 多个StoreFile内部有序,但是外部无序
      • 集群会设置一些阈值,当达到阈值的时候开始将小文件合并成大文件
6.1.1.HFile
  • 定义:
    • 原来已经满的数据写出到HDFS,成为HFile
    • HFile是Hbase在HDFS中存储数据的格式,它包含多层的索引,这样在Hbase检索数据的时候就不用完全的加载整个文件。
6.2.MemStore
  • 定义:基于内存存放数据,每个Store大概分配128M的空间
  • 注意
    • 数据最开始优先写入到MemStore
    • 当达到一定阈值,开始刷写的时候才会被写入到磁盘
    • 当客户端向数据库插入数据的时候,当内存使用到128M的时候,直接重新申请128M的内存空间,数据直接写到新的内存中,原来已经满的数据写出到HDFS,成为HFile
7.Hlog
  • 定义:Hbase的日志机制(WAL)
  • 存放的位置:日志会存储到HDFS
  • 作用
    • 在任何操作之前先记录日志到HDFS
    • 以后MemStore丢失数据或者RegionServer异常都能通过日志进行恢复
  • 注意
    • 一个RegionServer对应一个HLog
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/601219.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号