技术干货 | hbase配置详解

为了能够让namespace支持使用配置属性,如:namespace下表个数(hbase.namespace.quota.maxtables)或者region个数(hbase.namespace.quota.maxregions)

需要设置hbase.quota.enabled为true或者设置

<property>
<name>hbase.coprocessor.region.classes</name>
<value>org.apache.hadoop.hbase.namespace.NamespaceController</value>
</property>
<property>
<name>hbase.coprocessor.master.classes</name>
<value>org.apache.hadoop.hbase.namespace.NamespaceController</value>
</property>

hbase.tmp.dir

● 本地文件系统tmp目录,一般配置成local模式的设置一下,但是最好还是需要设置一下,因为很多文件都会默认设置成它下面的

● 线上配置

<property>
  <name>hbase.tmp.dir</name>
  <value>/mnt/dfs/11/hbase/hbase-tmp</value>
 </property>

● 默认值:

${java.io.tmpdir}/hbase-${user.name}

写到系统的/tmp目录

hbase.rootdir

● HBase集群中所有RegionServer共享目录,用来持久化HBase的数据,一般设置的是hdfs的文件目录,如hdfs://namenode.example.org:9000/hbase

● 线上配置

<property>
  <name>hbase.rootdir</name>
  <value>hdfs://mycluster/hbase</value>
 </property>

● 默认值:

${hbase.tmp.dir}/hbase
hbase.cluster.distributed

● 集群的模式,分布式还是单机模式,如果设置成false的话,HBase进程和Zookeeper进程在同一个JVM进程。

● 线上配置为true

● 默认值:false

hbase.zookeeper.quorum

● zookeeper集群的URL配置,多个host中间用逗号(,)分割

● 线上配置

<property>
  <name>hbase.zookeeper.quorum</name> <value>inspurXXX.xxx.xxx.org,inspurXXX.xxx.xxx.org,inspurXXX.xxx.xxx.org,inspurXXX.xxx.xxx.org,inspurXXX.xxx.xxx.org</value>
 </property>

● 默认值:localhost

hbase.zookeeper.property.dataDir

● ZooKeeper的zoo.conf中的配置。 快照的存储位置

● 线上配置:/home/hadoop/zookeeperData

● 默认值:${hbase.tmp.dir}/zookeeper

zookeeper.session.timeout

● 客户端与zk连接超时时间

● 线上配置:1200000(20min)

● 默认值:180000(3min)

hbase.zookeeper.property.tickTime

● Client端与zk发送心跳的时间间隔

● 线上配置:6000(6s)

● 默认值:6000

hbase.security.authentication

● HBase集群安全认证机制,目前的版本只支持kerberos安全认证。

● 线上配置:kerberos

● 默认值:空

hbase.security.authorization

● HBase是否开启安全授权机制

● 线上配置: true

● 默认值: false

hbase.regionserver.kerberos.principal

● regionserver的kerberos认证的主体名称(由三部分组成:服务或用户名称、实例名称以及域名)

● 线上配置:hbase/_HOST@HADOOP.xxx.xxx.COM

● 默认:无

hbase.regionserver.keytab.file

● regionserver keytab文件路径

● 线上配置:/home/hadoop/etc/conf/hbase.keytab

● 默认值:无

hbase.master.kerberos.principal

● master的kerberos认证的主体名称(由三部分组成:服务或用户名称、实例名称以及域名)

● 线上配置:hbase/_HOST@HADOOP.xxx.xxx.COM

● 默认:无

hbase.master.keytab.file

● master keytab文件路径

● 线上配置:/home/hadoop/etc/conf/hbase.keytab

● 默认值:无

hbase.regionserver.handler.count

● regionserver处理IO请求的线程数

● 线上配置:50

● 默认配置:10

hbase.regionserver.global.memstore.upperLimit

● RegionServer进程block进行flush触发条件:该节点上所有region的memstore之和达到upperLimit*heapsize

● 线上配置:0.45

● 默认配置:0.4

hbase.regionserver.global.memstore.lowerLimit

● RegionServer进程触发flush的一个条件:该节点上所有region的memstore之和达到lowerLimit*heapsize

● 线上配置:0.4

● 默认配置:0.35

hbase.client.write.buffer

● 客户端写buffer,设置autoFlush为false时,当客户端写满buffer才flush

● 线上配置:8388608(8M)

● 默认配置:2097152(2M)

hbase.hregion.max.filesize

● 单个ColumnFamily的region大小,若按照ConstantSizeRegionSplitPolicy策略,超过设置的该值则自动split

● 线上配置:107374182400(100G)

● 默认配置:21474836480(20G)

hbase.hregion.memstore.block.multiplier

● 超过memstore大小的倍数达到该值则block所有写入请求,自我保护

● 线上配置:8(内存够大可以适当调大一些,出现这种情况需要客户端做调整)

● 默认配置:2

hbase.hregion.memstore.flush.size

● memstore大小,当达到该值则会flush到外存设备

● 线上配置:104857600(100M)

● 默认值: 134217728(128M)

hbase.hregion.memstore.mslab.enabled

● 是否开启mslab方案,减少因内存碎片导致的Full GC,提高整体性能

● 线上配置:true

● 默认配置: true

hbase.regionserver.maxlogs

● regionserver的hlog数量

● 线上配置:128

● 默认配置:32

hbase.regionserver.hlog.blocksize

● hlog大小上限,达到该值则block,进行roll掉

● 线上配置:536870912(512M)

● 默认配置:hdfs配置的block大小

