再多学一点吧

导航

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 2021-10-11 18:55  糟糟张  阅读(97)  评论(0)    收藏  举报