1. 存储

1.1. 压缩

hbase默认不使用压缩进行存储,一般情况下,hbase是以大表的方式存在,如果不进行压缩的话,势必会造成空间的浪费。而且由于hbase是对随机访问进行优化的,所以需要采用压缩解压效率较高的算法。

压缩比大的算法但速度慢的算法,比如gzip,不太适合。推荐使用LZO和SNAPY压缩,以损失部分空间换取较高的响应速度。

1.2. 块大小

hbase块大小指定。默认值为64M,这个值和hadoop的块大小不太一样,hadoop的块大小是在文件存储时生效,hbase的块大小是指memstore一次性写入filestore的大小或者由filestore一次性读入memstore的大小。

对于数据读写比较频繁的表,需要适当调大hbase blocksize,可以减少大量的磁盘IO操作,同时提高读写效率。

1.3 布隆过滤器(bloomfilter)

指定布隆过滤器理论上可以提高读写速度,但会损失一定的存储空间用来保存索引。

2. 参数配置

2.1. 正确设置Scan Caching的行数

含义:Caching是Server端一次返回数据的行数,默认值是100,意即一次RPC请求中,Server端获取到100行数据后一次性返回;

影响:

若Caching值设置过大,RegionServer需要在内存中存储所有需要返回的结果,可能导致OutOfMemory;

若Caching值设置过大,Server获取这些数据需要很长时间(尤其是设置了过滤器),可能导致OutOfOrderScannerNextException;

若Caching值设置过小,则获取N行数据需要N/Caching次RPC请求,速度慢;

设置:通过scan.setCaching()进行设置,接受的配置是行数,不是Byte,建议根据返回的总数据量进行估算,总额是10MB;若一行是10KB,cache设置为1000;若一行是2MB,cache设置为5。

2.2. 正确设置WriteBuffer大小

大量的Put请求,请关闭autoFlush(),避免每一个Put请求都向Server端发送RPC请求

含义:客户端会累积Put请求,当数据累积到Buffer大小时,触发一次RPC请求。

风险:若客户端程序崩溃,则Buffer之中的Put请求会丢失!

影响:

若设置太大,则会导致OutOfMemory

若设置太小,则触发多次RPC请求;

设置:

htable.setAutoFlush(false) # 启用Write Buffer,默认不启用

htable.setWriteBufferSize(long writeBufferSize) #参数是Byte,建议2MB~5MB,一般不允许超过10MB。若设置为5MB,则是htable.setBufferSize(510241024)。

2.3. 正确设置Batch大小

含义:当行很大的时候,Batch设置每次next()返回的列数。例如一个表有10000行,设置Caching=10,Batch=100,则每100列被当做一个Result,每次RPC返回10 个Result即1000列;

影响:对于很大的行,需要设置合理的Batch大小,以免发生OOME。

设置:scan.setBatch()进行设置,接受的是batch的列数。

2.4. 客户端配置项

部分参数客户端的配置会覆盖服务器端的配置,入口机的配置由服务云统一维护,非入口机的配置则需要用户自己维护;

请非入口机用户检查自己hbase-site.xml中的配置是否为最新的值,可以从入口机下载最新的配置。

hbase.client.pause100hbase.client.retries.number31

3. 批量导入使用Bulkload

当大批量导入数据的时候,推荐使用HFileOutFormat(Bulkload),使用单个Client导数据瓶颈在Client,无法充分利用HBase的扩展性。

4. 避免跨集群访问

跨集群访问,速度可能慢20倍。例如相同的代码,在入口机(同机房)只要12-20s,在跨机房机器执行需要400-800s。

5. 使用Append

一种常见的需求是,需要append一个Cell的值,而不是创建新的Cell。例如,某一列存储了用户访问的URL列表,有一个程序自动记录。一种做法是Get,Modify,Put;而使用Append能方便地原子添加新值。

# Append example, table is "user-table", row is "usser", column name is "c:url" hbase shell> append "user-table", "user1", "c:url", "firstUrl" # value is "firstUrl" hbase shell> append "user-table", "user1", "c:url", "anotherUrl" # value is "firstUrlanotherUrl"

