hbase 数据插入指定rowkey_面试:HBase常见问题

本文详细介绍了HBase的架构,包括Client、Zookeeper、HMaster和HRegionServer的角色。阐述了HBase的读写流程,特别是数据如何在MemStore和StoreFile之间流转。还讨论了HBase中的热点问题及其解决方案,以及rowkey设计的原则。此外,文章讲解了HBase从HDFS读取数据的过程,compact的用途和类型,以及HBase的优化策略。
摘要由CSDN通过智能技术生成

ca92e20e9d55a7e09759212ecaaf79d1.gifb12cfbf02d58a71f9cf7dc9331510293.gif

 你再主动一点点 35f93ed6c514188721d208e9c327a3bb.gif  我们就有故事了

1. 简述HBase架构

bec6888416db52f95df2aa7e216d24b0.png

Client

1.首先需要与Zookeeper进行通信获取hbase:meta表的元数据信息
2.读取HBase上hbase:meta表信息,确定客户端的具体操作的表存在于哪个RegionServer上
3.Master定位RegionServer信息,并且与RegionServer直接建立通信

Zookeeper

1.提供Master选举,避免单点故障
2.实时监控RegionServer的状态,将RegionServer的上线和下线信息实时通知给Master
3.存储HBase的Schema信息,包括命名空间、table以及table包含的列族等信息
4.存储所有Region的寻址入口信息

HMaster

1.为RegionServer分配Region
2.负责RegionServer负载均衡
3.负责RegionServer容错,一旦发现某个RegionServer停服,会重新分配其上的Region
4.处理客户端对表结构的更新请求(创建表、删除表、修改表以及命名空间操作)

HRegionServer

1.负责维护管理Master分配给它的Region,每个RegionServer可以管理多个Region
2.负责切分在运行过程中变得过大的Region
3.能够响应客户端对数据的读写请求

HRegion

1.主要是用来存储Table中的数据,Tables 通过行键的范围 (row key range) 被水平切分成多个Region,一个Region包含了start key和end key之间的所有行数据
2.每个Region负责管理一个或者多个Store(列族)
3.当Region的数据量(10G)过大时,会发生裂变,这个Region会均分为两个Region,拆分后一个Region会发生转移(数据还在原RegionServer,只是管理权发生转移)会由两个RegionServer进行管理
4.每个Region都隶属于一个RegionServer(管理表数据的增删改查),Region是不会拆分到多个RegionServer上的
5.Region是HBase中分布式存储和负载均衡的最小单元

Store

1.用来保存表中列族数据,一个表中可以存在多个列族,意味着一个Region中可以包含多个Store
2.HBase以Store的大小来判断Region是否需要进行切分
3.Store由一个MemStore和多个StoreFile组成

MemStore

1.将数据存储到内存中,当MemStore中数据达到阈值(1.4.13版本128M)时会将数据Flush到StoreFile
2.存储的数据结构为key/value形式
3.当MemStore中数据Flush到HFile时会启动一个新的线程并且会生成一个快照
4.HBase在进行读操作时,首先访问MemStore,如果不存在则扫描HFile
5.HBase在进行写操作时,首先将数据写入到MemStore,然后Flush到文件系统

StoreFile

1.接收MemStore的Flush操作的数据
2.StoreFile是存储到文件系统中的
3.在进行存储时会先形成一系列的HFile(Key/Value),当StoreFile的数量增加到阈值时,HBase会进行合并操作,从而形成更大的StoreFile,并且会删除小的StoreFile(大合并)

HFile

存储到HDFS之上的二进制文件,数据是以key/value形式的byte数组存储的

HLog

1.HLog(WAL 预写日志) 是RegionServer级别的预写日志。主要用于数据容灾恢复
2.HLog记录的主要是数据更新和插入操作 ,一旦RegionServer停服可以根据预写日志进行数据恢复
3.HLog存储在HDFS之上
4.一旦数据成功的写入到HFile中,此时会删除预写日志

tips:HLog是RegionServer级别的预写日志,每个RegionServer拥有一个HLog日志,同一个RegionServer上的Region会共享该预写日志文件

WAL机制解析
WAL(Write-Ahead Logging)是一种高效的日志算法,几乎是所有非内存数据库提升写性能的不二法门,基本原理是在数据写入之前首先顺序写入日志,然后再写入缓存,等到缓存写满之后统一落盘。之所以能够提升写性能,是因为WAL将一次随机写转化为了一次顺序写加一次内存写。提升写性能的同时,WAL可以保证数据的可靠性,即在任何情况下数据不丢失。假如一次写入完成之后发生了宕机,即使所有缓存中的数据丢失,也可以通过恢复日志还原出丢失的数据。 

WAL的持久化等级分为如下四个等级:
1. SKIP_WAL:只写缓存&#x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值