版本:HBase-0.98.6-cdh5.3.6

HBase参数调优

1. zookeeper.session.timeout: 默认90000(毫秒), 控制连接zk的timeout时间。由于hbase的集群是由zk管理的,所以当一个regionserver挂掉的时候,master是从zk集群上得到的,如果该值比较大,那么可能就会有比较高的延时;如果该值比较小,那么当有一个较长时间的gc发生的时候,可能会出现假宕机。

2. dfs.datanode.failed.volumes.tolerated: 默认为0,表示不允许datanode节点上发生磁盘错误,如果发生,立马将这个datanode设置为不可用,如果你是挂载多个磁盘(>3or4个),那么就可以将这个值设高,比如1或者更高.

3. hbase.regionserver.handler.count: 默认10,定义连接用户表的客户端并发线程数量。默认值比较小的原因,主要是为了预防用户用一个比较大的写缓冲,然后还有很多客户端并发,这样region servers会垮掉;一般的设置规则是:当请求的内容很大的时候(比如打的put或者scans),那么将该值修改成比较小的值;当请求为较小的get、delete的时候,那么设置一个较大的值(可以和并发数类似)。该值比较大的时候可能会出现停顿或者严重的时候出现OutOfMemery,因为如果请求的内存要求比较大的时候,会导致频繁GC的发生,那么就会产生这种问题。

4. 压缩(机器内存8G+):能够降低存储文件大小以及IO,绝大多数情况下能够提高性能。hbase.regionserver.codecs指定压缩方法,默认为为空,可以指定gz,lzo等多个,用','分割。

5. 较大的region / 自管理region split(机器内存8G+): 更大的Region可以使你集群上的Region的总数量较少。 一般来言,更少的Region可以使你的集群运行更加流畅(也可以手动的分割region)。一般一个regionserver在20~500之间算是比较好的一个值。hbase.hregion.max.filesize默认10G,当达到该值的时候,才开始进行分割。hbase.regionserver.region.split.policy指定分割文件的策略IncreasingToUpperBoundRegionSplitPolicy。hbase.regionserver.regionSplitLimit(该参数是一个指导性的参数,不是一个硬性指标)指定最大region的个数,默认INT_MAX。一般情况下,如果可以的话,选择手动管理region,也就是禁用hbase自带的region分割机制,在集群空闲的时候再进行region的分割,选择将hbase.regionserver.regionSplitLimit设置1以及hbase.hregion.max.filesize设的更大(比如100G,但是不推荐设置为LONG_MAX)。

6. 管理Compactions:进行主紧缩(major)管理是必须的,我们可以控制的只是间隔时间,在0.96.x之前版本是每隔一天进行一次,以后版本是7天执行一次。有两种类型的紧缩,主紧缩(major)和次(minor)紧缩。minor紧缩通常会将数个小的相邻的文件合并成一个大的。Minor不会删除打上删除标记的数据,也不会删除过期的数据,Major紧缩会删除过期的数据,在执行major紧缩后会变成一个storefile文件,通常可以提高性能。major会进行数据的重写操作,所有在一个负载较高的系统中,会采用取消自动紧缩机制,采用手动紧缩机制。紧缩是不会对分区进行合并的,如果需要合并,那么需要使用merge。

major:hbase.hregion.majoucompaction=604800000  间隔毫秒数(7days), hbase.hregion.majorcompaction.jetter=0.5 浮动值比率, 也就是说最终是间隔3.5~10.5天。

