美文网首页
HBase(2)优化

HBase(2)优化

作者: 长安十一少 | 来源:发表于2019-06-29 22:20 被阅读0次

Region大小设置

Region大的话 意味着较大的 StoreFile,compaction 时对内存也是一个挑战。如果你的应用场景中,某个时间点的访问量较低,那么在此时做 compact 和 split,既能顺利完成 split 和 compaction,又能保证绝大多数时间平稳的读写性能。compaction 是无法避免的,split 可以从自动调整为手动。只要通过将这个参数值调大到某个很难达到的值,比如 100G,就可以间接禁用自动 split(RegionServer 不会对未到达 100G 的 Region 做 split)。再配合 RegionSplitter 这个工具,在需要 split 时,手动 split。手动 split 在灵活性和稳定性上比起自动 split 要高很多,而且管理成本增加不多,比较推荐 online 实时系统使用。内存方面,小 Region 在设置 memstore 的大小值上比较灵活,大 Region 则过大过小都不行,过大会导致 flush 时 app 的 IO wait 增高,过小则因 StoreFile 过多影响读性能。

RegionServer的请求处理IO线程数

较少的IO线程适用于处理单次请求内存消耗较高的Big Put场景(大容量单词Put或设置了较大cache的scan,均数据Big Put)或RegionServer的内存比较紧张的场景。较多的IO线程,适用于单次请求内存消耗低,TPS要求(每次事务处理量)非常高的场景。这只该值的时候,以监控内存为主要参考,在hbase-site.xml配置文件中配置项为hbase.regionserver.handle.count

分配何时的内存给RegionServer

在不影响其他服务的情况下,越大越好。在HBase的conf目录下的hbase-env.sh的最后添加export HBASE_REGIONSERVER_OPTS="- Xmx16000m $HBASE_REGIONSERVER_OPTS"其中16000m为分配给REgionServer的内存大小。

缓存策略(setCaching)

创建表的时候,可以通过HColumnDEscriptor.setInMemory(true)将表放到RegionServer的缓存中,保证在读取的时候被cache命中。

设置存储生命期

创建表的时候,可以通过HColumnDescriptor.setTimeToLive(int timeToLive)设置表中数据的存储生命周期,过期数据将自动被删除。

Rowkey优化

rowkey是按照字典存储,因此设置rowkey时,要充分利用排序特点,将经常一起读取的数据存储到一块,将最近可能会被访问的数据放到一块。

rowkey若是递增生成的,建议不要使用正序直接写入,可以使用字符串反转方式写入,使得rowkey大致均衡分布,这样设计的好处是能将 RegionServer的负载均衡,否则容易产生所有新数据都在集中在一个RegionServer上堆积的现象,这一点还可以结合table的与分区 设计。

缓存查询结果

对于频繁查询 HBase 的应用场景,可以考虑在应用程序中做缓存,当有新的查询请求时,首先在缓存中查找,如果存在则直接返回,不再查询 HBase;否则对 HBase 发起读请求查询,然后在应用程序中将查询结果缓存起来。至于缓存的替换策略,可以考虑 LRU 等常用的策略。

批量读

通过调用HTable.get(Get)方法可以根据一个指定的 row key 获取一行记录,同样 HBase 提供了另一个方法:通过调用HTable.get(List)方法可以根据一个指定的 row key 列表,批量获取多行记录,这样做的好处是批量执行,只需要一次网络 I/O 开销,这对于对数据实时性要求高而且网络传输 RTT 高的情景下可能带来明显的性能提升。

多线程并发

写在客户端开启多个 HTable 写线程,每个写线程负责一个 HTable 对象的 flush 操作,这样结合定时 flush 和写 buffer(writeBufferSize),可以既保证在数据量小的时候,数据可以在较短时间内被 flush(如1秒内),同时又保证在数据量大的时候,写 buffer 一满就及时进行 flush。

Compression 压缩

数据量大,边压边写也会提升性能的,毕竟IO是大数据的最严重的瓶颈,哪怕使用了SSD也是一样。众多的压缩方式中,推荐使用SNAPPY。从压缩率和压缩速度来看,性价比最高。

写优化

相关文章

  • HBase(2)优化

    Region大小设置 Region大的话 意味着较大的 StoreFile,compaction 时对内存也是一个...

  • HBase学习笔记(二)

    HBase优化相关 HBase查询优化 1、设置scan缓存 scanner.SetCaching(10000) ...

  • 关于hbase、spark、hive使用时的优化问题

    一、Hbase的优化 1、JVM优化: 1)如:HBase RegionServer 的 Java 配置选项 -X...

  • HBase那些事

    HBase那些事 @(大数据工程学院)[HBase, Hadoop, 优化, HadoopChen, hbase]...

  • HBase优化

    HBase优化 1、垃圾回收优化使用CMS垃圾回收机制2、启用压缩GZIP、Snappy、LZO,推荐Snappy...

  • 103-BigData-31HBase优化

    上一篇:102-BigData-30HBase 三、HBase优化 3.1、高可用在HBase中Hmaster负责...

  • 🔝HBase优化实战

    比特科技: 存储、数据库、大数据技术 » HBase优化实战 http://www.bitstech.net/2...

  • HBase 优化

    1 高可用 在 HBase 中 HMaster 负责监控 RegionServer 的生命周期,均衡 Region...

  • HBase优化

    1.1、高可用 在HBase中Hmaster负责监控RegionServer的生命周期,均衡RegionServe...

  • hbase优化

    1、内存 年轻代年轻代最大值 java -Xmx256M -Xms256m -XX:NewSize=xxm -XX...

网友评论

      本文标题:HBase(2)优化

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