Hbase配置

Hbase官方手册-配置

褚金辉 2017-11-09 18:47:15 3482 收藏
分类专栏: hbase HDFS hadoop hadoop 文章标签: hbase hadoop
学过上一章快速入门之后,本章详细的介绍hbase的配置。请仔细的阅读本章节,尤其是基本先决条件,保证HBase测试和部署的正常工作,预防数据丢失

配置文件
hbase和hadoop使用相同的配置系统。所有的配置文件在conf目录下,集群中所有节点中的配置必须保持同步,所有的配置文件如下:
backup-masters
默认是不存在的,是一个文本文件,列出所有需要启动备份Master的主机名称或ip,一个主机一行。

hadoop-metrics2-hbase.properties
用来连接 hbase hadoop的Metrics2框架。

hbase-env.cmd and hbase-env.sh
hbase在windows和linux上的工作环境设置,包含JAVA_HOME,java启动参数,以及其他的一些环境变量。这个文件中提供了很多已经注释上的实例。

hbase-policy.xml
默认的策略配置文件使用RPC服务来验证客户端请求。仅在安全模式下才有用。

hbase-site.xml
hbase主要的配置文件。这个文件指定的参数会覆盖hbase默认配置。你可以查看hbase源码中resouces中的hbase-default.xml文件。你也可以hbase WEB UI中的hbase configuration标签中查看你目前的完整配置。
这里写图片描述

log4j.properties
hbase通过log4j来控制日志

regionservers
一个文本文件,包含所有需要运行regionserver服务的注解。默认这个文件中只有一行localhost

先决条件
hbase版本 JDK7 JDK8
2.0 no yes
1.3 yes yes
1.2 yes yes
1.1 yes 没有测试
ssh
hbase 使用 ssh命令连接各个节点。所以必须保证各个节点之间可以使用无密码的ssh互联。

DNS
HBase使用本机名称来找ip地址,0.92.0之后的版本都使用DNS解析。hadoop-dns-checker可以用来验证集群中的DNS是否正常工作。

Loopback IP
hbase之前的0.96.0版本,使用127.0.0.1引用localhost,这是不可配置的。

NTP
集群中的时钟必须同步,短时间的不同可以接受,但是长时间的时钟差距会造成不可预料的后果。时钟同步是在集群之前首要做的工作。建议执行网络时间协议(NTP)服务,或者另外的时间同步机器,使得所有集群节点都只有一个时间同步机。

文件和进程
hbase是一个数据库。需要一次性的打开大量的文件。很多linux版本都限制一个用户打开的数量为1024或者256。你可以使用ulint -n来查看你的服务器限制的数量,如果限制的数量太低,你可能会出现一些错误,比如下面的错误:

2010-04-06 03:04:37,542 INFO org.apache.hadoop.hdfs.DFSClient: Exception increateBlockOutputStream java.io.EOFException
2010-04-06 03:04:37,542 INFO org.apache.hadoop.hdfs.DFSClient: Abandoning block blk_-6935524980745310745_1391901
1
2
建议至少提升ulimit到10000,但最好是10240,因为这是1024的倍数。每个列族最少有一个StoreFile,但是如果region在负载下的话就可能会有多于6个的StoreFile。所以打开文件的数量依赖于列族的数量和region的数量,下面的公式计算一个RegionServer上可能会打开的文件的数量:

(StoreFiles per ColumnFamily) x (regions per RegionServer)
1
举个例子,假设一个结构中,每个region有3个列族,每个列族平均有3个StoreFile,每个RegionServer上有100个region,那么JVM就可能打开 3 * 3 * 100 = 900个文件描述符,不包括打开的jar文件,配置文件,和其他文件的数量。打开文件不需要很多的资源,允许用户打开很多的文件的风险是很小的。

另外相关的就是允许用户一次打开的进程个数,Linux平台使用ulimit -u命令设置进程数量。不要困惑于nproc命令,这个命令用于控制用户可用的CPU个数。负载的情况下如果ulimit -u设置的太低,可能会导致OutOfMemoryError异常。

配置文件描述符和进程数量是草错系统的配置,而不是hbase的配置。

Linux Shell
所有的hbase shell脚本都依赖GNU Bash。

Windows
之前的hbase 0.96版本在windows上仅仅用来测试,在windows上运行正式环境是不推荐的。

hadoop
下面的表格列出了hbase和hadoop的版本支持。你必须选择合适的hadoop版本。

S:表示支持。
X:表示不支持。
NT:表示没有测试。
HBase-1.1.x HBase-1.2.x HBase-1.3.x HBase-2.0.x
Hadoop-2.0.x-alpha X X X X
Hadoop-2.1.0-beta X X X X
Hadoop-2.2.0 NT X X X
Hadoop-2.3.x NT X X X
Hadoop-2.4.x S S S X
Hadoop-2.5.x S S S X
Hadoop-2.6.0 X X X X
Hadoop-2.6.1+ NT S S S
Hadoop-2.7.0 X X X X
Hadoop-2.7.1+ NT S S S
Hadoop-2.8.0 X X X X
Hadoop-2.8.1 X X X X
Hadoop-3.0.0-alphax NT NT NT NT
dfs.datanode.max.transfer.threads
HDFS的DataNode有一个文件数量的上限。可以在hadoop的hdfs-site.xml中设置这个属性,如下:

