HBase 常见重要配置参数

(1) Hbase.rpc.timeout
rpc 的超时时间,默认 60s,不建议修改,避免影响正常的业务,在线上环境刚开始配置的是 3 秒,运行半天后发现了大量的 timeout error,原因是有一个 region 出现了如下问题阻塞了写操作:“Blocking updates … memstore size 434.3m is >= than blocking 256.0m size”可见不能太低

(2) ipc.socket.timeout:socket 建立链接的超时时间,应该小于或者等于 rpc 的超时时间,默认为 20s

(3) hbase.client.retries.number:重试次数,默认为 10,可配置为 3

(4) hbase.client.pause:重试的休眠时间,默认为 1s,可减少,比如 100ms

(5) hbase.regionserver.lease.period:scan 查询时每次与 server 交互的超时时间,默认为 60s,可不调整


HBase 默认配置参数

1. hbase.rootdir

  • 这个目录是 RegionServer 的共享目录,用来持久化 HBase。URL 需要是 “完全正确” 的,还要包含文件系统的 scheme。 例如 “/hbase” 表示 HBase 在 HDFS 中占用的实际存储位置,HDFS 的 NameNode 运行在主机名为 master5 的 8020 端口,则 hbase.rootdir 的设置应为 “hdfs://master5:8020/hbase”。在默认情况下 HBase 是写在 /tmp 中的。不修改这个配置的话,数据会在重启的时候丢失。特别注意的是 hbase.rootdir 里面的 HDFS 地址是要跟 Hadoop 的 core-site.xml 里面的 fs.defaultFS 的 HDFS 的 IP 地址或者域名、端口必须一致。
  • 默认为 file:///tmp/hbase-${user.name}/hbase

2. hbase.cluster.distributed

  • HBase 的运行模式。为 false 表示单机模式,为 true 表示分布式模式。若为 false,HBase 和 ZooKeeper 会运行在同一个 JVM 中
  • 默认值为 false

3. hbase.master (hbase.master.port)

  • 如果只设置单个 Hmaster,那么 hbase.master 属性参数需要设置为 master5:60000 (主机名:60000)
  • 如果要设置多个 Hmaster,那么我们只需要提供端口 60000,因为选择真正的 master 的事情会有 zookeeper 去处理
  • 默认端口号:60000

4. hbase.tmp.dir

  • 本地文件系统的临时文件夹。可以修改到一个更为持久的目录上。(/tmp会在重启时清除)
  • 默认: /tmp/hbase-${user.name}

5. hbase.master.info.port

  • HBase Master web 界面端口. 设置为 -1 意味着你不想让它运行
  • 默认: 60010

6. hbase.master.info.bindAddress

  • HBase Master web 界面绑定的端口
  • 默认: 0.0.0.0

7. hbase.client.write.buffer

  • HTable 客户端的写缓冲的默认大小。这个值越大,需要消耗的内存越大。因为缓冲在客户端和服务端都有实例,所以需要消耗客户端和服务端两个地方的内存。得到的好处是,可以减少 RPC 的次数。可以这样估算服务器端被占用的内存: hbase.client.write.buffer * hbase.regionserver.handler.count
  • 默认: 2097152 (2G)

8. hbase.regionserver.port

  • HBase RegionServer 绑定的端口
  • 默认: 60020

9. hbase.regionserver.info.port

  • HBase RegionServer web 界面绑定的端口 设置为 -1 意味这你不想与运行 RegionServer 界面
  • 默认: 60030

10. hbase.regionserver.info.port.auto

  • Master 或 RegionServer 是否要动态搜一个可以用的端口来绑定界面。当 hbase.regionserver.info.port已经被占用的时候,可以搜一个空闲的端口绑定。这个功能在测试的时候很有用。默认关闭
  • 默认: false

11. hbase.regionserver.info.bindAddress

  • HBase RegionServer web 界面的IP地址
  • 默认: 0.0.0.0

12. hbase.regionserver.class

  • RegionServer 使用的接口。客户端打开代理来连接region server的时候会使用到
  • 默认: org.apache.hadoop.hbase.ipc.HRegionInterface

