HBase数据存取流程
2024-10-19 02:17:52
一、HBase的特点是什么
1.HBase一个分布式的基于列式存储或者行式存储的数据库,基于hadoop的hdfs存储,zookeeper进行管理。
2.HBase适合存储半结构化或非结构化数据,对于数据结构字段不够确定或者杂乱无章很难按一个概念去抽取的数据。
3.HBase为null的记录不会被存储.
4.数据存储模式为key,value模式:(Table,Rowkey,Column,Timestamp)-> value
5.HBase是主从架构。Hmaster作为主节点,Hregionserver作为从节点。
二、HBase存数据流程
流程:Client请求Zookeeper确定meta表所在的RegionServer所在的地址,接着根据Rowkey找到数据所归属的RegionServer;用户提交put或delete请求时HbaseClient会将put或delete请求添加到本地buffer中,符合一定条件
会通过异步批量提交服务器处理。
接着数据到达Region后,服务端处理流程如下:
流程:RegionServer去获取RowLock,region更新共享锁;接着Hbase会先写写日志WAL(数据可靠性)再写缓存MemStore(阈值默认64M,每个列族对应一个Store下的MemStore);然后释放锁后将日志落到HDFS;若MemStore达到阈值则将缓存数据落磁盘StoreFile,最后多个StoreFile发生合并;若StoreFile很大会触发split操作,将当前region分割成2个Region,并同步到Hmaster。
三、HBase取数据流程
HbaseClient的操作和存数据类似
服务器操作流程:
RegionServer收到get请求后,对当前Region进行Scan,接着会根据列族对Store进行Scan,同时会对对应的MemStore进行Scan;最后找到我们要的数据返回给Client。注意:一个StoreScanner会对应多个StoreFileScanner,整个过程是一个层级关系。
四、HBase存取优化
检索优化(BloomFilter):应用BloomFilter来提高随机读的性能,BloomFilter是列族级别的配置
五、HBase API使用
最新文章
- iOS 获取设备唯一标示符的方法
- Alpha阶段总结
- iOS真机测试碰到错误linker command failed with exit code 1 (use -v to see invocation)
- HDU2527 哈夫曼编码
- js判断函数是否存在、判断是否为函数
- Crontab的格式
- jQuery实现等比例缩放大图片
- Nginx实现静态资源的缓存
- mysql5.6优化建议
- php 预定义接口
- Selenium2Library中的Get Alert Message
- hdu 5501 The Highest Mark(贪心+01背包)
- i++;++i的区别
- bzoj千题计划214:bzoj3589: 动态树
- Spring BeanWrapper分析
- Android测试(三)——burpsuite抓包设置
- Practical Node.js (2018版) 第5章:数据库 使用MongoDB和Mongoose,或者node.js的native驱动。
- 踩坑tomcat8.5的cookie机制
- 弹性盒模型justify-content属性
- CSS定位背景图片 background-position
热门文章
- Dialog向Activity传递数据
- ios虚拟机安装 (三)
- JS + jQuery 实现元素自动滚动到底部,兼容IE、FF、Chrome
- springMVC入门-04
- Jmeter入门--性能测试实战
- 计算机网络通信、线程、tcp、udp通信及信号量等读书笔记
- Oracle诊断工具 - ORA-2730x Troubleshooting Tool
- MySQL: OPTIMIZE TABLE: Table does not support optimize, doing recreate + analyze instead
- [翻译] LLSimpleCamera
- POST请求的forHTTPHeaderField