dfs.datanode.max.transfer.threads 4096 1 2 3 4 设置之后请重启HDFS。没有这个配置会导致奇怪的错误。由此造成的一个错误如下:

10/12/08 20:10:31 INFO hdfs.DFSClient: Could not obtain block
blk_XXXXXXXXXXXXXXXXXXXXXX_YYYYYYYY from any node: java.io.IOException: No live nodes
contain current block. Will get new block locations from namenode and retry…
1
2
3
zookeeper需求
需要ZooKeeper 3.4.x,hbase多功能的使用从zookeeper3.4.0开始支持。hbase.zookeeper.useMulti配置默认是true。

HBase运行模式:单节点和分布式
hbase有两种运行模式:单节点和分布式。默认hbase是单节点的。不管是那种模式,你都需要配置conf下的配置文件,最起码你需要配置conf/hbase-env.sh来告诉hbase你是用哪个java。在这个文件中你可以配置JVM堆大小和其他的一些参数。

单节点
这是默认模式,在快速入门章节介绍过,单节点模式下hbase不使用HDFS,而是使用本地文件系统,所有进程都运行在一个JVM下。

HDFS之上的单节点
单节点模式如果不使用本地文件系统,而是使用HDFS也是很有用处的。编辑hbase-site.xml文件设置hbase.rootdir值为HDFS的实例,并且设置hbase.cluster.distributed的值为false,如下:

hbase.rootdir hdfs://namenode.example.org:8020/hbase hbase.cluster.distributed false 1 2 3 4 5 6 7 8 9 10 分布式 包括伪分布和全分布,伪分布可以使用本地文件系统,也可以使用HDFS。全分布模式只能使用HDFS。

伪分布
在快速入门中已介绍。
伪分布是一个简单的全分布,仅仅运行在一台主机上,仅用来测试和原型设计,不要用这个模式运行在正式环境下。

全分布
单节点和伪分布的目的只是为了小规模的测试,生产环境下必须使用全分布模式。每个实例进程都运行在集群中的不同主机上。
全分布模式必须设置hbase.cluster.distributed的值为true。通常hbase.rootdir配置为一个高可用的HDFS文件系统。

另外,集群中多个节点包括:RegionServer,ZooKeeper QuorumPeer,backup HMaster。这些配置我们都在快速入门中介绍过。

一般你的集群包括多个RegionServer运行在不用的主机上。conf/regionservers文件中指定了一个主机列表,这些主机上都会启动RegionServer。

下面是一个集群配置的例子:
hbase-site.xml内容如下:

hbase.rootdir hdfs://namenode.example.org:8020/hbase hbase.cluster.distributed true hbase.zookeeper.quorum node-a.example.com,node-b.example.com,node-c.example.com 1 2 3 4 5 6 7 8 9 10 11 12 13 14 regionservers内容如下:

node-a.example.com
node-b.example.com
node-c.example.com
1
2
3
backup-masters文件内容如下:

node-b.example.com
node-c.example.com
1
2
运行和测试
首先需要确定你的HDFS正在运行,启动和停止HDFS进程使用hadoop的bin/start-hdfs.sh命令,你可以使用put和get命令测试HDFS是否正常。hbase通常不适用MapReduce和YARN,所以这些不需要启动。

如果你使用自己的ZooKeeper,启动并且确认它正常运行。

启动HBase命令如下:

bin/start-hbase.sh
1
那么你先在就有了一个正在执行的HBase了,日志会在logs目录下,如果hbase启动有问题,你可以在日志中检查出了什么问题。

hbase的WEB UI端口是16010,你可以使用http://master.example.org:16010来访问你的web接口。

停止hbase使用下面命令:

$ ./bin/stop-hbase.sh
stopping hbase…
1
2
停止会花费一点时间,如果你的集群由更多的机器组成,那么可能将花费更多的时间。如果你运行于分布式模式下,请务必确认hbase已经停止后再停止hadoop。

默认配置
hbase的主要配置是conf/hbase-site.xml.你可以在hbase源码中src/main/resources路径下找到hbase-default.xml的默认配置。

并不是所有的配置都在hbase-default.xml中列出,一些配置可能仅仅出现再代码中。

如果你改变了hbase的配置,你需要重启hbase使这些新的配置生效。

默认配置
下面的文档来自于hbase-default.xml中。

hbase.tmp.dir
本地文件系统的临时目录,指定一个永久的属性值来替换默认的/tmp目录(这个目录是java.io.tmpdir指定的),因为/tmp目录在主机重启后会清除。
默认路径是:

j a v a . i o . t m p d i r / h b a s e − {java.io.tmpdir}/hbase- java.io.tmpdir/hbase{user.name}
1
hbase.rootdir
这个目录被region服务共享,也是Hbase持久化数据的地方。默认在${hbase.tmp.dir}目录中。如果你改变了这个属性值,那么重启hbase后所有的数据都会丢失。