13. hbase.client.pause

  • 通常的客户端暂停时间。最多的用法是客户端在重试前的等待时间。比如失败的 get 操作和 region 查询操作等都很可能用到
  • 默认: 1000 ms

14. hbase.client.retries.number

  • 最大重试次数。例如 region 查询,Get 操作,Update 操作等等都可能发生错误,需要重试。这是最大重试错误的值
  • 默认: 10

15. hbase.client.scanner.caching

  • 当调用 Scanner 的 next 方法,而值又不在缓存里的时候,从服务端一次获取的行数。越大的值意味着 Scanner 会快一些,但是会占用更多的内存。当缓冲被占满的时候,next 方法调用会越来越慢。慢到一定程度,可能会导致超时。例如超过了 hbase.regionserver.lease.period
  • 默认: 1

16.hbase.client.keyvalue.maxsize

  • 一个 KeyValue 实例的最大 size。这个是用来设置存储文件中的单个 entry 的大小上界。因为一个 KeyValue 是不能分割的,所以可以避免因为数据过大导致 region 不可分割。明智的做法是把它设为可以被最大 region size 整除的数。如果设置为 0 或者更小,就会禁用这个检查。默认 10MB
  • 默认: 10485760 (10MB)

17. hbase.regionserver.lease.period

  • 客户端租用 HRegion server 期限,即超时阀值。单位是毫秒。默认情况下,客户端必须在这个时间内发一条信息,否则视为死掉。
  • 默认: 60000

18. hbase.regionserver.handler.count

  • RegionServers 受理的 RPC Server 实例数量。对于 Master 来说,这个属性是 Master 受理的 handler 数量
  • 默认: 10

19. hbase.regionserver.msginterval

  • RegionServer 发消息给 Master 时间间隔,单位是毫秒
  • 默认: 3000

20. hbase.regionserver.optionallogflushinterval

  • 将 Hlog 同步到 HDFS 的间隔。如果 Hlog 没有积累到一定的数量,到了时间,也会触发同步。默认是 1秒,单位毫秒。
  • 默认: 1000

21. hbase.regionserver.regionSplitLimit

  • region 的数量到了这个值后就不会在分裂了。这不是一个 region 数量的硬性限制。但是起到了一定指导性的作用,到了这个值就该停止分裂了。默认是 MAX_INT。就是说不阻止分裂。
  • 默认: 2147483647 (1G)

22. hbase.regionserver.logroll.period

  • 提交 commit log 的间隔,不管有没有写足够的值
  • 默认: 3600000

23. hbase.regionserver.hlog.reader.impl

  • HLog file reader 的实现
  • 默认: org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogReader

24. hbase.regionserver.hlog.writer.impl

  • HLog file writer 的实现
  • 默认: org.apache.hadoop.hbase.regionserver.wal.SequenceFileLogWriter

25. hbase.regionserver.thread.splitcompactcheckfrequency

  • region server 多久执行一次 split/compaction 检查
  • 默认: 20000

26. hbase.regionserver.nbreservationblocks

  • 储备的内存 block 的数量(译者注:就像石油储备一样)。当发生 out of memory 异常的时候,我们可以用这些内存在 RegionServer 停止之前做清理操作
  • 默认: 4

27. hbase.zookeeper.dns.interface

  • 当使用 DNS 的时候,Zookeeper 用来上报的 IP 地址的网络接口名字
  • 默认: default

28. hbase.zookeeper.dns.nameserver

  • 当使用 DNS 的时候,Zookeepr 使用的 DNS 的域名或者 IP 地址,Zookeeper 用它来确定和 master 用来进行通讯的域名
  • 默认: default

29. hbase.regionserver.dns.interface

  • 当使用 DNS 的时候,RegionServer 用来上报的 IP 地址的网络接口名字
  • 默认: default

30. hbase.regionserver.dns.nameserver

  • 当使用 DNS 的时候,RegionServer 使用的 DNS 的域名或者 IP 地址,RegionServer 用它来确定和 master 用来进行通讯的域名
  • 默认: default