注意:该操作对于读不是原子的。Append会拿行锁,保证写操作是同步的。但是读操作不获取该写锁,因此Get和Scan可能会看到一个部分完成的状态。

例子:RowA有两列 C1=V1,C2=V2,现在对RowA执行Append操作,C1=Vx,C2=Vy,则Get可能看到如下中间状态C1=V1+Vx, C2=V2。

hbase 使用lzo_【hbase】Hbase最佳实践相关推荐

  1. hbase 使用lzo_装配HBase LZO

    服务器操作系统:CentOS 6.3 一.安装LZO 首先尝试sudo apt-get -y install liblzo2-dev,如果不行则按照下面的做法. 1.检查是否已经安装 ls /usr/ ...

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

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

  3. 生产环境使用HBase,你必须知道的最佳实践

    来源 | 阿丸笔记 封图| CSDN 下载于视觉中国 前面,我们已经打下了很多关于HBase的理论基础,今天,我们主要聊聊在实际开发使用HBase中,需要关注的一些最佳实践经验. Schema设计七大 ...

  4. hbase中为何不能向表中插入数据_生产环境使用HBase,你必须知道的最佳实践 | 百万人学AI...

    叮咚-你被福利砸中了!现在起,「2020 AI开发者万人大会」299门票免费送!进入报名页面[2020 AI 开发者万人大会(线上直播门票)-IT培训直播-CSDN学院],点击"立即报名&q ...

  5. 大数据最佳实践-hbase

    目录 概述 架构 MemStore WAL HMaster 读流程 写流程 Memstore Flush Flush过程 StoreFile Compaction Region Split 优化 re ...

  6. HBase最佳实践-用好你的操作系统

    HBase最佳实践-用好你的操作系统  2017年5月24日  范欣欣  HBase 终于又切回HBase模式了,之前一段时间因为工作的原因了解接触了一段时间大数据生态的很多其他组件(诸如Parque ...

  7. HBase最佳实践-HBase中的读性能优化策略

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

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

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

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

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

  10. HBase 集成 Phoenix 构建二级索引实践

    Phoenix 在 HBase 生态系统中占据了非常重要的地位,本文主要包括以下几方面内容: Phoenix 介绍 CDH HBase 集成 Phoenix 使用 Phoenix 创建 HBase 二 ...

最新文章

  1. Pulsar:下一代消息引擎真的这么强吗?
  2. 几十条业务线日志系统如何收集处理?
  3. HDU 1028 HDU Ignatius and the Princess III
  4. 锐捷网络交换机配置命令大全
  5. ABAP程序中的七大危险漏洞
  6. asp.net2.0中session在ie9下不能保存的问题
  7. 单源最短路径(Dijkstra算法)
  8. gRPC 基础概念详解
  9. 虚拟机安装CentOS-7-x86_64-DVD-1708说明
  10. CSS选择器学习笔记
  11. 论文浅尝 | 基于动态记忆的原型网络进行元学习以实现少样本事件探测
  12. java实现报表_修改带 JAVA 自定义类的报表还要重启应用,咋解决?
  13. adb devices 找不到夜神模拟器解决方法
  14. Android 美女拼图游戏
  15. HDU1164 Eddy's research I(解法二)【废除!!!】
  16. Salesforce LWC学习(二) helloWorld程序在VSCode中的实现
  17. 编译telepresence:没有规则可制作目标“tinywrap/ActionConfig.cxx”,由“telepresence-ActionConfig.o” 需求。
  18. android卡片 弹簧滑动,一种通用式弹簧卡扣的制作方法
  19. 樱花何处有?动态樱花飘落图
  20. 省市区前端json格式 上

热门文章

  1. 谈谈tmpdir与innodb_tmpdir的区别和用处
  2. ActiveMQ demo
  3. 盒子box在网页中居中的方法
  4. [MySQL]触发器
  5. 禁止Chrome的缓存
  6. css之px自动转rem—“懒人”必备
  7. nancy中的本地化
  8. UVa 10970 - Big Chocolate
  9. java8新特性——Stream流
  10. SpringMVC 接口 JDK动态代理导致映射失败的原因 异步注解Async失效 微服务映射的位置