minor:hbase.hstore.compaction.min最小文件数(默认值3);hbase.hstore.compaction.max最多文件数(默认值10,不管合适的文件个数);hbase.hstore.compaction.min.size可以继续minor的文件最大大小,超过该值的文件大小由ratio参数决定(默认128M);hbase.hstore.compaction.max.size大于该值的文件一定不会进行minor(默认LONG_MAX);hbase.hstore.compaction.ratio决定超过min.size的文件是否进行minor,只要文件大小小于后面所有文件大小总和的ratio倍就可以了,比如说X5M,Y2M,Z3M,那么计算5<1.2*(2+3),那么表示X也进行minor,如果X为7M那么就不进行minor(默认1.2F,选择的时候文件按照时间排序olded->newed);hbase.hstore.compaction.ratio.offpeak在负载低的时候的ratio值,默认0.5,要求开启设置offpeak。hbase.offpeak.start/end.hour指定低负载起始时间和结束时间(0-23,默认-1表示不启用)。选择文件的时候,只要求数据数量小于max,而且前面的文件要进行压缩,那么当前文件就直接需要进行压缩。三个实例:

   

7. 预测执行(speculative execution):mapreduce默认是打开的,推荐在系统级/集群级别关闭,只有当需要的时候再手动通过配置项打开mapreduce.map.speculative(旧版本mapred.map.tasks.speculative.execution)和mapreduce.reduce.speculative(旧版本mapred.reduce.tasks.speculative.execution)。

8. 负载均衡:在master节点上执行的重新分配region的方式,参数hbase.balancer.period(默认值300000,5分钟)。

9. hfile.block.cache.size,默认值为0.4,设置块缓存的内存大小占比;设置为0表示不使用,但是不推荐设置为0,至少需要将hfile文件的目录保存在内存中,在读比较多的应用中,调高该值,在写应用中,调低该值。需要和memstore.upperLimit同时考虑。

10. Nagle算法:当出现大量延时40ms左右的情况的时候,可以开启tcpNoDelay。

11. hadoop相关连接time out:hbase.lease.recovery.dfs.timeout默认64000(毫秒),租赁过期时间;dfs.client.socket-time默认60000(毫秒);hbase中推荐使用23000和10000.<作用就是为了快速的通知节点失效>。

12. hbase.regionserver.global.memstore.upperLimit,默认值0.4,表示rs中的memstore占内存的比例最大值,当达到这个值的时候,就一定进行flush到磁盘的操作。在读比较多的应用中,采用将该值减小的方式,在写比较多的应用中,采用将该值增大的方式,一般改变0.5即可。同cache的限制一般在全部内存的0.8左右为好,这样不太可能出现oom的错误。

13. hbase.regionserver.global.memstore.lowerLimit,默认值0.38,表示rs的memstore占内存比例达到该值的时候,就可能触发flush操作。

14. hbase.hregion.memstore.flush.size,默认值134217728(128M),当memstore的值大于该值的时候,进行flush操作。

15. hbase.hregion.memstore.block.multiplier,默认值4,表示memstore阻塞的块大小(*hbase.hregion.memstore.flush.size),当超过这个值的时候,就会出现阻塞,当该值比较大的时候可能出现oom情况。即如果memstore的内存大小已经超过了hbase.hregion.memstore.flush.size的4倍,则会阻塞memstore的写操作,直到降至该值以下,为避免发生阻塞,最好调大该值,不过一般情况下,使用默认值即可。

16. JVM调整,hbase默认为1G,master节点可以调为2/4G,regionserver节点可以调整为10G,zk基本不消耗内存,可以不用调整。