hbase.fs.tmp.dir
HDFS中一个用来存放临时数据的目录。默认是:/user/${user.name}/hbase-staging

hbase.cluster.distributed
hbase运行模式,单节点为false,分布式为true。默认是false

hbase.zookeeper.quorum
逗号分隔的ZooKeeper服务主机名称,比如:”host1.mydomain.com,host2.mydomain.com,host3.mydomain.com”,默认设置为localhost。如果hbase-env.sh中设置了HBASE_MANAGES_ZK,表示由hbase管理zookeeper的启动和停止。客户端方面需要使用hbase.zookeeper.property.clientPort配置。

zookeeper.recovery.retry.maxsleeptime
zookeeper重试的最大睡眠时间,单位毫秒,保证不会无休止的水面下去。默认是60000。

hbase.local.dir
本地存储的目录。默认是${hbase.tmp.dir}/local/

hbase.master.port
hbase Master端口,默认16000

hbase.master.info.port
hbase Master WEB UI 端口,如果不想访问UI,可以设置为-1。默认为16010。

hbase.master.info.bindAddress
WEB UI IP地址。默认:0.0.0.0

hbase.master.logcleaner.plugins
逗号分隔的BaseLogCleanerDelegate,被LogsCleaner服务按执行。WAL清除工按照顺序执行,默认:org.apache.hadoop.hbase.master.cleaner.TimeToLiveLogCleaner,org.apache.hadoop.hbase.master.cleaner.TimeToLiveProcedureWALCleaner

hbase.master.logcleaner.ttl
WAL保留在{hbase.rootdir}/oldWALs目录中的时间,单位毫秒。过期后会被Master线程清除。默认:60000。

hbase.master.procedurewalcleaner.ttl
WAL保留在{hbase.rootdir}/oldWALs/masterProcedureWALs目录中的时间,单位毫秒。过期后会被Master线程清除。默认:604800000

hbase.master.hfilecleaner.plugins
逗号分隔的BaseHFileCleanerDelegate,被HFileCleaner服务执行。这些HFile按顺序执行。实现自己的BaseHFileCleanerDelegate需要加入HBase的classpath并且在这里增加全类名。通常使用上面默认的清洁工,因为他们会在hbase-site.xml中重写。默认:org.apache.hadoop.hbase.master.cleaner.TimeToLiveHFileCleaner

hbase.master.infoserver.redirect
不管是不是监听 web UI 端口,都重定向到 Master和RegionServer共享的web UI 服务。默认true。

hbase.regionserver.port
RegionServer 端口,默认16020

hbase.regionserver.info.port
RegionServer web UI端口。不适用设置为-1。默认16030。

hbase.regionserver.info.bindAddress
RegionServer web UI地址,默认:0.0.0.0

hbase.regionserver.info.port.auto
如果hbase.regionserver.info.port指定的端口已经被使用,那么自动寻找端口。测试使用,默认是false。

hbase.regionserver.handler.count
RegionServer上的RPC处理器实例数量,默认是30。

hbase.ipc.server.callqueue.handler.factor
此值决定队列的数量,0表示所有的处理器都使用同一个队列,1表示每个处理器有自己的队列。默认是0.1。

hbase.ipc.server.callqueue.read.ratio
动态的区分读写队列,0表示不区分,读写都可以使用相同的队列。0.5表示一半队列是读,一半队列是写。小于0.5表示读队列小于写队列数量,大于0.5表示读队列数量大于写队列数量。默认是0。

hbase.ipc.server.callqueue.scan.ratio
由callqueue.read.ratio计算的刀读队列的数量。scan.ratio区分短读和长读队列(也就是不耗时和耗时)。如果小于0.5表示长度的数量小于短度的数量,一次类推。默认是0。

hbase.regionserver.msginterval
RegionServer 和 Master 之间的消息间隔,毫秒。默认:3000

hbase.regionserver.logroll.period
多长时间把日志提交。默认:3600000

hbase.regionserver.logroll.errors.tolerated
连续多少个WAL关闭错误会导致服务终止,0表示,如果在提交日志是关闭当前WAL写失败那么regionserver中止。一个小的(2或者3)表示允许HDFS瞬间的的错误。默认是2。

hbase.regionserver.hlog.reader.impl
WAL文件读实现。默认:org.apache.hadoop.hbase.regionserver.wal.ProtobufLogReader

hbase.regionserver.hlog.writer.impl
WAL文件写实现,默认:org.apache.hadoop.hbase.regionserver.wal.ProtobufLogWriter

hbase.regionserver.global.memstore.size
在更新阻塞或者强制flush之前一个regionserver的所有内存的最大容量。默认是heap的40%。当内存大小达到hbase.regionserver.global.memstore.size.lower.limit限制时更新阻塞和强制flush。默认是none为了兼容老的hbase.regionserver.global.memstore.upperLimit配置。

