再多学一点吧

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

HBase面试

 宕机问题:

 MapReduce读写HBase

 

 

HBase特点:

1.大:一个表可以有上亿行,上百万列

2.面向列:面向列表(蔟)的存储和权限控制,列(蔟)独立检索

3.稀疏:对于为空(NULL)的列,并不占用存储空间,因此,表可以设计非常稀疏

4.无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列

5.数据多版本:每个单元中的数据可以有多个版本,默认情况下,版本号自动分配, 版本号就是单元格插入时的时间戳。 

6.数据类型单一:HBase中的数据都是字节数组,没有类型。

ROWKEY

与NoSQL数据库一样,ROW KEY是用来检索记录的主键

访问 HBase table 中的行,只有三种方式:

* 直接通过单个RowKey
* 指定RowKey的范围
* 还可以指定跟RowKey有关的正则表达式去访问

最大长度是64KB,实际应用中长度一般为 10 ~ 100bytes

按照字典顺序存储的(1 11 111 1111 2 22 3 4 5......)

列蔟

属于表的Schema的一部分,在建表的时候必须指定至少一个Columns Family

HBase中的列归属于某一个列蔟

HBase在储存、权限控制、版本控制都是在列蔟层面上进行的

一个列蔟对应一个store

时间戳

就是一直提到的版本的概念,每条数据插入的时候都会记录插入时间(时间戳,64位整型)

如果有多个版本,会按照时间戳的倒序(时间戳越大,表示数据越新)储存数据,在获取的时候,如果不指定版本,那么会默认最新一条的数据

如果设置了TTL(Time to Live),那么HBase将会根据TTL以及数据的时间戳去删除过期的数据

Cell

Cell 是由 {row key,column(=< family> + < label>),version} 唯一确定的单元。

Cell 中的数据是没有类型的,全部是字节码形式存储。

Region的分裂策略

region中存储的是一张表的数据,当region中的数据条数过多的时候,会直接影响查询效率。当region过大的时候,region会被拆分为两个region,HMaster会将分裂的region分配到不同的regionserver上,这样可以让请求分散到不同的RegionServer上,已达到负载均衡 , 这也是Hbase的一个优点 。

 

posted on   糟糟张  阅读(92)  评论(0编辑  收藏  举报

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示