在HBase中细节上的设计,最最最重要的就是我该选取什么做Rowkey,Rowkey的选择,最直接的影响就是对你之后分析数据的影响了。

Rowkey是不可分割的字节数,按照字典排序由低到高存储在表中。一个空的数组用来标识表空间的起始或结尾。

在设计HBase表时,Rowkey设计是最重要的事情,应该基于预期的访问模式来为Rowkey建模。Rowkey决定了访问HBase表时可以得到的性能,原因有两个:Region基于Rowkey为一个区间的行提供服务,并且负责区间的每一行;HFile在硬盘上存储有序的行。当Region将内存数据刷写为HFile时,这些行已经排过序了,也会有序的写到硬盘上。Rowkey的有序特性和底层存储格式可以保证HBase表在设计Rowkey之后的良好性能。

关系型数据库可以在多列上建立索引,但是HBase只能在Rowkey上建立索引。访问数据库的最主要方式就是使用Rowkey。非Rowkey访问,即在不清楚Rowkey前提下访问表,可以使用全表扫描。设计Rowkey有各种技巧,而且可以针对不同访问模式进行优化。

Rowkey是HBase的KeyValue存储中的Key,通常将用户要查询的字段作为Rowkey,查询结果作为Value。

设计Rowkey之前,要注意一下几点:

1,Rowkey是以字典顺序从大到小排序

         原生HBase只支持从小到大的排序

2,尽量散列Rowkey设计

        散列之后的数据,就能保证所有的数据都不是在一个Region上,从而避免读写的时候负载会集中在个别Region上。
        

3,RowKey的长度尽量短

       如果Rowkey太长,第一存储开销会增加,影响存储效率;第二内存中Rowkey字段过长,会导致内存的利用率降低,进而减低索引命中率。
       一般做法:
             时间使用Long来表示;
             尽量使用压缩编码;

HBase的Rowkey设计(mark)的更多相关文章

  1. 大数据性能调优之HBase的RowKey设计

    1 概述 HBase是一个分布式的.面向列的数据库,它和一般关系型数据库的最大区别是:HBase很适合于存储非结构化的数据,还有就是它基于列的而不是基于行的模式. 既然HBase是采用KeyValue ...

  2. HBase之六:HBase的RowKey设计

    数据模型 我们可以将一个表想象成一个大的映射关系,通过行健.行健+时间戳或行键+列(列族:列修饰符),就可以定位特定数据,Hbase是稀疏存储数据的,因此某些列可以是空白的, Row Key Time ...

  3. Hadoop生态圈-Hbase的rowKey设计原则

    Hadoop生态圈-Hbase的rowKey设计原则 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  4. Hbase的rowkey设计

    HBase的rowKey设计技巧 1.设计宗旨与目标 主要目的就是针对特定的业务模型,按照rowKey进行预分区设计,使之后面加入的数据能够尽可能的分散于不同的rowKey中.比如复合RowKey. ...

  5. HBase的RowKey设计原则

    HBase是三维有序存储的,通过rowkey(行键),column key(column family和qualifier)和TimeStamp(时间戳)这个三个维度可以对HBase中的数据进行快速定 ...

  6. HBase的rowkey设计(含实例)

    转自:http://www.aboutyun.com/thread-7119-1-1.html 对于任何系统的数据设计,我们都想提高性能,达到资源最大化利用,那么对于hbase我们产生如下问题: 1. ...

  7. hbase 利用rowkey设计进行多条件查询

    摘要 本文主要内容是通过合理Hbase 行键(rowkey)设计实现快速的多条件查询,所采用的方法将所有要用于查询中的列经过一些处理后存储在rowkey中,查询时通过rowkey进行查询,提高rowk ...

  8. Hbase中rowkey设计原则

    1.热点问题 在某一时间段,有大量的数据同时对一个region进行操作 2.原因 对rowkey的设计不合理 对rowkey的划分不合理 3.解决方式 rowkey是hbase的读写唯一标识 最大长度 ...

  9. Hbase笔记——RowKey设计

    一).什么情况下使用Hbase 1)传统数据库无法承载高速插入.大量读取. 2)Hbase适合海量,但同时也是简单的操作. 3)成熟的数据分析主题,查询模式确立不轻易改变. 二).现实场景 1.电商浏 ...

随机推荐

  1. [WSUS] [Windows 10 Upgrade 1607/1703] 升级出错,出现 0xC1800118 或者卡在下载中…… 0%后失败

    1. 安装 KB3159706 ,并进行安装后维护操作:https://support.microsoft.com/en-us/help/3159706/update-enables-esd-decr ...

  2. UITableView中cell点击的绚丽动画效果

    UITableView中cell点击的绚丽动画效果 本人视频教程系类   iOS中CALayer的使用 效果图: 源码: YouXianMingCell.h 与 YouXianMingCell.m / ...

  3. GIT学习---GIT&github的使用

    GIT&github入门 版本控制的原理: 根据md5进行文件的校验[MD5的特性就是每次的输入一致则输出也一致],对于每次的修改进行一次快照 版本控制的2个功能: 版本管理  +   协作开 ...

  4. 数据库服务注册(使用命令注册):解决my.ini配置文件不存在的问题

    注册数据库的时候,有一键式安装,还有一种通过压缩包安装.今天主要来讲一下压缩包安装会出现的问题. 1. 新建一个my.ini文件,里面内容为: [client] port=3306 default-c ...

  5. K8S Deployment 命令

    创建 Deployment kubectl create -f https://kubernetes.io/docs/user-guide/nginx-deployment.yaml --record ...

  6. 第八章 计时器(BEEPER2)

    /*------------------------------------- BEEPER2.C -- Timer Demo Program No.1 (c) Charles Petzold, 19 ...

  7. AltiumDesigner元器件搜索中英文对照

    个人常用 扬声器 spearker 计量表(电流表,电压表) meter 变压器 Trans CT 肖特基二极管 D Schotty 额外补充 英文名称       中文释义 2N3904  NPN型 ...

  8. 字符串,元组,列表; 切片&range

    总结:字符串: "" 组成元组: () 组成列表: [] 组成 切片 中括号冒号: [5: 0: -2] # print(s2[5:0:-2]) 此步长为-2,则从右往左取, 则a ...

  9. ElasticSearch学习之——基本的文档CURD

    一.文档的添加 POST http://127.0.0.1:9200/{index}/{type}/{id} { "key":"value", "ke ...

  10. Hive学习之路 (六)Hive SQL之数据类型和存储格式

    一.数据类型 1.基本数据类型 Hive 支持关系型数据中大多数基本数据类型 类型 描述 示例 boolean true/false TRUE tinyint 1字节的有符号整数 -128~127 1 ...