为什么80%的码农都做不了架构师?>>>   

接触hbase已有半年的时间,查了很多资料,也参考了很多别人心得,也希望把自己的心得以及理解写出来,我把配置hbase必调的几个参数写一下,以及它们的意义。

zookeeper.session.timeout

这个参数的意义是regionserver在zookeeper的会话过期时间,默认是3分钟,如果regionserver 在zookeeper.session.timeout这个配置的时间没有去连zookeeper的话,zookeeper会将该regionserver在zookeeper摘除,不让该regionserver向提供服务,很多人都该值配置很大,原因是生产环境中regionserver的内存都配置很大,以扩大memstore和cache的大小,提高性能,但是内存配置大了以后,regionserver在jvm做一次内存大回收时,时间也会变长,很有可能这个时间超过zookeeper.session.timeout时间,导致regionserver在jvm回收内存的时候,zookeeper误以为regionserver挂掉而将regionserver摘除。但我认为该值还是不要配的过大,首先地java已支持cms方式回收内存,每次内存回收的时间不是太长,并且生产环境中,我们也不允许过长时间的服务中断,配置大了,容易造成一个regionserver的服务真出现异常时,zookeeper不会切除该regionserver,使得很多请求失败。

hbase.regionserver.handler.count

regionserver的工作线程数量,默认是10,没有疑问,官方默认值太小,通常都调到100~200之间,提高regionserver性能。

hbase.regionserver.lease.period

regionserer租约时间,默认值是60s,也有点小,如果你的生产环境中,在执行一些任务时,如mapred时出现lease超时的报错,那这个时候就需要去调大这个值了。

hfile.block.cache.size

regionserver cache的大小,默认是0.2,是整个堆内存的多少比例作为regionserver的cache,调大该值会提升查询性能,当然也不能过大,如果你的hbase都大量的查询,写入不是很多的话,调到0.5也就够了,说到这个值,有一个地方需要说明一下,如果生产环境有mapred任务去scan hbase的时候,一些要在mapred scan类中加一个scan.setCacheBlocks(false),避免由于mapred使用regionserver的cache都被替换,造成hbase的查询性能明显下降。

hbase.hregion.memstore.flush.size

一个regionserver的单个region memstore的大小,默认是64M,在hbase结构中,一个regionserver管理多个region,一个region对应一个hlog和多个store,一个store对应多个storefile和一个memstore,这里的hbase.hregion.memstore.flush.size意思一个region下面的所有store里面的memstore的达到多少时,开始将这些memstore flush到hdfs中去,配置这个值,需要参考一下,平均每个regionserver管理的region数量,如果每台regionsever管理的region不多的话,可以适当的调大该值,如512M时再flush。

hbase.regionserver.global.memstore.upperLimit/hbase.regionserver.global.memstore.lowerLimit

配置一台regionserver所有memstore占整个堆的最大比例,默认是0.4/0.35,二个值的差异在于是做局部的flush,还是全部flush,如果你的regionserver日志中,频发出现因为超过hbase.regionserver.global.memstore.lowerLimit而做flush的信息,我觉得有必要调小hbase.hregion.memstore.flush.size,或者适当调大这二个值,当然hbase.regionserver.global.memstore.upperLimit和hfile.block.cache.size的和不能大于1,到0.8我觉得已经够大了。如果你的jvm内存回收是使用cms的话,有一个值CMSInitiatingOccupancyFraction(内存使用到时多少时,一始cms回收内存)的大小和觉得和这个有关系,略小于hbase.regionserver.global.memstore.upperLimit和hfile.block.cache.size的和是一个不错的选择。

hbase.hstore.compactionThreshold/hbase.hregion.majorcompaction

hbase.hstore.compactionThreshold执行compaction的store数量,默认值是3,如果需要提高查询性能,当然是storefile的数量越小,性能越好,但是执行compaction本身有性能资源的开消,如果regionserver频繁在compacion对性能影响也很大。hbase.hregion.majorcompaction表示majorcompaction的周期,默认是1天,majorcompaction与普通的compaction的区别是majorcompaction会清除过期的历史版本数据,同时合并storefile,而普通的compaction只做合并,通常都是majorcompaction,调为0,然后手工定期的去执行一下majorcompaction,适当调小点compacionThreshold。

hbase.hregion.max.filesize

一个regionsever的最大值,默认是256M,如果数据量特别大的话,调大该值可以减少region的数量,调到2G我觉得都不为过。

hbase配置调优太多,jvm,mslab内存管理以及hdfs append方式等等,需要太多的知识面,很多东西,我也在学习之中,先写这么多。

