性能优化-hbase建表及优化说明

rowkeys设计:

rowkey按照字典顺序排序,数据按照二进制字节从左至右逐一对比排序。在物理上一个列族的成员在文件系统上都是存储在一起的。存储优化都是针对列族级别的。

rowkeys  只针对从小到大排序, 实现从大到小排序:rowkey=Integer.MAX_VALUE-Rowkey,到应用层再转换。

设计案例1:用户观看的所有观影记录

设计成userid_videoid ,但是分布就很难均匀。

改进: 反转userid存储,散列userid,userid取模后进行md5加密,取前6位作为前缀加入到userid前面。

rowkey设计可以使用当前时间long作为rowkey前缀,建议rowkey都是string,方便使用shell查数据、排查错误;更容易让数据均匀分布;不必考虑存储成本。

rowkey尽量短,(影响存储效率,过长导致内存利用率低,降低索引命中率),使用使用long,尽量使用编码压缩。hbase不能很好的处理2个或三个以上的列族。hbase的flush和compaction操作是针对一个region的,当一个列族操作大量数据的时候会引发一个flush。当很多列族在flush进行flush或compaction 时,会造成很多没用的io负载。

可配置数据块大小

blockSize:64kb,和hdfs的block不同。数据块索引存储每个数据块的起始键,数据块大小的设置影响数据块索引大小,数据块越小,索引越大,占用更大内存空间。同时加载进内存的数据块越小,随机查找性能好。数据块越大,索引越小,可以加载更多hfile,序列扫描性能越好。

官方推荐是8KB~1MB,如果主要用于顺序访问,应该用大一点的block,但是随即访问会变慢,因为有大量的数据需要进行解压。对于随即访问来说,block小一点会好些,但是需要更多内存来保存block index。由于压缩编码器的内部缓存机制的影响,最小block大小大概是20-30KB.




数据块缓存

数据放进读缓存,并不是一定能提升性能。

如果一个表或表的列族只被顺序华扫描访问或很少被访问,则get或scan操作花费时间长一点是可以接受的。如果只是执行很多顺序化扫描,会多次使用缓存,并且可能滥用缓存,从而把应该放进缓存获得性能提升的数据给排挤出去,如果关闭缓存,可以让出更多缓存给其他表和同一表的其他列族使用。

默认缓存blockcache是打开的


in_memory默认是false的,该值表示hbase除了再数据块缓存中保存这个列族相比其他列族更激进之外,并不提供其他额外保证。该参数在实际应用中设置为true,访问性能不会变化太大。

布隆过滤器-bloom filter

如果某行占用100字节存储空间,一个64kb 数据块包含 64*1024/10约 700行,只把起始行放在索引位上,此时查询数据可能在表中,可能放在另一个hfile中,甚至在memstore中。从硬盘读取数据会带来io开销,影响性能,当面对一个巨大的数据集且有很多并发读用户时,就会有问题。

布隆过滤器允许对存储在每个数据块的数据做一个反向测验,当要查询某行时,先检查布隆过滤器,确定改行是否在这个数据块,返回的结果只有不在或是不知道,因此称为反向测验。

布隆过滤器需要额外占用存储空间,占用的大小随着它们的索引对象数据增长而增长。行级布隆过滤器比列标识符级布隆过滤器占用空间要少。当空间不是问题时,它们可以压榨整个系统的性能潜力。

BOOMFILTER 参数 NONE,ROWCOL,ROW

数据压缩

hfile压缩并存放在hdfs上,减少了io开销,但是提高了CPU利用率。除非确定压缩不会提升性能,否则建议打开。

压缩只是表示数据在硬盘上是压缩的,在内存或是网络上不是压缩的。


不能经常改变数据压缩编码,但是如果的确需要改变时,也可以直接更改表定义,设定新压缩编码。后面region合并时,生成的新hfile会采用新编码,这个过程不要创建新表和复制数据。

单元时间版本


生存时间

生存时间:ttl设置单元格生存周期,ttl为18000s,就是将超过5小时的数据将会在下一次大合并时被删除。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,904评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,581评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,527评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,463评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,546评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,572评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,582评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,330评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,776评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,087评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,257评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,923评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,571评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,192评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,436评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,145评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容

  • HBase存储架构图 HBase Master 为Region server分配region 负责Region s...
    kimibob阅读 5,577评论 0 52
  • Zookeeper用于集群主备切换。 YARN让集群具备更好的扩展性。 Spark没有存储能力。 Spark的Ma...
    Yobhel阅读 7,263评论 0 34
  • 最近在逐步跟进Hbase的相关工作,由于之前对Hbase并不怎么了解,因此系统地学习了下Hbase,为了加深对Hb...
    飞鸿无痕阅读 50,216评论 19 272
  • 参考:https://www.jianshu.com/p/569106a3008f 最近在逐步跟进Hbase的相关...
    博弈史密斯阅读 852评论 1 1
  • 南方,南方 南方,南方…… 初次见你, 就让我着迷! 对你的爱在心底流淌。 烟雨朦胧的小巷, 和你在此相遇。 南方...
    DuBll阅读 221评论 0 0