一个系统上线之后,开发和调优将一直贯穿系统的生命周期中,HBase也不列外。这里学习下HBase的调优。Hbase查询优化
作为NoSQL数据库,增删改查是其最基本的功能,其中查询是最常用的一项。设置Scan缓存
HBase中Scan查询可以设置缓存,方法是setCaching(),这样可以有效的减少服务端与客户端的交互,更有效的提升扫描查询的性能。
public void setCaching(int caching) {
this.caching = caching;
}显示的指定列
当使用Scan或者GET获取大量的行时,最好指定所需要的列,因为服务端通过网络传输到客户端,数据量太大可能是瓶颈。如果能有效过滤部分数据,能很大程度的减少网络I/O的花费。
public Scan addFamily(byte [] family) {
familyMap.remove(family);
familyMap.put(family, null);
return this;
}
public Scan addColumn(byte [] family, byte [] qualifier) {
NavigableSet<byte []> set = familyMap.get(family);
if(set == null) {
set = new TreeSet<byte []>(Bytes.BYTES_COMPARATOR);
}
if (qualifier == null) {
qualifier = HConstants.EMPTY_BYTE_ARRAY;
}
set.add(qualifier);
familyMap.put(family, set);
return this;
}一般用:
scan.addColumn(...)关闭ResultScanner
如果在使用table.getScanner之后,忘记关闭该类,它会一直和服务端保持连接,资源无法释放,从而导致服务端的某些资源不可用。所以在用完之后,需要执行关闭操作,这点与JDBS操作MySQL类似
scanner.close()禁用块缓存
如果批量进行全表扫描,默认是有缓存的,如果此时有缓存,会降低扫描的效率。
scan.setCacheBlocks(true|false);对于经常读到的数据,建议使用默认值,开启块缓存。缓存查询结果
对于频繁查询HBase的应用场景,可以考虑在应用程序和Hbase之间做一层缓存系统,新的查询先去缓存查,缓存没有再去查Hbase。写入优化
写也是Hbase常有的操作之一,并且Hbase在写入操作上有着其他NoSQL无法比拟的优势,下面讲如何优化写入操作关闭写WAL日志
一般为了保证系统的高可用性,WAL日志默认是开启状态,WAL主要用于灾难恢复的,如果应用可以容忍一定的数据丢失风险,可以在写数据的时候,关闭写WAL。风险: 当RegionServer宕机时,写入的数据出现丢失,且无法恢复。

设置AutoFlush
Htable有一个属性是AutoFlush,该属性用于支持客户端的批量更新,默认是true,当客户端每收到一条数据,立刻发送到服务端,如果设置为false,当客户端提交put请求时候,先将该请求在客户端缓存,到达阈值的时候或者执行hbase.flushcommits(),才向RegionServer提交请求。风险 在请求未发送到RegionServer之前客户端崩溃,数据也会丢失
table.setAutoFlush(false);
table.setWriteBufferSize( 12 * 1024 * 1024 );预创建Region
一般表刚开始只有一个Region,插入该表的数据都会保存在此Region中,插入该表的所有塑化剂都会保存在该Region中,当到达一定的阈值时,才发生分裂。 这样开始时刻针对该表的写操作都集中在某台服务器上,造成这台服务器的压力很紧张,同时对整个集群资源的浪费。
建议刚开始的时候预创建Region,可以使用Hbase自带的RegionSplitter延迟日志flush
默认写入操作,首先写入WAL,并且在1S内写入HDFS,这个时间默认是1S,可以通过参数配置
hbase.regionserver.optionallogflushinterval可以配置大一点的值,比如5s,这段时间数据会保留在内存中,直到RegionServer周期性的执行flush操作。
希望能帮助大家。

