栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 云计算 > 云平台

一张图讲完Hbase核心原理

云平台 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一张图讲完Hbase核心原理

目录

一、特点

二、适用场景

三、架构原理

四、写过程

五、读过程


放大观看!

强烈建议放足够大再看

 

一个冷门知识点:Hbase的名字的来源是 Hadoop database

一、特点

大:一个表可以有上十亿行,上百万列

面向列:面向列(族)的存储和权限控制,列(族)独立检索。

稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。

二、适用场景

快速读写,快速简单检索、基于HDFS的海量数据存储

支持随机读写

更新实际上是多版本新增

不支持标准sql,需要集成Phoenix插件

三、架构原理

RowKey,一级索引

仅能通过主键(row key)和主键的 range 来检索数据

Client维护着一些cache来加快对hbase的访问

Zookeeper

master选举

存贮所有Region的寻址入口

实时监控Region Server的状态,通知Master

HMaster

HDFS上的垃圾文件回收

处理schema更新请求

集群管理

为Region server分配region

负责region server的负载均衡

发现失效的region server并重新分配其上的region

不参与表数据IO的过程

离线后:表的数据读写还可以正常进行

HMaster只维护表和region的元数据

维护不是存储

离线后:无法创建删除表,无法修改表的schema,无法进行HRegion的负载均衡,无法处理HRegion 上下线,无法进行HRegion的合并,唯一例外的是HRegion的split可以正常进行,因为只有HRegion Server参与

Client访问HBase上数据的过程并不需要HMaster参与

访问控制、磁盘和内存的使用统计都是在列族层面进行的。列族越多,在取一行数据时所要参与IO、搜寻的文件就越多,所以,如果没有必要,不要设置太多的列族。

数据版本回收

HRegionServer

HRegionServer中有基于LRU的Block Cache机制

Table 在行的方向上分割为多个 HRegion。

HRegion按大小分割的(默认10G)

HRegion 是 HBase 中分布式存储和负载均衡的最小单元

不同region属于不同table

HRegion 由一个或者多个 Store 组成,每个 Store 保存一个 Column Family。

每个 Strore 又由一个 MemStore 和0至多个 StoreFile 组成。

位于内存的 Memstore 和位于硬盘的 StoreFile。

HLog(WAL log)

Write ahead log

Hlog记录数据的所有变更,一旦数据修改,就可以从log中进行恢复。

每个Region Server维护一个Hlog,而不是每个Region一个

如果一台region server下线,为了恢复其上的region,需要将region server上的log进行拆分,然后分发到其它region server上进行恢复

三个重要机制

memstore flush机制

storeFile compact机制

HRegion split机制

默认一个HFile达到10Gb的时候就会进行切分

四、写过程

特点

Hbase会对表中的数据按照rowkey排序(字典顺序)

设计Key时考虑存储位置相关性

行的一次读写是原子操作 (不论一次读写多少列)

1.访问zookeeper,找到Meta表,确定当前将要写入的数据所对应的HRegion和HRegionServer服务器。

2.向该HRegionServer服务器发起写入数据请求,然后HRegionServer收到请求并响应。

3.先把数据写入到HLog,以防止数据丢失。2.接着写入 Memstore.3.当 Memstore 中的数据量达到某个阈值,HRegionServer 启动 FlashCache 进程写入 StoreFile,每次写入形成单独一个 StoreFile

如果HLog和Memstore均写入成功,则这条数据写入成功

查时,先在memstore找,找不到再找storefile

Storefile多,会触发Compact合并操作

Storefile大,Region大,达到阈值后,会触发Split操作,将Region一分为二

StoreFile是只读的,一旦创建后就不可以再修改。因此HBase的更新其实是不断追加的操作。

五、读过程

查询能力

通过单个row key访问

通过row key的range

全表扫描

1.访问zookeeper,从zookeeper里面获取meta表所在的HRegionServer

2.访问Meta表所在的HRegionServer,从而读取到Meta,进而获取到Meta表中存放的元数据。

3.扫描所在HRegionServer的Memstore和Storefile来查询数据。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/896901.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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