hbase.regionserver.global.memstore.size.lower.limit
强制flush之前,一个regionserver所有内存大小。默认是hbase.regionserver.global.memstore.size的95%,如果设置100%会导致由于内存限制而更新阻塞时不会flush,默认值为none为了兼容老的hbase.regionserver.global.memstore.lowerLimit配置。

hbase.systemtables.compacting.memstore.type
决定系统表的内存类型,比如META,表名称空间等。默认是none,表示所有系统表,如果要压缩内存系统表,设置属性为BASIC/EAGER。

hbase.regionserver.optionalcacheflushinterval
动态flush间隔时间,默认1小时,0表示不动态刷新。默认:3600000

hbase.regionserver.dns.interface
regionserver报告IP地址的网络接口,默认default。

hbase.regionserver.dns.nameserver
DNS的主机或者ip,master的主机名称,默认default。

hbase.regionserver.region.split.policy
resion分割策略。BusyRegionSplitPolicy,ConstantSizeRegionSplitPolicy,DisabledRegionSplitPolicy,DelimitedKeyPrefixRegionSplitPolicy,KeyPrefixRegionSplitPolicy和SteppingSplitPolicy。默认是org.apache.hadoop.hbase.regionserver.SteppingSplitPolicy。

hbase.regionserver.regionSplitLimit
region分割数量限制,默认是1000。

zookeeper.session.timeout
ZooKeeper session超时时间,单位毫秒,默认90000。

zookeeper.znode.parent
zookepper中的Hbase根节点ZNode。所有ZooKeeper文件的相对路径都配置在这个节点下。默认/hbase。

zookeeper.znode.acl.parent
ZNode的访问控制列表,默认:acl

hbase.zookeeper.dns.interface
ZooKeeper报告IP的网络接口。默认:default.

hbase.zookeeper.dns.nameserver
DNS的主机名或者IP,ZooKeeper用来决定master的主机名,为了相互沟通和展示。默认default。

hbase.zookeeper.peerport
ZooKeeper peer相互连接的端口。默认2888。

hbase.zookeeper.leaderport
zookeeper领导选举端口。默认3888。

hbase.zookeeper.property.initLimit
来自zookeeper的配置zoo.cfg。初始同步阶段的心跳数量。默认10。

hbase.zookeeper.property.syncLimit
来zookeeper的配置zoo.cfg。发送请求和获得结果之间可以跳过的心跳数量,默认是5。

hbase.zookeeper.property.dataDir
来zookeeper的配置zoo.cfg。存储快照的目录。默认:${hbase.tmp.dir}/zookeeper

hbase.zookeeper.property.clientPort
来zookeeper的配置zoo.cfg。客户端连接端口。默认:2181。

hbase.zookeeper.property.maxClientCnxns
来zookeeper的配置zoo.cfg。限制一个客户端的并发连接数量。默认:300。

hbase.client.write.buffer
BufferedMutator 写缓冲区大小。大的缓冲区占用更多的内存—客户端和服务器都占用。但是大的缓冲区减少RPC创建的数量。如果设置服务器的内存使用,用hbase.client.write.buffer * 。默认是:2097152。

hbase.client.pause
一般客户端暂停值。等待get,region lookup的重试操作,看hbase.client.retries.number属性来了解如果补偿初始暂停值以及重试暂停是如何工作的。

hbase.client.pause.cqtbe
不管是不是为CallQueueTooBigException (cqtbe)指定了一个客户端暂停。如果你观察同一个regionserver的CQTBE很频繁,或者call队列满了,请为为这个属性设置比hbase.client.pause更高的值,默认:none。

hbase.client.retries.number
最大重试次数。作为所有可重试操作的最大数量,比如获得一个cell的值,更新一行的值等等。这是一个基于hbase.client.pause的不准确的功能。第一次重试使用这个时间间隔,但是之后的会不同,很快就达到每10秒重试一次。查看HConstants#RETRY_BACKOFF了解是如何增加的。改变这个以及hbase.client.paus的设置来适应你的系统。默认:35。

hbase.client.max.total.tasks
一个HTable实例发送的最大并发任务数到集群。默认100。

hbase.client.max.perserver.tasks
一个HTable实例发送的最大并发任务数到regionserver,默认是2。

hbase.client.max.perregion.tasks
客户端为region保留的最大并发数。如果hbase.client.max.perregion.tasks正在写,那么新的put不会发送给region知道写完成。默认1。

hbase.client.perserver.requests.threshold
一个服务器的所有客户端并发等待请求的最大数量。超过的请求会抛出ServerTooBusyException 异常。默认:2147483647

hbase.client.scanner.caching
如果内存不够,当使用scan时,我们希望返回多少行数据。这个属性和hbase.client.scanner.max.result.size一起使用可能更有效的使用网络。默认值;2147483647

hbase.client.keyvalue.maxsize
指定客户端KeyValue实例的最大容量。默认10485760

hbase.server.keyvalue.maxsize
指定服务器KeyValue实例的最大容量。默认10485760

hbase.client.scanner.timeout.period
客户端scanner超时:默认60000

hbase.client.localityCheck.threadPoolSize
默认2