31. hbase.master.dns.interface

  • 当使用 DNS 的时候,Master 用来上报的 IP 地址的网络接口名字
  • 默认: default

32. hbase.master.dns.nameserver

  • 当使用 DNS 的时候,RegionServer 使用的 DNS 的域名或者 IP 地址,Master 用它来确定用来进行通讯的域名
  • 默认: default

33. hbase.balancer.period

  • Master 执行 region balancer 的间隔
  • 默认: 300000

34. hbase.regions.slop

  • 当任一 regionserver 有 average + (average * slop) 个 region 是会执行 Rebalance
  • 默认: 0

35. hbase.master.logcleaner.ttl

  • Hlog 存在于.oldlogdir 文件夹的最长时间, 超过了就会被 Master 的线程清理掉
  • 默认: 600000

36. hbase.master.logcleaner.plugins

  • LogsCleaner 服务会执行的一组 LogCleanerDelegat。值用逗号间隔的文本表示。这些 WAL/HLog cleaners 会按顺序调用。可以把先调用的放在前面。你可以实现自己的 LogCleanerDelegat,加到 Classpath下,然后在这里写 下类的全称。一般都是加在默认值的前面
  • 默认: org.apache.hadoop.hbase.master.TimeToLiveLogCleaner

37. hbase.regionserver.global.memstore.upperLimit

  • 单个 region server 的全部 memtores 的最大值。超过这个值,一个新的 update 操作会被挂起,强制执行flush操作
  • 默认: 0.4

38. hbase.regionserver.global.memstore.lowerLimit

  • 当强制执行 flush 操作的时候,当低于这个值的时候,flush 会停止。默认是堆大小的 35% . 如果这个值和 hbase.regionserver.global.memstore.upperLimit 相同就意味着当 update 操作因为内存限制被挂起时,会尽量少的执行 flush(译者注:一旦执行 flush,值就会比下限要低,不再执行)
  • 默认: 0.35

39. hbase.server.thread.wakefrequency

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

40. hbase.hregion.memstore.flush.size

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

41. hbase.hregion.preclose.flush.size

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

42. hbase.hregion.memstore.block.multiplier

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

43. hbase.hregion.memstore.mslab.enabled

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

44. hbase.hregion.max.filesize

  • 最大 HStoreFile 大小。若某个 Column families 的 HStoreFile 增长达到这个值,这个 Hegion 会被切割成两个
  • 默认: 268435456 (256M)

45. hbase.hstore.compactionThreshold

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

46. hbase.hstore.blockingStoreFiles

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

47. hbase.hstore.blockingWaitTime

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

48. hbase.hstore.compaction.max

  • 每个“小”合并的 HStoreFiles 最大数量
  • 默认: 10

49. hbase.hregion.majorcompaction

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

50. hbase.mapreduce.hfileoutputformat.blocksize

  • MapReduce 中 HFileOutputFormat 可以写 storefiles/hfiles。这个值是 hfile 的 blocksize 的最小值。通常在 Hbase写Hfile 的时候,bloocksize 是由 table schema(HColumnDescriptor) 决定的,但是在 mapreduce 写的时候,我们无法获取 schema 中 blocksize。这个值 越小,你的索引就越大,你随机访问需要获取的数据就越小。如果你的 cell 都很小,而且你需要更快的随机访问,可以把这个值调低
  • 默认: 65536

51. hfile.block.cache.size

  • 分配给 HFile/StoreFile 的 block cache 占最大堆(-Xmx setting)的比例。默认是20%,设置为0就是不分配
  • 默认: 0.2

52. hbase.hash.type

  • 哈希函数使用的哈希算法。可以选择两个值:: murmur (MurmurHash) 和 jenkins (JenkinsHash). 这个哈希是给 bloom filters 用的
  • 默认: murmur

53. hbase.master.keytab.file

  • HMaster server 验证登录使用的 kerberos keytab 文件路径。(译者注:Hbase 使用 Kerberos实现安全)
  • 默认: none

