• Hbase系统架构简述


    由于最近要开始深入的学习一下hbase,所以,先大概了解了hbase的基本架构,在此简单的记录一下。

    Hbase的逻辑视图

    Hbase的物理存储

    HRegion

    • Table中所有行都按照row key的字典序排列。
    • Table在行的方向上分割为多个HRegion。
    • HRegion按大小分割的,每个表开始只有一个HRegion,随着数据增多,HRegion不断增大,当增大到一个阀值的时候,HRegion就会等分会两个新的HRegion,之后会有越来越多的Region。
    • HRegion是Hbase中分布式存储和负载均衡的最小单元,不同HRegion分布到不同HRegionServer上。

    Store

    • HRegion虽然是分布式存储的最小单元,但并不是存储的最小单元。
    • HRegion由一个或者多个Store组成,每个Store保存一个columns family。 所以,每个column family存储在HDFS上的一个单独文件中,空值不会被保存。
    • 每个HRtrore又由一个MemStore和0至多个StoreFile组成,StoreFile包含HFile。
    • MemStore存储在内存中,StoreFile存储在HDFS上。

    Hbase基本组件

    Client

    • 包含访问HBase的接口,并维护cache来加快对HBase的访问,比如HRegion的位置信息。

    Master

    • 为HRegionServer分配HRegion:比如在HRegion split时分配新的HRegion;在HRegionServer退出时迁移其内的HRegion到其他HRegionServer上
    • 负责HRegionServer的负载均衡
    • 发现失效的HRegionServer并重新分配其上的HRegion
    • 管理用户对table的增删改查操作
    • 管理namespace和table的元数据
    • 权限控制(ACL)

    HRegionServer

    • HRegionServer维护HRegion,处理对这些HRegion的IO请求
    • 存放和管理本地Hregion
    • 读写HDFS,管理Table中的数据 HRegionserver负责切分在运行过程中变得过大的Hregion
    • Client直接通过HRegionServer读写数据(从HMaster中获取元数据,找到RowKey所在的HRegion/HRegionServer后)

    Zookeeper

    • 通过选举,保证任何时候,集群中只有一个master,Master与RegionServers 启动时会向ZooKeeper注册
    • 存贮所有Region的寻址入口
    • 实时监控Region server的上线和下线信息。并实时通知给Master
    • 存储HBase的schema和table元数据

    Zookeeper的引入使得Master不再是单点故障

    上图清晰的表达了HMaster和NameNode都支持多个热备份,使用ZooKeeper来做协调。

    • ZooKeeper一般由三台机器组成一个集群,内部使用PAXOS算法支持三台Server中的一台宕机,也有使用五台机器的,此时则可以支持同时两台宕机,既少于半数的宕机。
    • 然而随着机器的增加,它的性能也会下降。
    • RegionServer和DataNode一般会放在相同的Server上实现数据的本地化。

     协同工作

    • HBase Client通过RPC方式和HMaster、HRegionServer通信。
    • 一个HRegionServer可以存放1000个HRegion。
    • 底层Table数据存储于HDFS中,而HRegion所处理的数据尽量和数据所在的DataNode在一起,实现数据的本地化。
    • 数据本地化并不是总能实现,比如在HRegion移动(如因Split)时,需要等下一次Compact才能继续回到本地化。

    Hbase的数据恢复

    HLog

    • 每个HRegionServer中都有一个HLog对象,HLog是一个实现Write Ahead Log的类。
    • 在每次用户操作写入MemStore的同时,也会写一份数据到HLog文件中。
    • HLog文件定期会滚动出新的,并删除旧的文件(已持久化到StoreFile中的数据)。

    恢复过程

    • 当HRegionServer意外终止后,HMaster会通过Zookeeper感知到。
    • HMaster首先会处理遗留的HLog文件,将其中不同Region的Log数据进行拆分,分别放到相应region的目录下。
    • 然后再将失效的region重新分配,领取到这些region的HRegionServer在Load Region的过程中,会发现有历史HLog需要处理。
    • 因此会Replay HLog中的数据到MemStore中,然后flush到StoreFiles,完成数据恢复。
    • 示意图:

    Hbase的容错

    HRegionServer

    • HRegionServer定时向Zookeeper汇报心跳。
    • 如果一旦时间内未出现心跳,HMaster将该RegionServer上的Region重新分配到其他RegionServer上。
    • 失效服务器上“预写”日志由主服务器进行分割并派送给新的HRegionServer。

    HMaster

    • 当现有Hmaster出现灾难无法运转,Zookeeper会重新选择一个新的Master,从而保障Master不再是单点故障。

    - 无Master过程中,数据读取仍照常进行。

    - 无master过程中,region切分、负载均衡等无法进行。

    Zookeeper

    • Zookeeper是一个可靠地服务,一般配置3或5个Zookeeper实例。
    • Region定位流程:ZooKeeper--> -ROOT-(单Region)--> .META.--> 用户表

    本文只是简单介绍一下hbase系统架构,后续会详细地补充。

  • 相关阅读:
    8.驱动与硬件通信
    11.ok6410之led驱动程序编写
    10.字符设备控制学习
    9.应用程序如何访问驱动
    linux内核打印数据到串口控制台,printk数据不打印问题
    nginx配置-location
    spring-cloud config配置中心
    idea中git stash--解决pull冲突或切换分支问题
    idea中git回退本地仓库版本
    idea中git回退远程仓库版本
  • 原文地址:https://www.cnblogs.com/qinshifu/p/9656973.html
Copyright © 2020-2023  润新知