hbase.hstore.compaction.min

● 进入minor compact队列的storefiles最小个数

● 线上配置:10

● 默认配置:3

hbase.hstore.compaction.max

● 单次minor compact最多的文件个数

● 线上配置:30

● 默认配置:10

hbase.hstore.blockingStoreFiles

● 当某一个region的storefile个数达到该值则block写入,等待compact

● 线上配置:100(生产环境可以设置得很大)

● 默认配置: 7

hbase.hstore.blockingWaitTime

● block的等待时间

● 线上配置:90000(90s)

● 默认配置:90000(90s)

hbase.hregion.majorcompaction

● 触发major compact的周期

● 线上配置:0(关掉major compact)

● 默认配置:86400000(1d)

hbase.regionserver.thread.compaction.large

● large compact线程池的线程个数

● 线上配置:5

● 默认配置:1

hbase.regionserver.thread.compaction.small

● small compact线程池的线程个数

● 线上配置:5

● 默认配置:1

hbase.regionserver.thread.compaction.throttle

● compact(major和minor)请求进入large和small compact线程池的临界点

● 线上配置:10737418240(10G)

● 默认配置:2 * this.minFilesToCompact * this.region.memstoreFlushSize

hbase.hstore.compaction.max.size

● minor compact队列中storefile文件最大size

● 线上配置:21474836480(20G)

● 默认配置:Long.MAX_VALUE

hbase.rpc.timeout

● RPC请求timeout时间

● 线上配置:300000(5min)

● 默认配置:60000(10s)

hbase.regionserver.region.split.policy

● split操作默认的策略

● 线上配置: org.apache.hadoop.hbase.regionserver.ConstantSizeRegionSplitPolicy(采取老的策略,自己控制split)

● 默认配置: org.apache.hadoop.hbase.regionserver.IncreasingToUpperBoundRegionSplitPolicy(在region没有达到maxFileSize的前提下,如果fileSize达到regionCount * regionCount * flushSize则进行split操作)

hbase.regionserver.regionSplitLimit

● 单台RegionServer上region数上限

● 线上配置:150

● 默认配置:2147483647

hbase-env.sh配置

指定系统运行环境

export JAVA_HOME=/usr/lib/jvm/java-6-sun/ #JDK HOME

export HBASE_HOME=/home/hadoop/cdh4/hbase-0.94.2-cdh4.2.1 # HBase 安装目录

export HBASE_LOG_DIR=/mnt/dfs/11/hbase/hbase-logs #日志输出路径

JVM参数调优

export HBASE_OPTS="-verbose:gc -XX:+PrintGCDetails -Xloggc:${HBASE_LOG_DIR}/hbase-gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime \ -server -Xmx20480m -Xms20480m -Xmn10240m -Xss256k -XX:SurvivorRatio=4 -XX:MaxPermSize=256m -XX:MaxTenuringThreshold=15 \ -XX:ParallelGCThreads=16 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection \ -XX:+CMSClassUnloadingEnabled -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSMaxAbortablePrecleanTime=5000 \ "

原文发布于微信公众号 - 加米谷大数据(DtinoneBD)

原文发表时间:2017-12-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张戈的专栏

解决网站404页面返回200状态码问题

好久没打理博客,突然收到 CDN 流量预警,发现平均每天 40G 流量消耗!what?就现在这个访问量,不存在的。看了下 CDN 日志发现有小人一直在请求博客页...

2873
来自专栏开源优测

[接口测试_B] 02 Pytest的简单示例

Pytest是什么 Pytest是Python的一个测试工具,可以用于所有类型和级别的软件测试。Pytest是一个可以自动查找到你编写的用例并运行后输出结果的测...

3144
来自专栏小樱的经验随笔

LINUX中常用操作命令

LINUX中常用操作命令 Linux简介及Ubuntu安装 常见指令 系统管理命令 打包压缩相关命令 关机/重启机器 Linux...

4216
来自专栏xiaoheike

Elasticsearch Network Settings

Elasticsearch 缺省情况下是绑定 localhost。对于本地开发服务是足够的(如果你在相同机子上启动多个节点,它还可以形成一个集群),但是你需要配...

1612
来自专栏性能与架构

Varnish缓存服务器原理

Varnish 是什么 Varnish是高性能开源的反向代理服务器和HTTP缓存服务器 Varnish的功能与Squid服务器相似,都可以用来做HTTP缓存...

32611
来自专栏bluesummer

用Windbg来分析.Net程序的dump

介绍 1. 什么是Windbg WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还...

3986
来自专栏黑泽君的专栏

linux基本命令学习02

============================================================================= a....

1731
来自专栏抠抠空间

python并发编程之多进程(理论)

一、什么是进程 进程:正在进行的一个过程或者说一个任务。而负责执行任务则是cpu。 二、进程与程序的区别 程序:仅仅是一堆代 进程:是指打开程序运行的过程 三、...

4137
来自专栏ytkah

修改lastpass主密码后需重启firefox才能加载已保存的站点密码或用导入工具

  最近索尼事件闹得沸沸扬扬,预防黑客先从升级密码开始。由于开发的需要一般是用firefox作为默认的浏览器,很早以前就装了lastpass密码管理器作为必备附...

2964
来自专栏FreeBuf

内核漏洞利用:通过WARBIRD在Windows 10上提升权限

在这篇文章中,我想谈一谈通过基于Windows内核的exploit来提升权限。之所以没有使用像HackSys Extreme Vulnerable Window...

3678

扫码关注云+社区

领取腾讯云代金券