HBase典型配置
来源:互联网 发布:本科 算法工程师 编辑:程序博客网 时间:2024/05/17 08:46
master首先启动后,所有的regions都会被assigned给第一个注册启动的regionserver,
这个造成数据严重倾斜,导致严重的性能问题。0.94之后的版本修复了hbase.master.wait.on.regionservers.mintostart,
只有启动的regionserver数量达到配置值时,regionserver才会并行地assign region给regionserver。
zookeeper配置项zookeeper.session.timeout
默认值是3分钟,即regionserver服务器宕机3分钟后,master才会通知服务器宕机。可以把这个配置值调到1分钟或者更低,这会加快master对宕机
的响应速度。但是调小这个参数也会带来其他影响,如果regionserver垃圾回收耗时超过该配置值,那么master会当做这个regionserver节点宕机,
这可能要导致重启该regionserver节点。这也可以解释有时大批量导入数据到HBase时,regionserver宕机的原因。
Hdfs配置项dfs.datanode.failed.volumes.tolerated
一个数据节点允许最大磁盘不可用数量,默认值是1,即一个数据节点上一块磁盘不可用即触发node fault。通常hdfs三副本分别存储在不同节点上,
因此调高该参数一般不会影响hdfs高可用性。
在HBase集群中,遇到如下问题:node fault会触发该节点上的hbase表region迁移,迁移过程中相关region不可用,通常迁移过程较快,一般几分钟
内即可完成,但对于性能要求比较高的业务,分钟级的region不可用也是难以容忍的。针对上述场景,调高该hdfs配置项可解决部分问题。
hbase.regionserver.handler.count
regionserver打开的线程数等待处理来自用户表请求,常规原则是对于数据量较小(MB级别)的请求时,将该值配置较低;反之若请求数据量较小,
则调大该配置,典型场景是用于网站后端服务,这类场景大多数为get请求,put buffered并不常见。
该值配置较大比较危险,当所有put请求的数据总量较大时,会对regionserver内存产生较大压力,甚至触发OOM。regionserver低内存运行会触发
频繁GC,使得GC pause更为显著。(the reason being that all the memory used to keep all the requests' payloads cannot be trashed, no
matter how hard the garbage collector tries).一段时间后,由于regionserver相应每个请求的时间变长,导致集群整体吞吐量变慢。可以通过
查看每个regionserver的rpc.logging尾行,可以协助判断配置值过大或者过小。
WAL大小和数量配置
HLog块大小应该配置为比HDFS略小(比如HDFS块大小64M,则HLog块大小应配置为不超过60M)。HLog数量配置应该依据Memstore配置,以实现容灾需求。
比如RS heap为16G,memstore配置0.4,默认HLog块大小60M,则HLog配置数量为16GB*0.4/60=109,实际情况是memstore不可能完全占满,因此
配置值可以小于109。
Split配置
通常情况下会使用hbase自动split功能,当region大小达到hbase.hregion.max.filesize的配置值大小时,会触发split。从0.90版本以后,增加了可手动触发split的功能。
手动触发split会region创建和移动underload,也使得region的界限清晰,并比较容易实现compaction交错触发以分散io压力。可以通过把hbase.hregion.max.filesize的值配置的很大来禁用自动split,比如配置为100G,但是不建议把它配置成绝对的long型上限值。总体来说,定位问题时可以使用手动触发split功能,通常情况下建议使用自动split。
预分region具体策略取决于你的业务场景,经验值是开始设置每个regionserver节点10个region。最优的region数量取决于最大的那个storefile,设置目标为最大的region仅仅在
major compaction的时候参与compaction,以防止大量的region同时参与compaction。
假如region已经被分为了很多大的region,可以通过调大HConstants.MAJOR_COMPACTION_PERIOD的值来降低major compaction发生的频率。
compaction配置
0.96版本之前,major compaction每天自动执行一次,之后的版本默认每7天执行一次。注意不要禁用major compaction。
推测执行机制
默认情况mapreduce任务的推测执行机制是开启的,通常情况下,建议关闭HBase集群系统级别的推测执行机制,仅对于特别的case可以打开。
balancer
周期性地在hmaster上运行,用于均衡各个regionserver上的负载。通过hbase.balancer.period来配置,默认值是5分钟。
BlockCache
通过hfile.block.cache.size配置BlockCache,不要把该值配置为0,否则regionserver会不断的加载hfile目录,该值最小配置为hfile目录的大小,可以通过hbase原生页面查看到该block size
参考自HBase社区文档
- HBase典型配置
- 典型配置
- hbase两个典型应用实例
- hbase两个典型应用实例
- hbase两个典型应用实例
- LAMP典型配置
- 华为路由器典型配置
- huawei交换机典型配置
- huawei交换机典型配置
- log4j.properties典型配置
- Nginx典型配置
- log4net的典型配置
- 典型ISIS配置
- jvm调优---典型配置
- VLAN典型配置举例
- 配置hbase
- 配置HBASE
- hbase配置
- 到底什么是响应式布局,响应式布局如何去写
- GitChat · 测试 | 大众点评搜索测试全揭露:1:9 的测试开发比下 QA 如何前行
- 9月7日云栖精选夜读:ApsaraDB for HBase性能/延时全面领先社区版本
- ruby on rails 关于update参数获取不到的问题
- react中的key属性与angular中的index属性
- HBase典型配置
- 【java笔试系列二】String、StringBuffer和StringBuilder
- POJ 3581 Sequence(后缀数组)
- C# 的占位符
- 大数据可视化展现之echarts实操
- 如何转载CSDN上的文章
- IMP-00038: 无法转换为环境字符集句柄
- Python3 连接各类数据库(Mysql、Mssql、Oracle)
- Unity3D 知识点总结