Hbase设计原则

作者: 终生学习丶 | 来源:发表于2017-11-07 21:33 被阅读71次

Hbase存储架构

Hbase通过元数据信息来管理,数据都是通过ReginServer存储在HDFS上

Hbase是列式存储,以rowkey做唯一标识,Rowkey 是一个二进制码流,rowkey里面有多个列族(info,job),一个列族有多个列(sex和name),列下面包含对应的数据(famale,nick)

Hbase架构

Rowkey设计原则

rowkey作为hbase里的唯一标识,且是自动排序的,按照abc的顺序排序.Hbase有三种查询方式  通过get方式,指定rowkey获取唯一一条记录  通过scan方式,设置startRow和stopRow参数进行范围匹配   通过全表扫描,即直接扫描整张表中所有行记录

1. rowkey的长度设计原则

rowkey的大小网上大都是说10-100个字节, 在我看来,在唯一标识和可读性识别性的前提下,rowkey越小越好!

2. rowkey散列原则

rowkey要散列是因为它要放到分区里面,假如rowkey不够散列,那很有可能集中到一个分区,导致数据倾斜.降低查询效率

3. rowkey唯一原则

保证其唯一性,可以的话,保证它的可读性,有意性

4. 时间戳rowkey设计

有些事务数据是带时间属性的,那样建议把时间戳放到rowkey中,那样利于检索,提高效率,可以用hash,亦或来打散


Hbase预分区

在建表的时候,要清楚数据的key是怎么分布的,然后再对Hbase的region预分区,也就是多建几个表,这就是Hbase的预分区.rowkey的预分区可以防止rowkey设计不合理的数据插入,可以缓解数据的热写,热写就是数据集中写到一台或者多台机器上,从而提高数据插入的效率


Hbase的读写流程

Hbase读流程

HRegionServer保存着meta表以及表数据,要访问表数据,首先Client先去访问zookeeper,从zookeeper里面获取meta表所在的位置信息,即找到这个meta表在哪个HRegionServer上保存着。

接着Client通过刚才获取到的HRegionServer的IP来访问Meta表所在的HRegionServer,从而读取到Meta,进而获取到Meta表中存放的元数据。Client通过元数据中存储的信息,访问对应的HRegionServer,然后扫描所在HRegionServer的Memstore和Storefile来查询数据。最后HRegionServer把查询到的数据响应给Client。

Hbase写流程

Client也是先访问zookeeper,找到Meta表,并获取Meta表元数据。

确定当前将要写入的数据所对应的HRegion和HRegionServer服务器。

Client向该HRegionServer服务器发起写入数据请求,然后HRegionServer收到请求并响应。

Client先把数据写入到HLog,以防止数据丢失。

然后将数据写入到Memstore。

如果HLog和Memstore均写入成功,则这条数据写入成功

如果Memstore达到阈值,会把Memstore中的数据flush到Storefile中。

当Storefile越来越多,会触发Compact合并操作,把过多的Storefile合并成一个大的Storefile。

当Storefile越来越大,Region也会越来越大,达到阈值后,会触发Split操作,将Region一分为二。

相关文章

  • HBase-interview-questions

    一 HBase存储结构 HBase结构图示 二 rowkey设计原则 1️⃣ rowkey长度原则 : 建议越短越...

  • Hbase设计原则

    Hbase存储架构 Hbase通过元数据信息来管理,数据都是通过ReginServer存储在HDFS上 Hbase...

  • HBASE中column family的设计,rowkey的设计

    HBASE中column family的设计,rowkey的设计,以及row key的设计原则问题原创道法—自然 ...

  • 大数据面试题目汇集

    1. Hbase表设计原则 http://gao-xianglong.iteye.com/blog/2031543...

  • HBase RowKey设计原则(全面)

    这段时间实在太忙了,工作和备考几乎用尽了所有时间,以前的爱好都渐渐远离了,现在也就更新博客这个小喜好了,每天看到日...

  • Hbase 入门

    Hbase简介 参考:Hbase技术详细学习笔记 如何合理的设计HBase RowKey? Hbase是分布式、面...

  • HBase

    简述 1 HBase的应用场景 2 HBase的概念与定位 3 HBase架构体系与设计模型 HBase架构体系 ...

  • Hbase架构和设计

    Hbase架构和设计

  • HBase框架基础(五)

    * HBase框架基础(五) 本节主要介绍HBase中关于分区的一些知识。 * HBase的RowKey设计 我们...

  • HBase坑

    HBase 坑 数据热点问题(rowkey 设计) 1.唯一性 2.散列性 3.长度原则 一般解决方案: http...

网友评论

    本文标题:Hbase设计原则

    本文链接:https://www.haomeiwen.com/subject/sfncsxtx.html