其实HBase还是比较灵活的,关键看你是否使用得当,以下主要列举一些读的优化。HBase在生产中往往会遇到Full GC、进程OOM、RIT问题、读取延迟较大等一些问题,使用更好的硬件往往可以解决一部分问题,但是还是需要使用的方式。

我们把优化分为:

客户端优化、服务端优化、平台优化(ApsaraDB for HBase平台完成)

客户端优化

get请求是否可以使用批量请求

这样可以成倍减小客户端与服务端的rpc次数,显著提高吞吐量

Result[]re=table.get(Listgets)

大scan缓存是否设置合理

scan一次性需求从服务端返回大量的数据,客户端发起一次请求,客户端会分多批次返回客户端,这样的设计是避免一次性传输较多的数据给服务端及客户端有较大的压力。目前 数据会加载到本地的缓存中,默认100条数据大小。 一些大scan需要获取大量的数据,传输数百次甚至数万的rpc请求。 我们建议可以 适当放开 缓存的大小。

scan.setCaching(intcaching)//大scan可以设置为1000

请求指定列族或者列名

HBase是列族数据库,同一个列族的数据存储在一块,不同列族是分开的,为了减小IO,建议指定列族或者列名

离线计算访问Hbase建议禁止缓存

当离线访问HBase时,往往就是一次性的读取,此时读取的数据没有必要存放在blockcache中,建议在读取时禁止缓存

scan.setBlockCache(false)

可干预服务端优化

请求是否均衡

读取的压力是否都在一台或者几台之中,在业务高峰期间可以查看下,可以到 HBase管控平台查看HBase的ui。如果有明显的热点,一劳永逸是重新设计rowkey,短期是 把热点region尝试拆分

BlockCache是否合理

BlockCache作为读缓存,对于读的性能比较重要,如果读比较多,建议内存使用1:4的机器,比如:8cpu32g或者16pu64g的机器。当前可以调高 BlockCache 的数值,降低 Memstore 的数值。

在ApsaraDB for HBase控制台可以完成:hfile.block.cache.size 改为0.5 ; hbase.regionserver.global.memstore.size 改为0.3;再重启

HFile文件数目

因为读取需要频繁打开HFile,如果文件越多,IO次数就越多,读取的延迟就越高此 需要主要定时做 major compaction,如果晚上的业务压力不大,可以在晚上做major compaction

Compaction是否消耗较多的系统资源

compaction主要是将HFile的小文件合并成大文件,提高后续业务的读性能,但是也会带来较大的资源消耗。Minor Compaction一般情况下不会带来大量的系统资源消耗,除非因为配置不合理。 切勿在高峰期间做 major compaction。 建议在业务低峰期做major compaction。

Bloomfilter设置是否合理

Bloomfilter主要用来在查询时,过滤HFile的,避免不需要的IO操作。Bloomfilter能提高读取的性能,一般情况下创建表,都会默认设置为:BLOOMFILTER => ‘ROW’

平台端优化

数据本地率是否太低?(平台已经优化)

Hbase 的HFile,在本地是否有文件,如果有文件可以走Short-Circuit Local Read目前平台在重启、磁盘扩容时,都会自动拉回移动出去的region,不降低数据本地率;另外 定期做major compaction也有益于提高本地化率

Short-Circuit Local Read (已经默认开启)

当前HDFS读取数据需要经过DataNode,开启Short-Circuit Local Read后,客户端可以直接读取本地数据

Hedged Read (已经默认开启)

优先会通过Short-Circuit Local Read功能尝试本地读。但是在某些特殊情况下,有可能会出现因为磁盘问题或者网络问题引起的短时间本地读取失败,为了应对这类问题,开发出了Hedged Read。该机制基本工作原理为:客户端发起一个本地读,一旦一段时间之后还没有返回,客户端将会向其他DataNode发送相同数据的请求。哪一个请求先返回,另一个就会被丢弃

关闭swap区(已经默认关闭)

swap是当物理内存不足时,拿出部分的硬盘空间当做swap使用,解决内存不足的情况。但是会有较大的延迟的问题,所以我们HBase平台默认关闭。 但是关闭swap导致anon-rss很高,page reclaim没办法reclaim足够的page,可能导致内核挂住,平台已经采取相关隔离措施避免此情况。

