2018-11-26 16:09

  2018-12-20 15:44

  摘自HBASE官方网站 http://hbase.apache.org/book.html#_introduction 第7.2节。 【2018年11月】

  hbase-default.xml中各配置项的释义及默认值

  名称

  猜猜看

  默认值

  hbase.tmp.dir

  用于指定一个目录地址。简单理解成HBASE存数据的目录,默认情况下datanode, namenode, zookeeper运行产生的数据都会存在这个目录内。

  ubuntu下默认是 /tmp/hbase-${user.name} 目录。例如:/tmp/hbase-ubuntu/

  hbase.rootdir

  用于指定一个目录地址。这个目录地址简单理解成就是HBase存储数据的地方。对于完全分布式模式下的HBase来说是HDFS NameNode运行的主机地址。如果是单机模式下的HBASE,直接写成file:///类型的地址即可。若是需要搭建基于HADOOP分布式存储系统之上的HBASE,则需要填写完整的URL名称。例如: hdfs://your_namenode_server:9000/your_hbase_name 。这个配置的值最好不要使用默认值。因为默认值是保存在Linux的 /tmp 目录下的。/tmp 目录在每次开机的时候会被系统清空。

  ${hbase.tmp.dir}/hbase 。一般Linux下是 /tmp/hbase 目录。

  hbase.cluster.distributed

  用于配置一个标志位值,true / false 。 用于表示该HBASE是否要被配置成分布式模式。 如果在非分布式模式下,HBASE和ZooKeeper会在同一个JVM上运行。

  false

  hbase.zookeeper.quorum

  用于配置一组网络地址或域名。这个配置项可以简单理解成配置的是datanode的服务器地址。如果你的HBASE集群有多个region server(完全分布式模式下的HBASE),则必须要把每台region server的地址写进这里去(要和ZooKeeper中配置的完全一致),多个region server的地址以英文逗号隔开。 例: masterhost,slavehost1,slavehost2 这条属性的含义建议去官网看看原文,受本人知识水平限制,我这边理解的可能不够全面。

  localhost

  zookeeper.recovery.retry.maxsleeptime

  用于设置一个整型数字值。 用于设置在重试zooKeeper的某些操作时的最大等待时间,似乎是出于某些原因zooKeeper的某些操作失败了,在一段时间以后zooKeeper会有重试该操作的机制,并且这个重试等待时间并不是恒定的,而是随着失败的次数逐渐增长的。HBASE为了防止这个时间无限制地增长,就设置了这个最大等待时间。即zooKeeper操作重试等待时间最长不超过这个项设置的时间。其单位是毫秒。

  60000(ms)

  hbase.local.dir

  用于指定一个目录地址。一个用来存储本地数据的目录。

  ${hbase.tmp.dir}/local/ 默认情况下是: /tmp/local/

  hbase.master.port

  用于设置一个整型数字值。该值表示HBASE Master绑定的网络端口号。这个端口是用于HMaster进行RPC通信的。

  16000

  hbase.master.info.port

  用于设置一个整型数字值。该值表示HBASE Master的网页版要绑定的网络端口号。如果你不想开启网页管理功能,将它设置成-1即可。

  16010

  hbase.master.info.bindAddress

  用于设置一个网络地址。该网络地址表示HBASE Master的网页要绑定的地址。一般而言,没有必要去更改这项配置。如果你的机器有多个网卡,需要指定仅绑定某一个网卡的地址,就可以配置一下,不然,直接用默认的就好了。如果有必要,可以去了解一下0.0.0.0和127.0.0.1的区别。对了,这项一定要填写你的机器上的地址,不然会导致网页页面打不开的。

  0.0.0.0

  hbase.master.logcleaner.plugins

  用于设置一个或一组。。代码类名称吧。 这项属性貌似是用来指定日志清除插件程序的。似乎是为了避免日志随时间的积累而越来越臃肿,就有了这个“条件型日志清除器”。如果自己实现了自己的日志清除程序,就在这里配置上。有需要的老铁可以去官网看看原文,我这边也不是很清楚它的作用。

  org.apache.hadoop.hbase.master.cleaner.TimeToLiveLogCleaner,org.apache.hadoop.hbase.master.cleaner.TimeToLiveProcedureWALCleaner

  hbase.master.logcleaner.ttl

  用于设置一个整型数字值。表示WAL数据的保存时限(保存于${hbase.rootdir}/oldWALs,在HADOOP网页版的文件管理系统中可以看到。),在超过设置时长后,数据就会被Master线程清理掉。其单位是毫秒。

  600000(ms)

  hbase.master.procedurewalcleaner.ttl

  用于设置一个整型数字值。似乎是表示WAL步骤允许存在的时限。超过设置的时间上限后,就会被Master线程清理掉。其单位是毫秒。

  604800000(ms) --> a week.

  hbase.master.hfilecleaner.plugins

  用于设置一个或一组程序吧。与 hbase.master.logcleaner.plugins 类似。这个貌似是HFiles清理器。有需要的可以去研究一下官网原文。

  org.apache.hadoop.hbase.master.cleaner.TimeToLiveHFileCleaner

  hbase.master.infoserver.redirect

  用于配置一个布尔型值。控制Master主机是否监听Master主机上的网页端口并将来自该端口的请求共享给集群上的所有主机。

  true

  hbase.master.fileSplitTimeout

  用于配置一个整型数字值。表示在给region服务器做文件分割操作时的最大等待时间,超过这一时间设定后若分割仍未完成,则会放弃分割操作。这条属性是HBASE1.x版本上的 'hbase.regionserver.fileSpliTimeout'属性,出于该分割操作目前是在Master主机侧完成的,因此将这条属性改名成 'hbase.master.fileSplitTimeout'。如果在HBASE系统上同时设定了这两条属性,则以 'hbase.master.fileSplitTimeout' 属性为准。

  600000(ms)

  hbase.regionserver.port

  用于配置一个整型数字值。用于开放给Region主机绑定的网络端口号。这个端口是用来给HRegionServer进行RPC通信的。

  16020

  hbase.regionserver.info.port

  配置一个整型数字值。用于开放给region主机的网页的端口号。将该值设定成-1可以关闭region主机网页管理功能。

  16030

  hbase.regionserver.info.bindAddress

  配置一个网络地址。region主机网页管理页面的网址。

  0.0.0.0

  hbase.regionserver.info.port.auto

  配置一个布尔型值。用于配置Master或Region主机的网页页面在'hbase.regionserver.info.port'中配置的端口被其它程序占用的情况下自动搜寻可用端口来绑定。

  false

  hbase.regionserver.handler.count

  配置一个整型数字值。表示在Region主机上运行的RPC实例的数量,这个属性配置的值同样被应用于Master主机上handler的数量。这个数值的设定可能会影响到HBASE的性能,建议有需要的老铁去官网阅读一下原文。

  30

  hbase.ipc.server.callqueue.handler.factor

  配置一个数字值。这个值感觉是一个比例值(或者说百分比),是一个介于0~1之间的值。表示handler与调用队列(call queue)之间的资源分配关系吧。如果设定为0,则HBASE系统中所有的handler共用一个调用队列,如果设定为1,则每一个handler都有它自己的调用队列。

  0.1

  hbase.ipc.server.callqueue.read.ratio

  配置一个数字值。与上一条类似。它配置的是方法调用队列(call queue)中读请求的数量在整个调用队列中的比例。这条属性的值介于0~1之间。如果配置成0,表示不对调用队列call queue作读、写请求分组操作,所有调用队列对于读、写来说是共享的,哪个队列会被用于哪种请求完全随缘。如果配置成0.x的形式,则就会有0.x比例的调用队列被分配给读请求专用。如果配置成1,表示读请求只会被分配到恒1个调用队列,其余的全被分配给写请求专用。

  0.0

  hbase.ipc.server.callqueue.scan.ratio

  配置一个数字值。用于将读请求专用调用队列(read call queue)按这条属性配置的比例值来分配成短时读取(small-read)调用队列和长期读取(long-read)调用队列。其实我也不太理解这个短读取队列和长读取队列到底是什么意思。我猜,应该是短时读取在读取完毕后会被释放资源吧。这条属性的值如果被配置成0或者1,则短读取和长读取的比例在读专用队列中是随缘分配的。设置成0.x则是按比例分配的。 如果有需要的老铁,建议去阅读一下官网原文,毕竟我对这条属性的含义也不是很理解。

  0

  hbase.regionserver.msginterval

  配置一个整型数字值。Region主机与Master主机通信的时间间隔。

  3000(ms)

  hbase.regionserver.logroll.period

  配置一个整型数字值。 这条不太懂。似乎是提交日志滚动覆盖的周期。

  3600000

  hbase.regionserver.logroll.errors.tolerated

  配置一个整型数字值。 这条也不太懂。似乎是HBASE对连续的WAL的关闭错误次数容忍度。连续的WAL错误产生次数超过设定的值时,会让该Region主机被中止运行。

  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

  算是配置一个整型数字值吧。表示Region服务器在新的更新被阻塞和强制刷新之前的最大内存占其总堆内存的大小。默认设置成Region服务器内存的40%。等待(阻塞)更新和强制刷新直到Region服务器中总内存使用量达到'hbase.regionserver.global.memstore.size.lower.limit'属性中设置的值为止。本条属性目前是被置为空的,目的是为了让旧的属性 'hbase.regionserver.global.memstore.upperLimit' 发挥作用。(搞不懂)

  none

  hbase.regionserver.global.memstore.size.lower.limit

  Region服务器在被强制刷新之前的最大内存占总内存的大小。默认设置成'hbase.regionserver.global.memstore.size'属性中设置的值的95%。这段英文太绕了,看的很懵,有需要的老铁自己去官网看原文吧。

  none

  hbase.systemtables.compacting.memstore.type

  none

  hbase.regionserver.optionalcacheflushinterval

  配置一个整型数字值。用于配置编辑操作在内存中的最大存在时长,超过这一设定时长后本次编辑操作将被自动刷新(being automatically flushed)。将该值设置为0会关闭自动刷新功能,编辑操作将会一直存在于内存中。

  3600000(ms)

  hbase.regionserver.dns.interface

  配置Region服务器上报其IP地址的网络接口的名称。

  default

  hbase.regionserver.dns.nameserver

  被Region服务器用于确定Master的主机名以进行通信等操作的DNS的域名或IP地址

  default

  hbase.regionserver.region.split.policy

  配置一个Java类名字符串。Region的分割策略。当前可用的几种Region分割策略类有:BusyRegionSplitPolicy, ConstantSizeRegionSplitPolicy, DisabledRegionSplitPolicy, DelimitedKeyPrefixRegionSplitPolicy, KeyPrefixRegionSplitPolicy, SteppingSplitPolicy。如果应用了DisabledRegionSplitPolicy策略的话,将会无法手动分割Region。

  org.apache.hadoop.hbase.regionserver.SteppingSplitPolicy

  唉,后面心情好了再更吧。。。