南修子学Hbase_Hbase基本架构

图1:简版Hbase架构图

图2:完整版网上流传的架构图

HMaster

HMaster的主要功能有:
把HRegion分发到某一个RegionServer。因为Hbase中一张表如果容量超过配置的上线,就会进行切片操作,一个region就会变成两个region,这时候就需要HMaster对region进行分发,Hmaster会尽可能平均的分配给所有的RegionServer。

有RegionServer宕机了,HMaster可以把这台机器上的Region迁移到active的RegionServer上。
③对HRegionServer进行监控和负载均衡。 ④通过HDFS的dfs client接口回收垃圾文件(无效日志等)
注:HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master
Election机制保证总有一个Master运行。
管理hbase的元数据,也就是命名空间Hbase里面的数据

HRegionServer

RegionServer其实就对应一台机器,或者说是对应一台机器上面的HRegionServer进程
负责维护HMaster分配给它的HRegion,处理对这些HRegion的IO请求,也就是说客户端直接和HRegionServer打交道。(从图中也能看出来)
负责切分正在运行过程中变得过大的HRegion,就是splitRegion操作
在这里插入图片描述
https://blog.youkuaiyun.com/u013080251/article/details/68980215

HRegion

每个HRegion由多个Store构成,每个Store保存一个列族(Columns Family),表有几个列族,则有几个Store,每个Store由一个MemStore和多个StoreFile组成,MemStore是Store在内存中的内容,写到文件后就是StoreFile。StoreFile底层是以HFile的格式保存。
Region是表获取和分布的基本元素,由每个列族的一个Store组成。对象层级图如下:
在这里插入图片描述

Region是HBase中分布式存储和负载均衡的最小单元。不同Region分布到不同RegionServer上,但并不是存储的最小单元。
Region由一个或者多个Store组成,每个store保存一个columns family,每个Strore又由一个memStore和0至多个StoreFile 组成。memStore存储在内存中, StoreFile存储在HDFS上。
HBase通过将region切分在许多机器上实现分布式。也就是说,你如果有16GB的数据,只分了2个region, 你却有20台机器,有18台就浪费了。
region数目太多就会造成性能下降,现在比以前好多了。但是对于同样大小的数据,700个region比3000个要好。
region数目太少就会妨碍可扩展性,降低并行能力。有的时候导致压力不够分散。这就是为什么,你向一个10节点的HBase集群导入200MB的数据,大部分的节点是idle的。
RegionServer中1个region和10个region索引需要的内存量没有太多的差别。

http://hbasefly.com/2017/08/27/hbase-split/?wibwbo=gvtxs3

HLog

HLog(WAL log):WAL意为write ahead log(预写日志),用来做灾难恢复使用,HLog记录数据的变更,包括序列号和实际数据,据在这个日志文件里起到一个备份的作用,所以一旦region server 宕机,就可以从log中回滚还没有持久化的数据。要注意HLog是存储在Hdfs上面的
要往hbase写数据会先往Hlog里面写,后面会写一个详细的Hbase写数据流程
首先,一个HRegionServer中就只有一个HLog。
https://blog.youkuaiyun.com/nysyxxg/article/details/51022925

HFile

HBase的数据最终是以HFile的形式存储在HDFS中的,HBase中HFile有着自己的格式。
https://blog.youkuaiyun.com/zhanglh046/article/details/78510291

### HBase架构类型及特点 HBase 是一种典型的分布式数据库,属于 **NoSQL 数据库** 类型中的 **列族存储数据库**。它的架构设计借鉴了 Google 的 Bigtable 论文[^4],并结合 Apache Hadoop 生态系统进行了扩展和优化。 #### 1. **HBase架构分类** HBase 属于 **分布式列存储数据库**,其架构具有以下特征: - 基于主从模式的分布式架构HBase 使用 Master-RegionServer 结构来管理数据分布和负载平衡[^3]。 - 列族存储模型:HBase 的数据按照列族进行组织,支持高效的列级访问控制[^2]。 #### 2. **HBase 架构的主要组成部分** 以下是 HBase 架构的关键模块及其功能说明: - **ZooKeeper**: 提供分布式协调服务,用于维护集群状态、元数据信息以及 Region 寻址入口[^3]。 - **HMaster**: 负责全局资源管理,包括表的创建、删除、修改以及 Region 的分配和迁移等任务。 - **RegionServer**: 承载具体的 Region 数据分区,负责处理客户端的读写请求[^4]。 - **Meta 表**: 存储 HBase 的元数据信息,记录各 Region 的位置和归属关系。 - **WAL (Write-Ahead Log)**: 在数据写入 MemStore 之前,先将其记录到 WAL 中,以便在发生故障时能够恢复未持久化的数据[^4]。 - **MemStore 和 StoreFile**: 数据首先存放在内存中的 MemStore,当达到一定大小后刷写到磁盘形成 StoreFile。 #### 3. **HBase架构特点** - **水平扩展性**: HBase 支持动态增加节点以提升系统的容量和性能,满足大规模数据存储需求。 - **高可用性**: 通过 ZooKeeper 协调多个 HMaster 实例之间的主备切换,确保系统的稳定运行。 - **强一致性保障**: 对于单个行键的操作,HBase 提供严格的事务一致性和原子性保证。 - **灵活的数据模型**: 用户可以根据业务场景自定义表结构,适应多样化的应用场景[^1]。 ```python # 示例代码展示如何连接 HBase 并操作数据 from happybase import Connection # 创建连接对象 connection = Connection('localhost') # 获取指定表的对象 table_name = 'test_table' if not table_name.encode() in connection.tables(): families = { 'cf1': dict(max_versions=10), 'cf2': dict(max_versions=1, compression='snappy') } connection.create_table(table_name
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南修子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值