hbase.bulkload.retries.number
bulkload最大重试次数,默认10。

hbase.master.balancer.maxRitPercent
当负载均衡操作时过渡区域的最大百分比,默认是1,也就是没有负载均衡节流,如果设置为0.01,意思是最多1%的过渡区域,也就是说集群最少99%可用。

hbase.balancer.period
多长时间进行一次负载均衡。默认300000。

hbase.regions.slop
如果任何regionserver 拥有average + (average * slop)个region(区域)就会触发负载均衡。默认值是0.001,默认的负载均衡器是StochasticLoadBalancer。如果是其他均衡器,比如SimpleLoadBalancer,那么此值就是0.2。

hbase.server.thread.wakefrequency
service工作的sleep间隔,单位毫秒。 可以作为service线程的sleep间隔,比如log roller.默认: 10000

hbase.server.versionfile.writeattempts
退出前尝试写版本文件的次数。每次尝试由 hbase.server.thread.wakefrequency 毫秒数间隔。默认:3

hbase.hregion.memstore.flush.size
当memstore的大小超过这个值的时候,会flush到磁盘。这个值被一个线程每隔hbase.server.thread.wakefrequency检查一下。默认:134217728

hbase.hregion.percolumnfamilyflush.size.lower.bound.min
如果使用FlushLargeStoresPolicy ,并且拥有多个列族。每次达到内存限制,我们会查看所有列族,那个内存超过了下界,就仅flush那个到磁盘,剩下的仍然保留在内存中,下界可以使用hbase.hregion.memstore.flush.size / column_family_number设置。如果没有列族的下界超出,那么就flush所有的内存。默认值为:16777216

hbase.hregion.preclose.flush.size
当一个region中的memstore的大小大于这个值的时候,我们又触发了close.会先运行“pre-flush”操作,清理这个需要关闭的memstore,然后将这个region下线。当一个region下线了,我们无法再进行任何写操作。如果一个memstore很大的时候,flush操作会消耗很多时间。”pre-flush”操作意味着在region下线之前,会先把memstore清空。这样在最终执行close操作的时候,flush操作会很快。默认: 5242880

hbase.hregion.memstore.block.multiplier
如果memstore有hbase.hregion.memstore.block.multiplier倍数的hbase.hregion.flush.size的大小,就会阻塞update操作。这是为了预防在update高峰期会导致的失控。如果不设上界,flush的时候会花很长的时间来合并或者分割,最坏的情况就是引发out of memory异常。(译者注:内存操作的速度和磁盘不匹配,需要等一等。原文似乎有误)。默认: 2

hbase.hregion.memstore.mslab.enabled
体验特性:启用memStore分配本地缓冲区。这个特性是为了防止在大量写负载的时候堆的碎片过多。这可以减少GC操作的频率。(GC有可能会Stop the world)(译者注:实现的原理相当于预分配内存,而不是每一个值都要从堆里分配)。默认: true

hbase.hregion.max.filesize
最大HStoreFile大小。若某个列族的HStoreFile增长达到这个值,这个Hegion会被切割成两个。 默认: 10G.
默认:10737418240

hbase.hregion.majorcompaction
一个Region中的所有HStoreFile的major compactions的时间间隔。默认是1天。 设置为0就是禁用这个功能。默认: 86400000

hbase.hregion.majorcompaction.jitter
hbase.hregion.majorcompaction的乘子,导致压缩在hbase.hregion.majorcompaction两边浮动,值越小,压缩发生的时机就越接近hbase.hregion.majorcompaction。

hbase.hstore.compactionThreshold
当一个HStore含有多于这个值的HStoreFiles(每一个memstore flush产生一个HStoreFile)的时候,会执行一个合并操作,把这HStoreFiles写成一个。这个值越大,需要合并的时间就越长。默认: 3

hbase.hstore.flusher.count
flush线程的数量,少的线程数量会使得flush进入队列;多的线程flush会并行执行,会提升HDFS的负载。默认是2:

hbase.hstore.blockingStoreFiles
当一个HStore含有多于这个值的HStoreFiles(每一个memstore flush产生一个HStoreFile)的时候,会执行一个合并操作,update会阻塞直到合并完成,直到超过了hbase.hstore.blockingWaitTime的值。默认: 7

hbase.hstore.blockingWaitTime
hbase.hstore.blockingStoreFiles所限制的StoreFile数量会导致update阻塞,这个时间是来限制阻塞时间的。当超过了这个时间,HRegion会停止阻塞update操作,不过合并还有没有完成。默认为90s.默认: 90000

hbase.hstore.compaction.min
在压缩运行之前符合压缩的最小StoreFile数量。避免太多小文件压缩,设置为2会导致
有两个StoreFiles的小压缩,这可能是不合适的。如果设置的数量过大,所有其他的值都要做相应的调整。大部分情况默认值是合适的。之前的版本中hbase.hstore.compaction.min名称为hbase.hstore.compactionThreshold。默认为:3

