![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
hbase
文章平均质量分 66
HanJuly9569
热衷于探索世界的程序猿一枚…
展开
-
Hbase文章目录
Hbase写入流程Hbase读取数据流程Hbase在内存读取数据的原理Hbase在文件中扫描数据的原理Hbase LSM树与Bloom过滤器Hbase Flush机制流程Hbase Compact机制流程Hbase Split机制流程原创 2021-03-14 19:56:25 · 90 阅读 · 0 评论 -
Hbase三大机制-合并文件流程
compact的类型Minor Compact 合并一部分小文件,不会处理标记删除,过期的数据Major Compact 合并所有的文件,处理标记删除,过期的数据,一般会关闭自动合并,在低峰时期手动合并触发的时机MemoryStore flush时,发现storefile的数量大于某个阈值时后台程序定时检查,首先检查是否满足上面的条件,然后在检查最早的时间是否是7天前的,然后执行Major Compact手动触发,无论minor compact 还是 major compact 都可以手.原创 2021-03-14 19:49:50 · 574 阅读 · 0 评论 -
Rigion切分流程
Rigion 切分策略也可以说是切分的时机静态大小切分策略(0.94版本之前) 从名字看是达到一定的大小即开始切割,注意这里是region中的某一个Store的大小超过了阈值(hbase.hregion.max.filesize) 存在的问题 它对大表还算一般友好,因为会被不断的切割,但时间长了后就会产生很多Region 对小表特别不友好,因为它永远不会分割 Region数应该是需要适中就好,太大,数据太分散了会引起Re原创 2021-03-14 19:43:02 · 555 阅读 · 0 评论 -
Hbase三大机制-MemoryStore Flush
MemoryStore Flush的触发时机首先flush的单位是Region(一个region中可能存在多个MS)不是memoryStore某一个MemoryStore大小超过128M(默认)Region中的MemoryStore的总大小超过256MRegionServer中的JVM的40%,从MemoryStore中Region开始刷新,直到小于阈值即停止RegionServer中HLog数量达到上限时,从最早的HLog对应的Region刷新定时1小时刷新手动刷新以上几种触发方式解决原创 2021-03-14 19:37:24 · 445 阅读 · 0 评论 -
hbase lsm 树 与bloom过滤器
Hash 索引机制Hash索引机制支持增删改及随机读写操作,复杂度是O(1),对查询非常友好。但总所周知Hash是无序的,如果需要有序的数据,那么它便无能无力B+树它是一颗横跨内存与磁盘的树,树的子节点可以精确的找到某一个值。但数据在逻辑上是连续的,物理上是不连续的。比如:有可能1,2在树上靠的非常近,但当需要从磁盘读取数据,说不定一个在一端,磁盘需要扫描一圈才能走到下一个值所以它对初期读取数据是非常友好,但当数据越来越多时,可能读取性能就会下降。主要原因就数据在磁盘上不是顺序写入的,而是随机写入原创 2021-03-14 18:59:06 · 292 阅读 · 0 评论 -
Hbase内存数据结构跳跃表
Hbase内存中的数据怎么存储的?首先数据在内存中是有序的,按字典顺序进行排序,如:100,110,111内存中的数据结构为上图:跳跃表跳跃表概念:多层链表组成,每一层链表都有直接向下一层跳跃的连接处上层链表均为下层链表的子集每一层链表都是有序的跳跃表具有链表的有序性又解决了链表的查询复杂度高的问题。从O(n) 降到 log(n)查询:首先从左上角开始,在最底层的链表中查找如果遇到比自己小的,继续在本层链表中搜索如果遇到比自己大的,说明后面不可能存储在查找的值了,跳跃到下.原创 2021-03-14 18:43:33 · 341 阅读 · 0 评论 -
Hbase扫描HFile原理
HFile文件结构首先要了解下它,才能知道它是怎么查找的。如上图:HFile分为四部分(针对HFile v2)Trailer 我理解它就是一个类似于文件头的东西,存储一些HFile的基本信息,比如版本号,各个块的偏移量Load-on-open section 启动时会将它存入内存,保存一些一级索引的数据No-Scanned block section 理解它为二级索引即可scanned block section 理解它为三级索引加数据即可构建索引根据上图中的root data i原创 2021-03-14 18:29:51 · 218 阅读 · 0 评论 -
Hbase扫描数据流程
前提读取的过程中的寻址与大概流程其实与写入是一致的。重点看:在内存中查找和在StoreFile上的查找过程简述:先在zookeeper中找到root表regionserver的地址然后在root表中找到meta表的地址在meta表中找对应要扫描的表的地址整体扫描过程从内存到文件首先构建scanner体系,构建一个regionScanner -> storeScanner-> storeFileScanner,MemstoreScanner这里说实话也不太明白,目前只原创 2021-03-14 18:00:47 · 518 阅读 · 0 评论 -
Hbase写入过程
概念如上图:HMaster管理多个HRegionServer一个RegionServer存在多个HRgion一个HRegion有一个预写日志和多个store一个store存在一个memoryStore和多个StoreFileStoreFile是HFile的逻辑实现,其实就是一个东西写入流程:首先客户端配置zookeeper的地址,然后去zookeeper获取元数据表存放的位置然后找到具体的regionserver的地址与对应的表向内存中写入数据,到此对于客户端就结束了,所以hba.原创 2021-03-12 23:35:35 · 238 阅读 · 0 评论