hbase数据读取优化_read读取优化_HBase最佳实践_HBase开发指南_云数据库 HBase - 阿里云...相关推荐

  1. 【阿里云生活物联网架构师专题 ⑧】基于在 SpringBoot Java私有云上接收阿里云物联网设备的各种状态数据,实现m2m流转;

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1.esp32接入阿里云物联网平台,实现天猫精灵语音控制: 2.es ...

  2. hbase数据库scan操作_HBase最佳实践之Scan

    一.简介 HBase中Scan从大的层面来看主要有三种常见用法:ScanAPI.TableScanMR以及SnapshotScanMR.三种用法的原理不尽相同,扫描效率当然相差甚远,最重要的是这几种用 ...

  3. MySQL性能优化、故障排查及最佳实践秘籍,阿里云数据库专家玄惭的“武功”全记录...

    为什么80%的码农都做不了架构师?>>>    文章简介 玄惭,真名罗龙九,阿里云DBA专家,负责阿里云RDS线上稳定以及专家服务团队.他经历过阿里历年双11实战考验,积累了7年对阿 ...

  4. Apache Kafka: 优化部署的10个最佳实践

    原文作者:Ben Bromhead      译者:江玮 原文地址:https://www.infoq.com/articles/apache-kafka-best-practices-to-opti ...

  5. android系统功耗优化(2)---Android最佳实践之性能 - 电池续航时间优化

    Android最佳实践之性能 - 电池续航时间优化 Doze和App Standby的优化(API23) 参考地址:http://developer.android.com/training/moni ...

  6. hbase 二进制数据写入_分布式数据库HBase的架构设计详解(有彩蛋)

    原标题:分布式数据库HBase的架构设计详解(有彩蛋) 本文根据DBAplus社群第99期线上分享整理而成,文末还有好书送哦~ 讲师介绍 陈鸿威 云财经大数据CTO 曾任百度高级工程师,现主持设计开发 ...

  7. 读取生产环境go语言的最佳实践展示

    近期看了一篇关于go产品开发最佳实践的文章,go-in-procution.作者总结了他们在用go开发过程中的非常多实际经验,我们非常多事实上也用到了.鉴于此,这里就简单的写写读后感,兴许我也争取能将 ...

  8. 案例篇-HBase 在滴滴出行的应用场景和最佳实践

    1.背景 ** 1.1 对接业务类型** HBase 是建立在 Hadoop 生态之上的 Database,源生对离线任务支持友好,又因为 LSM 树是一个优秀的高吞吐数据库结构,所以同时也对接了很多 ...

  9. mongodb数据合并设计_「时间序列数据」和MongoDB(二)-模式设计最佳实践

    在上一篇博客文章时间序列数据与MongoDB:第一部分-简介中,我们介绍了时间序列数据的概念,然后介绍了一些可以用于帮助收集时间序列应用程序需求的发现问题.对这些问题的回答有助于指导支持大容量生产应用 ...

最新文章

  1. PyTorch学习之六个学习率调整策略
  2. JS中的let和var的区别
  3. python处理utf8编码中文,及打印中文列表和字典
  4. Maven 单元测试
  5. mdp文件-Chapter4-MD.mdp
  6. lucky前面加a还是an_lucky的用法
  7. 语法上的小trick
  8. StringBuffer/StringBuilder/String的区别
  9. flutter 图解_【Flutter 专题】83 图解自定义 ACEWave 波浪 Widget (一)
  10. 固件类型bios好还是uefi好_uefi启动是什么意思 UEFI启动对比Bios启动优势在哪里
  11. Java 递归创建目录
  12. Docker 安装 MongoDB
  13. access insert语句怎么写_码住!MySQL中超实用的几种SQL语句
  14. 最新手机芯片AI跑分出炉:高通、联发科力压华为
  15. Oracle账户的umask,AIX的Umask
  16. Lightroom Classic 教程,如何在 Lightroom 中风格化照片?
  17. 千峰教育2218期2022.10.19日
  18. python 对正整数分解质因数
  19. 质数合数相关操作python代码合集(比较全面,欢迎补充)
  20. 微信第三方登录有两种登录方式, 1. 微信开放平台登录 2. 微信公众平台授权登录?

热门文章

  1. 计算机在网站设计中的应用,网页设计中平面设计的应用及其作用
  2. 报错空指针异常_Jdk14都要出了,还不能使用 Optional优雅的处理空指针?
  3. pkcs1解密 springboot_Spring Boot RSA 非对称加密
  4. vue保存页面的值_vue前端页面跳转参数传递及存储
  5. linux无法找到网卡6,CentOS 6/7克隆主机网卡无法启动解决
  6. centos7开放80端口_Centos7.4系统 httpd模式搭建文件服务器
  7. bugly android8.1加固,2020-09-27 Bugly Android热更新使用指南
  8. windows编译libevent
  9. leetcode刷题:合并两个有序链表
  10. redis事务乐观锁,watch