54. hbase.master.kerberos.principal

  • 例如. “hbase/_HOST@EXAMPLE.COM”。 HMaster 运行需要使用 kerberos principal name. principal name 可以在: user/hostname@DOMAIN 中获取. 如果 “_HOST” 被用做 hostname portion,需要使用实际运行的 hostname 来替代它
  • 默认: none

55. hbase.regionserver.keytab.file

  • HRegionServer 验证登录使用的 kerberos keytab 文件路径
  • 默认: none

56. hbase.regionserver.kerberos.principal

  • 例如. “hbase/_HOST@EXAMPLE.COM”。HRegionServer 运行需要使用 kerberos principal name. principal name 可以在: user/hostname@DOMAIN 中获取。如果 “_HOST” 被用做 hostname portion,需要使用实际运行的 hostname 来替代它。在这个文件中必须要有一个entry来描述 hbase.regionserver.keytab.file
  • 默认: none

57. zookeeper.session.timeout

  • ZooKeeper 会话超时。Hbase 把这个值传递改 zk 集群,向它推荐一个会话的最大超时时间。单位是毫秒
  • 默认: 180000

58. zookeeper.znode.parent

  • ZooKeeper 中的 Hbase 的根 ZNode。所有的 Hbase 的 ZooKeeper 会用这个目录配置相对路径。默认情况下,所有的 Hbase 的 ZooKeeper 文件路径是用相对路径,所以它们会都去这个目录下面
  • 默认: /hbase

59. zookeeper.znode.rootserver

  • ZNode 保存的根 region 的路径. 这个值是由 Master 来写,client 和 regionserver 来读的。如果设为一个相对地址,父目录就是 ${zookeeper.znode.parent}。默认情形下,意味着根 region的路径存储在/hbase/root-region- server
  • 默认: root-region-server

60. hbase.zookeeper.quorum

  • Zookeeper 集群的地址列表,用逗号分割。例如:”host1.mydomain.com,host2.mydomain.com,host3.mydomain.com”.默认是 localhost,是给伪分布式用的。要修改才能在完全分布式的情况下使用。如果在hbase-env.sh设置了HBASE_MANAGES_ZK, 这些ZooKeeper节点就会和Hbase一起启动
  • 默认: localhost

61. hbase.zookeeper.peerport

  • ZooKeeper节点使用的端口
  • 默认: 2888

62. hbase.zookeeper.leaderport

  • ZooKeeper用来选择Leader的端口
  • 默认: 3888

63. hbase.zookeeper.property.initLimit

  • ZooKeeper的zoo.conf中的配置。 初始化synchronization阶段的ticks数量限制
  • 默认: 10

64. hbase.zookeeper.property.syncLimit

  • ZooKeeper的zoo.conf中的配置。 发送一个请求到获得承认之间的ticks的数量限制
  • 默认: 5

65. hbase.zookeeper.property.dataDir

  • ZooKeeper的zoo.conf中的配置。 快照的存储位置
  • 默认: ${hbase.tmp.dir}/zookeeper

66. hbase.zookeeper.property.clientPort

  • ZooKeeper的zoo.conf中的配置。 客户端连接的端口
  • 默认: 2181

67. hbase.zookeeper.property.maxClientCnxns

  • ZooKeeper的zoo.conf中的配置。 ZooKeeper集群中的单个节点接受的单个Client(以IP区分)的请求的并发数。这个值可以调高一点,防止在单机和伪分布式模式中出问题。
  • 默认: 2000

68. hbase.rest.port

  • HBase REST server的端口
    -默认: 8080

69. hbase.rest.readonly

  • 定义REST server的运行模式。可以设置成如下的值: false: 所有的HTTP请求都是被允许的 - GET/PUT/POST/DELETE. true:只有GET请求是被允许的
  • 默认: false

70. hbase.regionserver.restart.on.zk.expire

  • 当 regionserver 遇到 ZooKeeper session expired , regionserver 是否选择 restart
  • 默认: false

