• 【赵强老师】HBase的体系架构


    一、什么是HBase?

    HBase是一个基于HDFS之上的分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“BigTable大表”,即:把所有的数据存入一张表中。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

    二、HBase的体系架构

    HBase是由三种类型的服务器以主从模式构成的。这三种服务器分别是:HBase HMaster,Region server,ZooKeeper。

    • HBase HMaster负责Region的分配及数据库的创建和删除等操作。具体来说,HMaster的职责包括:
    1. HMaster负责region的分配。
    2. 调控Region server的工作
    3. 在集群启动的时候分配region,根据恢复服务或者负载均衡的需要重新分配region。
    4. 监控集群中的Region server的工作状态。
    5. 管理数据库。提供创建,删除或者更新表格的接口。
    • Region server负责数据的读写服务。用户通过沟通Region server来实现对数据的访问。

    具体来说,RegionServer上存在若干个Region。HBase中的表是根据row key的值水平分割成所谓的region的。一个region包含表中所有row key位于region的起始键值和结束键值之间的行。每一个region的默认大小为1GB。集群中负责管理Region的结点叫做Region server。Region server负责数据的读写。每一个Region server大约可以管理1000个region。

    • ZooKeeper负责维护集群的状态(某台服务器是否在线,服务器之间数据的同步操作及master的选举等)。HBase中ZooKeeper的职责包含:
    1. 维护HBase服务器是否存活
    2. 监控HBase服务器是否可访问的状态
    3. 提供服务器故障/宕机的通知
    4. 同时还使用一致性算法来保证服务器之间的同步。
    5. 同时也负责Master选举的工作。
    6. 需要注意的是要保证良好的一致性及顺利的Master选举,集群中的服务器数目必须是奇数,例如三台或五台。

    三、HBase的表结构

    每一行有一个RowKey用于唯一地标识和定位行,各行数据按RowKey的字典序排列。其中ImployeeBasicInfoCLF和DetailInfoCLF是两个列族,列族下又有多个具体列。(员工基本信息列族:姓名、年龄。详细信息列族:薪水、角色)。

    HBase数据模型

    • 命名空间:命名空间是对表的逻辑分组,不同的命名空间类似于关系型数据库中的不同的Database数据库。利用命名空间,在多租户场景下可做到更好的资源和数据隔离。
    • 表:对应于关系型数据库中的一张张表,HBase以“表”为单位组织数据,表由多行组成。
    • 行:由一个RowKey和多个列族组成,一个行有一个RowKey,用来唯一标示。
    • 列族:每一行由若干列族组成,每个列族下可包含多个列,如上ImployeeBasicInfoCLF和DetailInfoCLF即是两个列族。列族是列共性的一些体现。注意:物理上,同一列族的数据存储在一起的。
    • 列限定符:列由列族和列限定符唯一指定,像如上的name、age即是ImployeeBasicInfoCLF列族的列限定符。
    • 单元格:单元格由RowKey、列族、列限定符唯一定位,单元格之中存放一个值(Value)和一个版本号。
    • 时间戳:单元格内不同版本的值按时间倒序排列,最新的数据排在最前面

  • 相关阅读:
    nginx反向代理配置根据User-Agent跳转m站
    Windows环境下安装Redis
    Python的requests、greenlet和gevent模块在windows下安装
    zabbix-agent报错:zabbix_agentd [5922]: cannot open log: cannot create semaphore set: [28] No space left on device
    aws存储桶s3使用
    使用云负载时将http的请求转发至https时报错:“ERR_TOO_MANY_REDIRECTS”!
    使用CDN后配置nginx自定义日志获取访问用户的真实IP
    自动化运维工具saltstack05 -- 之salt-ssh模式
    CentOS7.2下配置SOCKS5代理
    Arch Linux 硬盘引导-联网安装
  • 原文地址:https://www.cnblogs.com/collen7788/p/15089050.html
Copyright © 2020-2023  润新知