HBase,region以及HFile概念
什么是HBase的Region?
大家一定对一个词不陌生:域分区,这个域就是Region;Region定义为key的一个取值范围的子集的数据载体;比如常见的域分区有固定大小分区,比如1-10一个region,2-50一个region以此类推;不过更常见的Hash分区;但是region在每台机器的物理实现上对应的是HFile;region的分割的逻辑,其实是指region的物理实现HFile的分割。
那么HFile的分割之后数据是一分为二了,那么未来向HFile中插入数据的时候怎么知道向那个HFile中插入呢?其实每个HFile都会有自己的startRowKey以及endRowKey;被一分为二的HFile在META表中会被重新分配startRowKey以及endRowKey信息;这个两个HFile的startRowKey以及EndRowkey的合集的区间是split前的HFile的范围。
那么什么是HFile,和region到底是什么关系?我们首先看一下hbase官方的一张图:

一个Table在每个region server上面对应一个或者多个region,这里region概念其实就是一个RowSet(在KUDU里面就是称之为rowset)。一个Region在存储时候,会刷到一个或者多个HFile中,因为HFile是和ColumnFamily(CF)对应,如果一个Tabe中有多个CF,那么一个Region就会对应多个HFile;在物理实现上,其实每个CF对应一个MemStore,当(任何一个)MemStore的大小达到一定程度之后,将会把所有的Memstore刷到一个新的HFile中;当HFile达到了一定数量之后,将会触发合并(合并时机有三:memestore在flush的时候,HBase后台定时线程跑,手动跑)这里注意,合并有minor和major两种,生产环境一般会关闭major,因为会影响读写,手动在业务少的时候触发。然后当HFile达到一定大小后,将会进行分割,分割的原则就是对半分,整体来讲Region的key值范围不变,只不过分成两个文件而已;然后Region Server将会通知META,对于region的取值范围对应的HFile进行修改。
因为HBase对于多于两个CF支持并不好,其实HBase更加支持一个CF,这样在MemStore刷硬盘的时候不会有连带反应(一个memstore还很少,被迫刷盘),如果这样看来其实列式存储的特性并不明显,因为在每个HFile中还是row的形式存储。但是HBase和传统数据差别还是在于数据分块存储,这样可以进行并行查询,提高查询效率。
分片,就是分片,一个region就是一个数据分片;就是elasticsearch里面的分片;一个索引相当于HBase里面的table概念(到了6之后是这样,ES5的时候index还是库概念)。
其实到了这里,你会发现,HBase严格来讲并不是列式存储,或者说列族存储更合适一些,因为其本质是key-value的存储机制,当一条数据PUT到HBase的Region Server,其实内部处理是把这一条记录拆开来,每个cell配上相同的rowkey(rowkey早就存在的,其实打到那个region server就是根据rowkey来路由的,rowkey是client端根据规则生成)。所以说HBase是key-value存储更加合适一些,这里和MongoDB比较类似,MongoDB相对而言是比较轻量级的Key-value数据库,因为没有和HDFS绑扎一起。
HBase,region以及HFile概念的更多相关文章
- 【原创】大叔问题定位分享(13)HBase Region频繁下线
问题现象:hive执行sql报错 select count(*) from test_hive_table; 报错 Error: java.io.IOException: org.apache.had ...
- 【转】HBASE Region in Transition issue on Master UI
[From]https://community.hortonworks.com/content/supportkb/244808/hbase-region-in-transition-issue-on ...
- Hbase原理、基本概念、基本架构
来源:http://blog.csdn.net/woshiwanxin102213/article/details/17584043 概述 HBase是一个构建在HDFS上的分布式列存储系统:HBas ...
- [Hbase]Hbase章1 Hbase框架及基本概念
Hbase框架介绍 HBase是一个分布式的.面向列的开源数据库. 不同点: l 和一般的关系数据库不同,hbase是一个适合于非结构化数据存储的数据库. l Hbase是基于列而不是基于行的模式 ...
- HBase Region重点剖析
Region的概念 Region是HBase数据管理的基本单位.数据的move,数据的balance,数据的split,都是按照region来进行操作的. region中存储这用户的真实数据,而为了管 ...
- HBase Region级别二级索引
我们会经常谈及二级索引,这是对全表数据进行另外一种方式的组织存储,是针对table级别的.如果要为HBase上的表实现一个强一致性的二级索引,那么就无法逃避分布式事务,而这一直是用户最期待的功能. 而 ...
- HBase Region合并分析
1.概述 HBase中表的基本单位是Region,日常在调用HBase API操作一个表时,交互的数据也会以Region的形式进行呈现.一个表可以有若干个Region,今天笔者就来和大家分享一下Reg ...
- HBase Region分裂实现
分裂策略 不同的分裂策略的实现需要继承RegionSplitPolicy,主要实现两个方法: shouldSplit()表示是否需要分裂 getSplitPoint()得到分裂点rowkey 从 HB ...
- HBase数据模型的一些概念
首先来先理解一个概念:HBase是一种列式存储的分布式数据库. 表 在HBase中数据以表的形式存储.使用表的主要原因是把某些列组织起来一起访问,同一个表中的数据通常是相关的 ...
随机推荐
- R之内存管理
引言 R的内存管理机制究竟是什么样子的?最近几日在讲一个分享会,被同学问到这方面的问题,可是到网上去查,终于找到一篇R语言内存管理不过讲的不清不楚的,就拿memory.limit()函数来说,是在wi ...
- Windows Server 2008 R2 web服务器发布在线系统时遇到的问题
1 HTTP 错误 404.2 - Not Found,由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面(如下图) 打开 Internet 信息服务(IIS) ...
- 20162311 课堂测试 泛型类—Bag
课堂测试 泛型类-Bag 目录 一.题目要求 二.设计思路 三.问题和解决办法 四.代码运行截图 五.代码托管地址 六.总结 一.题目要求 题目:泛型类-Bag 返回目录 二.设计思路 自定义一个Ba ...
- UVa 10294 项链和手镯(polya)
https://vjudge.net/problem/UVA-10294 题意: 手镯可以翻转,但项链不可以.输入n和t,输出用t种颜色的n颗珠子能制作成的项链和手镯的个数. 思路: 经典等价类计数问 ...
- BZOJ 3572 【HNOI2014】 世界树
题目链接:世界树 首先看到\(\sum m_i\le 3\times 10^5\)这个条件,显然这道题就需要用虚树了. 在我们构建出虚树之后,就可以用两遍\(dfs\)来求出离每个点最近的议事处了.然 ...
- data.table 中的动态作用域
data.table 中最常用的语法就是 data[i, j, by],其中 i.j 和 by 都是在动态作用域中被计算的.换句话说,我们不仅可以直接使用列,也可以提前定义诸如 .N ..I 和 .S ...
- Factory Method(工厂方法)
Factory Method(工厂方法) 意图: 定义一个用于创建对象的接口,让子类决定实例化哪一个类.Factory Method 使一个类的实例化延迟到其子类. 适用性: 当一个类不知道它所必须创 ...
- 牛客网——G大水题
链接:https://www.nowcoder.net/acm/contest/75/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K ...
- hdu 3682 10 杭州 现场 C To Be an Dream Architect 容斥 难度:0
C - To Be an Dream Architect Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d &a ...
- python3 中文乱码,UnicodeEncodeError: 'latin-1' codec can't encode characters in position 10-13: ordinal not in range(256)
将其源代码复制下来运行之后,报了下面这个错误: UnicodeEncodeError: 'latin-1' codec can't encode characters in position 9-13 ...