hbase 数据写入过程习知

本文详细介绍了HBase的数据写入过程,从客户端的Htable API调用开始,通过Zookeeper定位到HRegionServer,然后在服务端的HRegionServer上写入WAL和MemStore,讨论了MemStore的刷新、压缩以及Region的拆分条件,揭示了HBase如何保证数据一致性和高可用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,客户端client  

 1,  Htable API 调用put方法发送写入请求,zookeeper查找系统表.ROOT.定位.mete.表存储位置,

 2,  到定位的HRS(hregionserver)根据tablename以及rowkey直接定位region的HRS

 3, 定位了region的HRS,接着client 跟 hregionserver通信,处理region写请求


二,服务端hregionserver

 1, 写wal(write ahread log)(可以程序设置不写),wal写成功接着写memorystore

 2, memorystore 超出配置 hbase.hregion.memstore.flush.size 的大小时,拷贝副本(副本拷贝时block写入操作),副本add到flush队列,等待flush线程进行flush到磁盘

 3,MemorystoreFlusherThread 监控hregionserver 的memorystore 总大小 超出hbase.regionserver.global.memstore.upperLimit/lowerLimit配置时(默认0.4/0.35 * HRegionServer 的 heap 堆内存大小/在hbase-env.sh 的 export HBASE_HEAPSIZE=10240 参数设置),block hregionserver的写入操作,待flush部分到磁盘,重新wakeup写入操作,一般hregionserver日志中出现 

regionserver.MemStoreFlusher: Blocking updates on arch0973,60020,1393482371785: the global memstore size 4.0 G is >= than blocking 4.0 G size,意味着超出。

 4, 对应region下memorystore flush到磁盘的文件storefile数超出hbase.hstore.blockingStoreFiles时则block所有的写请求进行compaction,以减少storefile数量(可优化配置)

 5, compaction(跟据数据标志合并,过滤旧版本)所有的storefile得到一个大的storefile,当大的storefile filesize 大于hbase.hregion.max.filesize,region进行split,region拆分,下线,也相应block相应的写入操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值