HBase-site.xml 常见重要配置参数的更多相关文章

  1. Servlet读取xml文件的配置参数

    web.xml中数据库连接配置: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns: ...

  2. Tomcat server.xml中Connector配置参数详解

    Tomcat中Connector常用配置 Tomcat中server.xml有些配置信息是需要我们了解的,最起码知道如何进行简单的调试. <Connector port="8080&q ...

  3. struts2学习笔记之四:多配置文件支持和常用配置参数

    struts2支持可以按照不同模块分类的方式拆分配置文件,支持多人分工合作,各自维护自己的配置文件,但是所有配置文件中包名和action的名称不能重复   struts2的配置文件方式有两种,stru ...

  4. Web.xml配置参数详解

    1 定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始.这个头声明可以使用的XML版本并给出文件的字符编码.DOCYTPE声明必须立即出现在此头之后.这个声明告诉服务器适用的 ...

  5. mybatis由浅入深day01_6SqlMapConfig.xml(6.2settings全局参数配置_6.3typeAliases(类型别名)_6.4typeHandlers(类型处理器)_6.5mappers(映射配置))

    6 SqlMapConfig.xml mybatis的全局配置文件SqlMapConfig.xml,配置内容和顺序如下: properties(属性) settings(全局配置参数) typeAli ...

  6. 读取xml文件中的配置参数实例_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 paras.xml文件 <?xml version="1.0" encoding=" ...

  7. web.xml配置参数context-param和init-param的区别

    web.xml配置参数context-param和init-param的区别 (2009-04-13 10:29:01) 转载▼ 标签: 杂谈 分类: JavaEE web.xml里面可以定义两种参数 ...

  8. ehcache.xml配置参数

    <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLoc ...

  9. HBase的基本使用(安装配置、启动关闭、hbash shell的基本操作、phoenix、实战)

    HBase的前提条件: JDK SSH Hadoop JDK:Hadoop和JDK运行的环境,他们的守护进程运行在JVM下.HBase支持JDK 1.6以上的版本.比如: jdk-8u161-linu ...

随机推荐

  1. 实验,暂停oracle后台进程

    有时出于测试需求,需要暂停oracle的某些后台进程,此时以暂停lgwr进程为例 使用sysdba连接到数据库查询到LGWR进程的PID:SQL> select prc.pid from v$b ...

  2. 统计一段文章的单词频率,取出频率最高的5个单词和个数(python)

    练习题:统计一段英语文章的单词频率,取出频率最高的5个单词和个数(用python实现) 先全部转为小写再判定 lower() 怎么判定单词? 1 不是字母的特殊字符作为分隔符分割字符串 (避免特殊字符 ...

  3. 页面三个txt加载联动省市县的代码,类似淘宝的收货地址的布局

    页面三个txt加载联动省市县的代码,假如有一个树形的JSON,分别显示的省市县这时候三个TXT怎么做联动效果呢,这里用framework7为例HTML: <div class="lis ...

  4. Android(java)学习笔记17:网络编程的概述

    1. 计算机网络 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统 ...

  5. HDU 6214 最小割边

    双倍经验题:HDU 6214,3987 求最小割的最小边. 方案一: 首先跑最大流,这个时候割上都满载了,于是将满载的边 cap = 1,其他 inf ,再跑最大流,这个时候限定这个网络的关键边就是那 ...

  6. bzoj 3028 生成函数

    计算完后为 f(x): 根据我翻高数书,终于推倒出来了. (- ̄▽ ̄)-

  7. 【[SDOI2014]旅行】

    听说这是动态开点主席树的板子题,但是发现我还不会,于是就来写一写 其实跟主席树一个样子的 这里就是存个板子吧 #include<cstdio> #include<cstring> ...

  8. Java并发程序基础

    Thread.stop() 直接终止线程,并且会立即释放这个线程所持有的锁. Thread.interrupt() 并不会是线程立即退出,而是给线程发送一个通知,告知目标线程,有人希望你退出啦,至于目 ...

  9. yarn默认配置

    name value description yarn.ipc.client.factory.class   Factory to create client IPC classes. yarn.ip ...

  10. 如何确定VS编译器版本

    _MSC_VER是MSVC编译器的内置宏,定义了编译器的版本,_MSC_VER 值对应版本关系 MSVC++ 11.0 _MSC_VER = 1700 (Visual Studio 2012)  MS ...