hbase.hstore.compaction.max
小压缩最大的StoreFile数量。hbase.hstore.compaction.max有效的控制一个简单压缩的时间,设置的过大导致一次压缩包含的StoreFile过多。大多数情况,使用默认值是合适的。默认:10。

hbase.hstore.compaction.min.size
一个StoreFile的大小如果小于这个值,就满足小压缩的条件。此值大小的HFile或者更大的要根据hbase.hstore.compaction.ratio来判断是否满足条件。如果写负载环境,这个值应该被减小。默认128M
默认:134217728

hbase.hstore.compaction.max.size
一个StoreFile的大小超过这个值,也会包含在压缩中。如果你觉得压缩发生的很频繁,你可以尝试提高这个值。默认是LONG.MAX_VALUE,9223372036854775807。

hbase.hstore.compaction.ratio
对于小压缩来说,这个值决定如果给定一个大于hbase.hstore.compaction.min.size的StoreFile,是否满足压缩条件。目标是限制大的 StoreFile压缩。如此值为10,那么将产生一个巨大的StoreFile。相反,如果小值,比如0.25,将提供和BigTable压缩算法相似的能力,产生4个StoreFile。此值在1.0和1.4之间是推荐的。优化此值的时候,需要平衡读写花销,大的值带来更多的写花销。一般使用默认值即可,默认:1.2F

hbase.hstore.compaction.ratio.offpeak
设置一个不同的比例来决定是否大的StoreFile在非高峰时刻是否包含在压缩中。和hbase.hstore.compaction.ratio的工作方式相同。但仅在hbase.offpeak.start.hour和hbase.offpeak.end.hour可用是生效。默认:5.0F。

hbase.hstore.time.to.purge.deletes
删除标识清除的时间,如果没有设置,或设置为0,所有删除标识在下次大压缩时清除。否则再大压缩之后加此配置的值后清除。毫秒,默认0。

hbase.offpeak.start.hour
非高峰开始,值为0到23,-1标识不适用此参数。默认-1。

hbase.offpeak.end.hour
非高峰结束,值为0到23,-1标识不适用此参数。默认-1。

hbase.regionserver.thread.compaction.throttle
有两个不同的线程池用来压缩,一个是大压缩,一个是小压缩。如果压缩大于这个值,那么使用大压缩池。大部分情况默认值就可以,默认:2 * hbase.hstore.compaction.max *hbase.hregion.memstore.flush.size。2684354560。

hbase.regionserver.majorcompaction.pagecache.drop
主要压缩是否删除读写页到系统缓存页。默认是true,表示不删除。

hbase.hstore.compaction.kv.max
当flush或者压缩时KeyValue读和写的最大数量。如果是大的Keyvalue那么设置一个小的值。默认是10。

hbase.storescanner.parallel.seek.enable
允许StoreFileScanner并行查找。特定场景下会降低相应延迟。默认false。

hbase.storescanner.parallel.seek.threads
并行查找的线程池大小。默认:10

hfile.block.cache.size
为StoreFile分配块缓存的最大堆百分比。默认0.4。0表示不可能,不推荐。起码也要分配最少且充足的缓存来容纳storefile。

hfile.block.index.cacheonwrite
块缓存允许非跟多层次索引块。默认false

hfile.index.block.max.size
当叶子,中间,跟索引块达到这个大小,那么创建一个新块。默认:131072

hbase.bucketcache.ioengine
桶缓存内容存储的位置。默认:none

hbase.bucketcache.combinedcache.enabled
是否使用桶缓存。默认true。

hbase.bucketcache.size
桶缓存大小,堆大小的百分比。默认:none。

hbase.bucketcache.bucket.sizes
逗号分隔的桶大小。默认:none

hfile.format.version
HFile格式化版本。默认3

hfile.block.bloom.cacheonwrite
允许写缓存。默认false。

io.storefile.bloom.block.size
一个符合bloom过滤器的单个块大小,默认:131072

hbase.rs.cacheblocksonwrite
当块结束时,是否加入到块缓存。默认false。

hbase.rpc.timeout
RPC层定义客户端应用远程调用超时时间。会抛出一个TimeoutException。默认60000。

hbase.client.operation.timeout
操作超时是顶级的约束,确保表中阻塞操作不会超过此值的限制。默认:1200000

hbase.cells.scanned.per.heartbeat.check
心跳中浏览单元格的数量。心跳检测在scan过程中发生,决定是否停止scan,给客户端发送一个心跳消息。心跳消息用来保持在一个长时间的scan时的服务器和客户端的连接。小的值表示心跳检测会经常发生。默认:10000。

hbase.rpc.shortoperation.timeout
这是另一个版本的hbase.rpc.timeout。默认:10000。

hbase.ipc.client.tcpnodelay
rpcsocket连接无延迟。默认true。

hbase.regionserver.hostname
regionserver主机名。除非你知道你在干嘛,否则不要设置这个值。默认none

hbase.regionserver.hostname.disable.master.reversedns
除非你知道你在干嘛,否则不要设置这个值。当设置为true,regionserver会使用当前节点的主机名,会跳过DNS。默认false。

