java配置hba_hba参数配置及优化
takeoffhba参数配置及优化
接触hba已有半年的时间,查了很多资料,也参考了很多别⼈⼼得,也希望把⾃⼰的⼼得以及理解写出来,我把配置hba必调的⼏个参数写⼀下,以及它们的意义。cavatina
儿童英文小说
zookeeper.ssion.timeout
这个参数的意义是regionrver在zookeeper的会话过期时间,默认是3分钟,如果regionrver 在zookeeper.ssion.timeout这个配置的时间没有去连zookeeper的话,zookeeper会将该regionrver在zookeeper摘除,不让该regionrver向提供服务,很多⼈都该值配置很⼤,原因是⽣产环境中regionrver的内存都配置很⼤,以扩⼤memstore和cache的⼤⼩,提⾼性能,但是内存配置⼤了以
后,regionrver在jvm做⼀次内存⼤回收时,时间也会变长,很有可能这个时间超过zookeeper.ssion.timeout时间,导致regionrver在jvm回收内存的时候,zookeeper误以为regionrver挂掉⽽将regionrver摘除。但我认为该值还是不要配的过⼤,⾸先地java已⽀持cms⽅式回收内存,每次内存回收的时间不是太长,并且⽣产环境中,我们也不允许过长时间的服务中断,配置⼤了,容易造成⼀个regionrver的服务真出现异常时,zookeeper不会切除该regionrver,使得很多请求失败。
konst
regionrver的⼯作线程数量,默认是10,没有疑问,官⽅默认值太⼩,通常都调到100~200之间,提⾼regionrver性能。
love is colour blind
济南外国语学校初中部regionrer租约时间,默认值是60s,也有点⼩,如果你的⽣产环境中,在执⾏⼀些任务时,如mapred时出现lea超时的报错,那这个时候就需要去调⼤这个值了。
sswhfile.block.cache.size
regionrver cache的⼤⼩,默认是0.2,是整个堆内存的多少⽐例作为regionrver的cache,调⼤该值会提升查询性能,当然也不能过⼤,如果你的hba都⼤量的查询,写⼊不是很多的话,调到0.5也就够了,说到这个值,有⼀个地⽅需要说明⼀下,如果⽣产环境有mapred任务去scan hba的时候,⼀些要在mapred scan类中加⼀个scan.tCacheBlocks(fal),避免由于mapred使⽤regionrver的cache都被替换,造成hba的查询性能明显下降。
store.flush.size
⼀个regionrver的单个region memstore的⼤⼩,默认是64M,在hba结构中,⼀个regionrver管理多个region,⼀个region对应⼀个hlog和多个store,⼀个store对应多个storefile和⼀个memstore,这⾥的store.flush.size意思⼀个region下⾯的所有store⾥⾯的memstore的达到多少时,开始将这些memstore flush到hdfs中去,配置这个值,需要参考⼀下,平均每个regionrver管理的region数量,如果每台regionver管理的region不多的话,可以适当的调⼤该值,如512M时再flush。
配置⼀台regionrver所有memstore占整个堆的最⼤⽐例,默认是0.4/0.35,⼆个值的差异在于是做局部的flush,还是全部flush,如果你的regionrver⽇志中,频发出现因为超过store.lowerLimit⽽做flush的信息,我觉得有必要调⼩store.flush.size,或者适当调⼤这⼆个值,当然store.upperLimit和
snfhfile.block.cache.size的和不能⼤于1,到0.8我觉得已经够⼤了。如果你的jvm内存回收是使⽤cms的话,有⼀个值CMSInitiatingOccupancyFraction(内存使⽤到时多少时,⼀始cms回收内存)的⼤⼩和觉得和这个有关系,略⼩于
pactionThreshold/hba.hregion.majorcompaction
pactionThreshold执⾏compaction的store数量,默认值是3,如果需要提⾼查询性能,当然是storefile的数量越⼩,性能越好,但是执⾏compaction本⾝有性能资源的开消,如果regionrver频繁在compacion对性能影响也很⼤。
hba.hregion.majorcompaction表⽰majorcompaction的周期,默认是1天,majorcompaction与普通的compaction的区别是majorcompaction会清除过期的历史版本数据,同时合并storefile,⽽普通的compaction只做合并,通常都是majorcompaction,调为0,然后⼿⼯定期的去执⾏⼀下majorcompaction,适当调⼩点compacionThreshold。
hba.hregion.max.filesize
⼀个regionver的最⼤值,默认是256M,如果数据量特别⼤的话,调⼤该值可以减少region的数量,调到2G我觉得都不为过。acquire
hba配置调优太多,jvm,mslab内存管理以及hdfs append⽅式等等,需要太多的知识⾯,很多东西,我也在学习之中,先写这么多。您正在看的⽂章来⾃疯狂软件教育中⼼ www.fkjava
全面接触
信息咨询:Q564205990星⽼师