Hbase写入性能优化

                                          Hbase写入性能优化

背景

    HBase是一个nosql数据库,既然是数据库,就会涉及到增删改查,而且hbase一般是海量数据场景下使用,使用的不好就会出现性能问题,这里我将自己总结的一些经验分享给大家,仅供参考。

1.数据格式

    io是影响性能的主要方面,数据要经过client提交给server端,然后再持久化到磁盘,数据本身越小性能越高。

    hbase可以通过rowkey快速查询,也可以通过filter进行过滤搜索(不建议使用,性能很差),其他不需要查询的数据可以尽可能的减小,比如将其他数据进行压缩(同时需考虑解压缩的性能开销),一般我们用protobuf进行编码后再进行存储(编码后会不方便查看,但比存json性能高,反序列化性能也比json好);另外,在定义cloumn时,也尽可能短,不要使用超长字符串定义属性。

2.启用表压缩

    启用表压缩可以很大程度节约磁盘,一般采用LZO或者snappy进行压缩,如果是json数据,压缩效率可以达到90%。

3.启用分表策略 

    超大表在使用时会存在诸多不便,region非常多,不按rowkey的数据访问性能极差,一些数据导出功能基本不可用,数据迁移要命等都是致命问题。

   hbase不像elasticsearch天生就支持分表,因此需要自己定义分表策略,可以根据数据的规模和使用途径,按业务类型或者年,月,日等进行分表,分表会带来几个问题:

(1)无法知道某个用户(假设存的是用户数据)是否产生过数据,因为分布在很多表里,这个时候如果要查询数据,需要定义查询范围,比如最近一个月或者6个月。

(2)如果想查询某个用户最后一次上报数据,需要通过视图,快照的方式弥补。

(3)由于分表之后会不断创建新表,需要注意写热点问题。

但分表的好处也不少:

(1)方便做数据老化,可以按天或者按月做数据删除或者归档到磁带。

(2)分表之后,新表的region相对要少的多,数据量也少的多,再做数据扫描时效率要高。

(3)数据迁移和备份的效率要高,可以对单个表做迁移和备份。

4.启用建表预分区

    hbase建表是默认只有一个region,也就是说所有的数据都会往一个region里面写,当然可以通过region拆分策略分成多个region,但具体多少region才会匹配当前服务器的能力?再加上如果启用了分表策略,每次新建表的时候都会出现写热点,这个时候会是致命的。

    region预分区就是提前创建多个region,每个region有startkey和endkey,不同的数据根据自己生成的rowkey会落入不同的region。具体分多少个region,可以根据集群的数量,数据的并发等来决定,预分的region数不代表将来总的region数,在预分的region达到region拆分的策略后还会进行自动拆分。

5.多线程写入

    多线程写入,一是可以充分利用client端物理资源,避免客户端的逻辑处理,导致写入性能卡在客户端;二是可以快速写满buffer,快速的刷写磁盘,一般我们采用线程池进行写操作,但同时要注意线程队列的控制,避免OOM,对于客户端的内存容量,也需要适当调高一些。

6.批量异步提交

   hbase1.x之后,有新的api支持异步提交,通过BufferedMutator API,每次提交List<Put>的数据。一般我们会结合kafka进行实时数据存储,通过kafka的批量拉取特性,批量提交hbase。

7.hbase日志文件写入(WAL)

      WAL又可以理解HLOG操作,是保证数据可靠性的重要举措,HLOG存储在hdfs上,当出现宕机或者regionserver挂掉等场景,数据可以从hlog恢复。

     WAL分异步和同步,也可以关闭,hbase默认是同步写hlog,为了提升性能,我们可以改为异步写hlog或者不写hlog(需要评估数据的重要性,短暂的少量数据丢失是否可以容忍),WAL有以下几种策略。

SKIP_WAL:只写缓存,不写HLog日志。这种方式因为只写内存,因此可以极大的提升写入性能,但是数据有丢失的风险。在实际应用过程中并不建议设置此等级,除非确认不要求数据的可靠性。

ASYNC_WAL:异步将数据写入HLog日志中。

SYNC_WAL:同步将数据写入日志文件中,需要注意的是数据只是被写入文件系统中,并没有真正落盘,默认。

FSYNC_WAL:同步将数据写入日志文件并强制落盘。最严格的日志写入等级,可以保证数据不会丢失,但是性能相对比较差。

同样,除了在创建表的时候直接设置WAL存储级别,也可以通过客户端设置WAL持久化等级,代码:

put.setDurability(Durability.SYNC_WAL);

8.关于Compaction

    hbase默认是自动进行Compaction,即hfile的自动合并操作,合并会带来较大的资源开销,因此我们需要合理的Compaction策略,一个是Compaction文件数量的合理设置,另一个是选择凌晨等数据写入较少的时候Compaction,需要采用手动Compaction,禁用自动Compaction


   

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

推荐阅读更多精彩内容

  • 本文首先简单介绍了HBase,然后重点讲述了HBase的高并发和实时处理数据 、HBase数据模型、HBase物理...
    达微阅读 2,735评论 1 13
  • 参考:https://www.jianshu.com/p/569106a3008f 最近在逐步跟进Hbase的相关...
    博弈史密斯阅读 858评论 1 1
  • 一、简介 Hbase:全名Hadoop DataBase,是一种开源的,可伸缩的,严格一致性(并非最终一致性)的分...
    菜鸟小玄阅读 2,388评论 0 12
  • 比特科技: 存储、数据库、大数据技术 » HBase原理和设计 http://www.bitstech.net/...
    葡萄喃喃呓语阅读 728评论 0 11
  • 一、Region 概念 Region是表获取和分布的基本元素,由每个列族的一个Store组成。对象层级图如下: T...
    达微阅读 1,505评论 0 1