hbase.master.keytab.file
kerberos keytab文件完整路径用于登录配置HMaster服务器。默认:none。

hbase.master.kerberos.principal
比如:hbase/_HOST@EXAMPLE.COM。默认:none

hbase.regionserver.keytab.file
kerberos keytab文件完整路径用于登录配置HRegionServer 服务器。默认:none。

hbase.regionserver.kerberos.principal
比如:”hbase/_HOST@EXAMPLE.COM”,默认none。

hadoop.policy.file
策略配置文件。默认:hbase-policy.xml

hbase.superuser
超级用户列表。默认:none。
hbase.auth.key.update.interval
验证key的更新时间。默认:86400000

hbase.auth.token.max.lifetime
验证token的过期时间。默认:604800000

hbase.ipc.client.fallback-to-simple-auth-allowed
如果客户端配置一个安全的连接,但是连接了一个非安全的服务器,服务器会给客户端发一个没必要使用安全连接的信息,
这个配置表示客户端是否接受是否接受此消息。默认:false

hbase.ipc.server.fallback-to-simple-auth-allowed
当服务器配置需要一个安全的连接,就会拒绝客户端的非安全验证。这个设置表示是否允许安全的服务器接受非安全的客户端连接。默认:false

hbase.display.keys
webUI展示内容,如果设置为true站所是有开始/结束的key。默认:true

hbase.coprocessor.enabled
是否允许协处理器加载。默认:true

hbase.coprocessor.user.enabled
是否允许用户协处理器加载。默认:true。

hbase.coprocessor.region.classes
region协处理器加载的类。默认:none

hbase.rest.port
HBase REST服务的端口。默认:8080

hbase.rest.readonly
HBase REST只读。默认:false

hbase.rest.threads.max
HBase REST最大线程数量。默认:100

hbase.rest.threads.min
HBase REST最小线程数量。默认:2

hbase.rest.support.proxyuser
是否运行REST服务支持用户代理模式。默认:false

hbase.defaults.for.version.skip
true表示跳过hbase.defaults.for.version检查。默认:false

hbase.coprocessor.master.classes
逗号分隔的被加载的org.apache.hadoop.hbase.coprocessor.MasterObserver协处理器。默认:none

hbase.coprocessor.abortonerror
如果协处理器加载失败,中止Master或者regionserver。默认:true

hbase.table.lock.enable
架构改变的操作是否锁住表。默认:true

hbase.table.max.rowsize
表最大行数。默认:1073741824

hbase.thrift.minWorkerThreads
线程池的核心大小。默认:16

hbase.thrift.maxWorkerThreads
线程池的最大个数。默认:1000

hbase.thrift.maxQueuedRequests
队列中最大等待连接数。默认:1000

hbase.regionserver.thrift.framed
在服务器上使用Thrift TFramedTransport。默认:false

hbase.regionserver.thrift.framed.max_frame_size_in_mb
使用帧传输时的大小,单位MB。默认:2

hbase.regionserver.thrift.compact
使用Thrift TCompactProtocol二进制序列化协议。默认:false

hbase.rootdir.perms

FS根目录的权限。默认:700

hbase.wal.dir.perms
DAL目录权限。默认:700

hbase.data.umask.enable
如果是true,regionserver会设置文件的权限。默认:false

hbase.data.umask
如果hbase.data.umask.enable为true,数据文件会被设置权限。默认:000

hbase.snapshot.enabled
是否允许快照。默认:true

hbase.snapshot.restore.take.failsafe.snapshot
设置为true,表示存储操作之前创建一个快照,防止失败。默认:true

hbase.snapshot.restore.failsafe.name
快照名称。默认:hbase-failsafe-{snapshot.name}-{restore.timestamp}

hbase.server.compactchecker.interval.multiplier
周期检查是否需要压缩的时间。默认:1000

hbase.lease.recovery.timeout
等待dfs恢复时间。默认:900000

hbase.lease.recovery.dfs.timeout
dfs恢复调用间隔。默认:64000

hbase.column.max.version
列族最大版本。默认:1

dfs.client.read.shortcircuit
设置为true表示,允许短路本地读。默认:false

dfs.domain.socket.path
如果dfs.client.read.shortcircuit设置为true,用来表示DataNode和本地HDFS客户端连接。
如果_PORT存在,将替换DataNode的TCP端口。默认:none

hbase.dfs.client.read.shortcircuit.buffer.size
短路本地读的缓冲区大小。默认:131072

hbase.regionserver.checksum.verify
如果为true,hbase检查hfile块的校验和。默认:true

hbase.hstore.bytes.per.checksum
校验和块的字节大小。默认:16384

hbase.hstore.checksum.algorithm
校验和算法.可能的值为: NULL, CRC32, CRC32C.默认:CRC32C

hbase.client.scanner.max.result.size
下次调用scanner的方法返回的最大字节。如果单行大于这个限制,那么这行依旧会被返回。默认:2097152

hbase.server.scanner.max.result.size
下次调用scanner的方法返回的最大字节。如果单行大于这个限制,那么这行依旧会被返回。默认:104857600

