版本: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. Windows Server 2012 安装sqlserver2008 小记

    1.拷贝大文件被阻止   解决方案:把大文件压缩成小文件... 据说关闭防火墙会好点,没试验过. 2.安装第一步,提示没有安装.net framework 3.5 sp1 ,使用服务器管理器,添加角色 ...

  2. LPC1768外部中断与GPIO中断

    LPC1768的外部中断严格来说只有四个,分别是EINT0,EINT1,EINT2,EINT3,技术手册上有如下说明 控制这四个外部中断靠以下寄存器 这三个寄存器的0 1 2 3位分别代表中断的0 1 ...

  3. AJAX异步加载

    AJAX含义: 即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX可以跨 ...

  4. imageX批量安裝windows7

    以一臺電腦爲sample,安裝完成windows os及其全部update,安裝全部常用軟件,打印機驅動,網絡磁碟機等. 關閉安全控制"UAC"和"維護解決方案" ...

  5. Vue 响应式总结

    有些时候,不得不想添加.修改数组和对象的值,但是直接添加.修改后getter.setter又失去了. 由于 JavaScript 的限制, Vue 不能检测以下变动的数组: 当你利用索引直接设置一个项 ...

  6. 职业定位(移动端、ios开发、Android开发)

    移动端 移动端webapp开发必备知识:http://www.chinaz.com/manage/2012/1128/283974.shtml 设计一款好的移动App,有哪些基本规则?http://w ...

  7. phpcms v9文章页调用点击量方法

    1.在页面加载" 2.调用统计点击的标签:: 3.最后,在写上这一句:" phpcms v9增加文章随机点击数的方法 找到文件count.php(网站根目录/api) 查找第50行 ...

  8. java_web学习(1)理解JavaBean

    JavaBean简介       JavaBean是一种特殊的 Java 类,它遵从一定的设计模式,开发工具和其他组件可以根据这种模式来调用JavaBean. JavaBean可以设计得像Swing组 ...

  9. Tamper Data 安装与使用

    Tamper Data概览   注意:我将会讲述一些有关Tamper Data的基本常识,包括它的基本功能,如何安装等. Tamper Data是什么?   Tamper Data 的真实含义,即&q ...

  10. 查看AIX是32位还是64位,查看内存、cpu等参数

    prtconf 64位也可以查看: ls -l /unix