[HBase] - Hbase调优1的更多相关文章

  1. hbase性能调优_表设计案例

    hbase性能调优案例 1.人员-角色   人员有多个角色  角色优先级   角色有多个人员   人员 删除添加角色   角色 可以添加删除人员   人员 角色 删除添加   设计思路 person表 ...

  2. OpenTSDB/HBase的调优过程整理

    背景 过年前,寂寞哥给我三台机器,说搞个新的openTSDB集群.机器硬件是8核16G内存.3个146G磁盘做数据盘. 我说这太抠了,寂寞哥说之前的TSDB集群运行了两年,4台同样配置的机器,目前hd ...

  3. hbase性能调优(1)

    hbase性能调优 标签: hbase 性能调优 | 发表时间:2014-05-17 15:10 | 作者:无尘道长 分享到: 出处:http://www.iteye.com 一.服务端调优 1.参数 ...

  4. hbase性能调优案例

    hbase性能调优案例 1.人员-角色   人员有多个角色  角色优先级   角色有多个人员   人员 删除添加角色   角色 可以添加删除人员   人员 角色 删除添加   设计思路 person表 ...

  5. HDP之HBase性能调优

    (官方文档翻译及整理) 一.系统级调优 1.保证充足的RAM 2.64位的操作系统 3.Linux的swappiness设置为0 : sysctl vm.swappiness=10 vim /etc/ ...

  6. hbase参数调优

    @ 目录 HBase参数调优 hbase.regionserver.handler.count hbase.hregion.max.filesize hbase.hregion.majorcompac ...

  7. HBase性能调优

    因官方Book Performance Tuning部分章节没有按配置项进行索引,不能达到快速查阅的效果.所以我以配置项驱动,重新整理了原文,并补充一些自己的理解,如有错误,欢迎指正. 配置优化 zo ...

  8. hbase性能调优之压缩测试

    文章概述: 1.顺序写 2.顺序读 3.随机写 4.随机读 5.SCAN数据 0 性能测试工具 hbase org.apache.hadoop.hbase.PerformanceEvaluation ...

  9. HBase性能调优(转)

    原文链接:http://www.blogjava.net/ivanwan/archive/2011/06/15/352350.html 因官方Book Performance Tuning部分章节没有 ...

  10. hbase性能调优(转载)

    一.服务端调优 1.参数配置 1).hbase.regionserver.handler.count:该设置决定了处理RPC的线程数量,默认值是10,通常可以调大,比如:150,当请求内容很大(上MB ...

随机推荐

  1. Java程序员常犯的10个错误

      本文总结了Java程序员常犯的10个错误. #1. 把Array转化成ArrayList 把Array转化成ArrayList,程序员经常用以下方法: List<String> lis ...

  2. 获取IIS版本

    近日,有一项目要分别获取iis6.0和7.5,然后对进程进行操作~ 研究良久,有以下办法获取iis版本. 代码: DirectoryEntry getEntity = new DirectoryEnt ...

  3. Bagging和Boosting 概念及区别

    Bagging和Boosting都是将已有的分类或回归算法通过一定方式组合起来,形成一个性能更加强大的分类器,更准确的说这是一种分类算法的组装方法.即将弱分类器组装成强分类器的方法. 首先介绍Boot ...

  4. iOS 之 自动释放池

    向一个对象发送autorelease消息时,cocoa会将该对象的一个引用放入最新的自动释放池.作用域结束时,自动释放池会被释放,池中所有的对象也就被释放了.

  5. delphi 获得memo,Richedit焦点所在行

    procedure TForm1.Button1Click(Sender: TObject); var i:Integer; begin i:=SendMessage(Richedit1.handle ...

  6. CentOS 7 安装 JDK

    1. 卸载旧版 1.1. 查看版本信息 java -version 1.2. 查看JDK信息 rpm -qa | grep java 1.3. 卸载 rpm -e --nodeps tzdata-ja ...

  7. easyui datagrid分页参数获取

    $("#btnDataExport").click(function () { $.messager.show({ title: '导出提示', msg: '每次导出一页商户数据, ...

  8. Mockito教程

    Mockito教程 2017-01-20 目录 1 Mockito 介绍   1.1 Mockito是什么?  1.2 为什么需要Mock  1.3 Stub和Mock异同  1.4 Mockito资 ...

  9. 搭建typescript开发环境最详细的全过程

    搭建typescript开发示例https://github.com/Microsoft/TypeScriptSamples typescript案例https://www.tslang.cn/sam ...

  10. 开源OSS.Social微信项目解析

    ​前言:OSS.Social是个开源的社交网站接口集成项目,当前也有很多其他不错的项目,不过始终没有我想要的那种简单清晰,只能撸起袖子,从头打造一个.当前正在进行的是对微信项目的开发,这里把对接口的整 ...