hbase.status.published
激活传播master和region server的状态。默认:false

hbase.status.publisher.class
多播发布状态的实现类。默认:org.apache.hadoop.hbase.master.ClusterStatusPublisher$MulticastPublisher

hbase.status.listener.class
状态监听多播消息的实现类。默认:org.apache.hadoop.hbase.client.ClusterStatusListener$MulticastListener

hbase.status.multicast.address.ip
多播地址:默认:226.1.1.3

hbase.status.multicast.address.port

多播端口。默认:16100

hbase.dynamic.jars.dir
动态jar目录,可以不重启就被regionserver动态加载。默认:${hbase.rootdir}/lib

hbase.security.authentication
是否开启Hbase验证,可能的值simple,kerberos。simple表示不验证。默认:simple

hbase.rest.filter.classesREST服务的Servlet过滤器。默认:org.apache.hadoop.hbase.rest.filter.GzipFilter

hbase.master.loadbalancer.class
此类用来执行region负载均衡。默认:org.apache.hadoop.hbase.master.balancer.StochasticLoadBalancer

hbase.master.normalizer.class
此类用来执行region归一化。默认:org.apache.hadoop.hbase.master.normalizer.SimpleRegionNormalizer

hbase.rest.csrf.enabled
开启对CSRF的保护。默认:false

hbase.rest-csrf.browser-useragents-regex
逗号分隔的HTTP请求的User-Agent.默认:Mozilla.,Opera.

hbase.security.exec.permission.checks
安全执行检查。默认:false

hbase.procedure.regionserver.classes
逗号分隔的已加载的org.apache.hadoop.hbase.procedure.RegionServerProcedureManager。默认:none

hbase.procedure.master.classes
逗号分隔的被加载的org.apache.hadoop.hbase.procedure.MasterProcedureManager。默认:none

hbase.coordinated.state.manager.class
协调状态管理的类。默认:org.apache.hadoop.hbase.coordination.ZkCoordinatedStateManager

hbase.regionserver.storefile.refresh.period
刷新存储文件周期,0表示不刷新。默认:0

hbase.region.replica.replication.enabled
同步WAL副本到第二region副本是否开启。默认:false

hbase.http.filter.initializers
逗号分隔的类名。必须继承org.apache.hadoop.hbase.http.FilterInitializer。与之一致的过滤器会被初始化。默认:org.apache.hadoop.hbase.http.lib.StaticUserWebFilter

hbase.security.visibility.mutations.checkauths
这个属性如果启用,将检查标签是否可见性表达与用户发行突变有关。默认:false

hbase.http.max.threads
HTTP服务的最大线程池数量。 默认:16

hbase.replication.rpc.codec
副本可用时的编码。默认:org.apache.hadoop.hbase.codec.KeyValueCodecWithTags

hbase.replication.source.maxthreads
副本源的最大线程数量, 默认:10

hbase.serial.replication.waitingMs
在副本中,我们不能确定操作的顺序和master是相同的。如果日志不能马上被push,这个配置指定在下次检测之前等待多长时间。默认:10000

hbase.http.staticuser.user
用户名来过滤,在静态web过滤器而呈现内容,一个例子就是HDFS web UI。默认:dr.stack

hbase.regionserver.handler.abort.on.error.percent
regionserver上RPC线程失败达到多少后中止RS。默认:0.5

hbase.mob.file.cache.size
缓存文件处理数量。默认:1000

hbase.mob.cache.evict.period
在mob缓存清除缓存mob文件前的时间。秒。默认:3600

hbase.mob.cache.evict.remain.ratio
这个比例在0和1之间,表示缓存的mob文件超过hbase.mob.file.cache.size限制,清除触发后,保留在缓存中的比例。默认:0.5f

hbase.master.mob.ttl.cleaner.period
ExpiredMobFileCleanerChore执行周期,单位是秒。默认:86400

hbase.mob.compaction.mergeable.threshold
mob文件的大小小于这个值,在mob压缩中会被合并。默认:1342177280

hbase.mob.delfile.max.count
mob压缩中允许删除文件的最大数量。在mob压缩中,如果存在的删除文件大于这个值,会先合并。默认:3

hbase.mob.compaction.batch.size
mob 压缩批处理中允许的最大mob文件数量。合并小的mob文件。如果小文件的数量非常大,会导致一个“too many opened file handlers”的错误。
合并应该分成多个批处理。默认:100

hbase.mob.compaction.chore.period
MobCompactionChore执行周期。默认: 604800

hbase.mob.compactor.class
mob比较器的压缩类。 默认: org.apache.hadoop.hbase.mob.compactions.PartitionedMobCompactor

hbase.mob.compaction.threads.max
MobCompactor最大线程数量,默认: 1

hbase.snapshot.master.timeout.millis
master中快照执行过程超时。默认:300000

hbase.snapshot.region.timeout
regionserver中快照请求池线程等待超时时间。默认:300000

hbase.rpc.rows.warning.threshold
批量操作的行数,超过次数会记录一个警告日志。默认:5000

—————-未完待续————————

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值