hbase 按时刻查询_HBase读写优化相关推荐

  1. hbase 按时刻查询_Hbase查询工具类,根据时间查询数据

    1,需求:已知空气监测数据在hbase中存储,要求按照时间,查询citycode为110000(北京)一个月的数据,数据为每日的监测数据 ID ,CITYCODE,SO2 ,CO,NO2 ,O3, P ...

  2. hbase java api 查询_hbase查询api的基本使用

    HBase是一个分布式的.面向列的开源数据库,不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库.另一个不同的是HBase基于列的而不是基于行的模式. 项目中用到了hbase数据库,因为查 ...

  3. hbase 中文乱码 查询_HBase的汉字乱码问题

    运用Java的API存储汉字到hbase中,代码如下: public static void insterRow(String tableName,String rowkey,String colFa ...

  4. HBase最佳实践-读性能优化策略

    任何系统都会有各种各样的问题,有些是系统本身设计问题,有些却是使用姿势问题.HBase也一样,在真实生产线上大家或多或少都会遇到很多问题,有些是HBase还需要完善的,有些是我们确实对它了解太少.总结 ...

  5. HBase详解(对hbase集群搭建、读写流程、hbase的javaApi等细致入微的讲解与保姆级的图解)

    学HBase的意义是什么 我本想用MySQL来与HBase作比较,但发现他们两者毫无可比性,因为两者运用领域不同,各自有各自的优点,就好比爬山穿登山鞋,潜水穿脚蹼一般. 一门技术的兴起,一个优秀的开源 ...

  6. 数据库系统概论:第九章 关系查询和关系优化

    查询优化一般可以分为代数优化和物理优化.代数优化是指关系代数表达式的优化,物理优化指的是通过存取路径和底层操作算法的选择进行的优化. 9.1 关系数据库系统的查询处理 9.1.1 查询处理步骤 1. ...

  7. 基于Solr的HBase多条件查询测试

    背景: 某电信项目中采用HBase来存储用户终端明细数据,供前台页面即时查询.HBase无可置疑拥有其优势,但其本身只对rowkey支持毫秒级的快速检索,对于多字段的组合查询却无能为力.针对HBase ...

  8. 【HBase调优】Hbase万亿级存储性能优化总结

    [HBase调优]Hbase万亿级存储性能优化总结 2017-04-07 背景:HBase主集群在生产环境已稳定运行有1年半时间,最大的单表region数已达7200多个,每天新增入库量就有百亿条,对 ...

  9. php查询数据库如何降低负荷,WordPress通过减少数据库查询次数来优化性能的方法...

    说起WordPress优化来算是一个老生常谈的话题了,WordPress很慢,这是很多人都在说的,我记得此论调也就是这几年才流行开的,据说是因为一个台湾的WordPress大咖在自己博客上宣称&quo ...

最新文章

  1. python使用生成器生成浮点数列表、使用生成器生成(正)负的浮点数列表
  2. element elcolumn 使用本地图片_年末了,教你如何使用Python实现上班摸鱼
  3. 成功解决TypeError: ufunc 'sqrt' not supported for the input types, and the inputs could not be safely co
  4. JavaScript点击事件-一个按钮触发另一个按钮
  5. Navicat 提示 Access violation at address ***(771B7870) in module ‘ntdll.dll’. Read of address ***(220A
  6. 优雅的使用Laravel之phpstorm配置
  7. Linux 命令之 unset -- 删除指定的shell变量或函数
  8. multiprocessing.manager管理的对象需要加锁吗_Go: 内存管理和分配
  9. ECCV 2020 大规模实例分割挑战赛(LVIS Challenge)冠军方案
  10. Oracle基础 TO_CHAR函数参考(转)
  11. VS 2008的JavaScript代码提示功能 (学习老赵视频的笔记)
  12. 【Vegas2006】8月24日-花豆擀面做法
  13. mysql 日期计算,今天,明天,本周,下周,本月,下月
  14. SpringBoot系列(8):SpringBoot中的MVC支持【组件型注解、请求和参数型注解】详解
  15. 微信开发高级群发接口
  16. CSS的前景色和背景色,高度和宽度,字体属性,文本阴影,抖音字体
  17. HTML+CSS+JavaScript实战——美团首页
  18. Drill系列(1):Dremel的原理
  19. 怎样将HTML保存到d盘,怎么保存网页 保存整个网页的办法
  20. 小红书自研KV存储架构如何实现万亿量级存储与跨云多活

热门文章

  1. string修饰的梦修改吗_Java String 对象,你真的了解了吗?
  2. c语言怎么独缺非空格字符,C语言-字符串(单个字符)
  3. mysql自增id前端安全显示_mysql使用自增id遇到的坑
  4. iw命令 linux 没有_linux下ifconfig、iwconfig、iwlist命令详解
  5. 漳州市2021高考成绩查询,漳州市招生管理系统2021漳州中考成绩查询入口
  6. linux 程序 加密码忘了怎么办,linux忘记了密码怎么办
  7. hca卡 linux 查看_将Linux装入U盘随身带走!Awesome!
  8. java 微信jssdk签名_JAVA生成微信JSSDK接口签名
  9. 【java】Charset 字符集
  10. 武鸣高中2021高考成绩查询,2019年广西两大重点高中成绩大比拼