转载于:https://my.oschina.net/beiyou/blog/76259

hbase参数配置及优化相关推荐

  1. HBase参数配置及说明

    2019独角兽企业重金招聘Python工程师标准>>> 版本:0.94-cdh4.2.1 hbase-site.xml配置 hbase.tmp.dir 本地文件系统tmp目录,一般配 ...

  2. Tomcat 8 参数配置性能优化

    前言 开启 manager-gui Tomcat 状态解读 关闭 AJP 服务 设置线程池 NIO 还是 APR?Connector 配置 JVM 参数调整 其他方式 参考文章 前言 整理这篇 Tom ...

  3. MySQL参数配置优化

    MySQL参数配置优化 max_connections Variable Scope:      Global Dynamic Variable:  Yes Default:              ...

  4. mysql属性配置提高查询_MYSQL性能优化-安装时优化参数配置提高服务性能

    MYSQL性能优化一直是个头痛的问题,目前大多都是直接把页面html静态页面或直接使用了缓存技术,下面我就mysql本身的性能优化来分享一下. 安装时优化参数配置提高服务性能 在Linux下安装Mys ...

  5. 8核32g mysql性能_MySQL性能优化之参数配置

    1.目的: 通过根据服务器目前状况,修改Mysql的系统参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能. 2.服务器参数: 32G内存.4个CPU,每个CPU 8核. 3.MySQL目 ...

  6. MySQL性能优化之参数配置

    1.目的: 通过根据服务器目前状况,修改MySQL的系统参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能. 2.服务器参数: 32G内存.4个CPU,每个CPU 8核. 3.MySQL目 ...

  7. HiveSQL运行优化参数配置

    HiveSQL运行优化参数配置 HiveSQL常用数据处理语句 HiveSQL中复杂数据类型操作 我们平时在使用hive执行一些SQL任务时.经常会遇到执行速度很慢,数据倾斜,资源不够用等问题.那是因 ...

  8. Java虚拟机:常见JVM参数配置和GC性能优化

    一.常见的JVM参数配置: 1.垃圾回收统计信息: -XX:+PrintGC     打印GC简要信息 -XX:+PrintGCDetails打印GC的详细信息 -XX:+PrintGCTimeSta ...

  9. mysql 8 配置参数优化_mysql8 参考手册--配置非持久性优化器统计参数

    本节介绍如何配置非持久性优化器统计信息.当innodb_stats_persistent=OFF或使用创建或更改单个表时,Optimizer统计信息不会保留在磁盘 上 STATS_PERSISTENT ...

最新文章

  1. struts2 hibernate登录
  2. JQuery对象和JS对象区别与转换|| 事件绑定 入口函数 样式控制
  3. Spring MVC 的xml一些配置
  4. 第四范式裴沵思出席绿公司年会:传统企业要尽快完成在线化武装
  5. 【转】java项目应该知道的核心重点部分
  6. 天津大学计算机图形学_考研大数据|2020天津大学计算机类分数统计
  7. Mac下ssh支持auto complete
  8. html复制文字兼容手机,JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)...
  9. WPF入门教程系列(二) 深入剖析WPF Binding的使用方法
  10. linux刷脚本需要什么工具吗,利用宝塔Linux一键挂载脚本工具挂载www目录方法
  11. 每天只睡 4 小时!大佬们都这么拼吗?
  12. LeetCode 116. Populating Next Right Pointers in Each Node
  13. 软件工程经济学课后答案
  14. MySQL5.7官网参考手册路径
  15. 缓存框架 EhCache 使用 3
  16. 电子之TTL和CMOS门电路的区别
  17. unity 图片改成astc 所有机型机型检测
  18. python树莓派3控制蜂鸣器_树莓派用蜂鸣器实现整点报时
  19. 弱水三千,只取一瓢,当图像搜索遇见PostgreSQL(Haar wavelet)
  20. html漂浮图片代码关闭,带关闭功能的漂浮图片代码

热门文章

  1. Spring Cloud Alibba教程:Sentinel的使用
  2. 基于OpenCV的图像梯度与边缘检测!
  3. 博士因高校“虚假招聘”待遇不符辞职,却反被索要138万违约金,这是什么操作?...
  4. Model Search,了解一下?
  5. 为给微芯片拍照,IBM小哥用乐高拼了个电动显微镜,搭载树莓派,360度无死角拍摄...
  6. 百度“已死”,百度“真香”
  7. 设计模式篇之——命令设计模式
  8. 使用Pyecharts制作Bar3D用法详解
  9. 详解:Camera-IMU内外参标定原理
  10. 使用Python+OpenCV实现图像数据采集