目录
1.2.2.1.dfs.datanode.max.transfer.threads
1.3.2.1.伪分布式(Pseudo-distributed)
1.5.1.hbase-site.xml and hbase-default.xml
1.5.2.HBase Default Configuration
1.11.2.6.托管拆分(Managed Splitting)
1.11.2.7.托管压缩(Managed Compactions)
1.11.2.8.投机执行(Speculative Execution)
1.Apache HBase配置
本章在“入门”一章的基础上进行扩展,以进一步说明Apache HBase的配置。 请仔细阅读本章,尤其是基本先决条件,以确保您的HBase测试和部署顺利进行。 还要熟悉支持和测试期望。
1.1.配置文件
Apache HBase使用与Apache Hadoop相同的配置系统。 所有配置文件都位于conf/目录中,该文件需要与集群中的每个节点保持同步。
backup-masters
默认情况下不存在。 一个纯文本文件,其中列出了主机应在其上启动备份主机进程的主机,每行一个主机。
hadoop-metrics2-hbase.properties
用于连接HBase Hadoop的Metrics2框架。 有关Metrics2的更多信息,请参见Hadoop Wiki entry。 默认仅包含注释掉的示例。
hbase-env.cmd and hbase-env.sh
用于Windows和Linux / Unix环境的脚本,用于设置HBase的工作环境,包括Java的位置,Java选项和其他环境变量。 该文件包含许多已注释掉的示例,以提供指导。
hbase-policy.xml
RPC服务器用来对客户端请求做出授权决策的默认策略配置文件。 仅在启用HBase安全性时使用。
hbase-site.xml
HBase主配置文件。该文件指定的配置选项,其覆盖的HBase的默认配置。 您可以在 docs/hbase-default.xml 上查看(但不能编辑)默认配置文件。 您还可以在HBase Web UI的“ HBase配置”选项卡中查看群集的整个有效配置(默认和替代)。
log4j.properties
通过log4j进行HBase日志记录的配置文件。
regionservers
一个纯文本文件,其中包含应在HBase群集中运行RegionServer的主机列表。 默认情况下,此文件包含单个条目localhost。 它应该包含一个主机名或IP地址的列表,每行一个,并且仅当群集中的每个节点都将在其localhost接口上运行RegionServer时才包含localhost。
检查XML有效性
在编辑XML时,最好使用支持XML的编辑器,以确保语法正确且XML格式正确。 您还可以使用xmllint实用程序来检查XML格式是否正确。 默认情况下,xmllint重排并将XML打印到标准输出。 要检查格式是否正确并仅在存在错误的情况下才打印输出,请使用命令xmllint -noout filename.xml。
使配置在整个群集中保持同步
在分布式模式下运行时,对HBase配置进行编辑后,请确保将conf /目录的内容复制到群集的所有节点。 HBase不会为您这样做。 使用rsync,scp或其他安全机制将配置文件复制到您的节点。 对于大多数配置,服务器需要重新启动才能获取更改。 动态配置是一个例外,下面将对此进行描述。
1.2.基本先决条件
本节列出了必需的服务和一些必需的系统配置。
Java
下表总结了在各种Java版本上部署的HBase社区的建议。 符号
旨在指示测试的基本水平以及愿意帮助诊断和解决您可能遇到的问题的意愿。 同样,输入
或
通常意味着如果遇到问题,社区可能会要求您在继续提供帮助之前更改Java环境。 在某些情况下,还将注意有关限制的特定指南(例如,编译/单元测试是否有效,特定的操作问题等)。
推荐长期支持JDK
HBase建议下游用户使用来自OpenJDK项目或供应商的标记为长期支持(LTS)的JDK版本。 截至2018年3月,这意味着Java 8是唯一适用的版本,下一个可能进行测试的版本将是2018年第三季度附近的Java 11。
表2.按发行行的Java支持
| HBase Version | JDK 7 | JDK 8 | JDK 9 (Non-LTS) | JDK 10 (Non-LTS) | JDK 11 |
|---|---|---|---|---|---|
| 2.1+ |
|
| |||
| 1.3+ |
|
|
- HBase既不会构建也不会与Java 6一起运行。
- 您必须在集群的每个节点上设置JAVA_HOME。 hbase-env.sh提供了一种方便的机制来执行此操作。
1.2.1.操作系统实用程序
ssh
HBase的使用安全外壳(SSH)命令和公用事业广泛群集节点之间进行通信。 集群中的每个服务器都必须运行ssh,以便可以管理Hadoop和HBase守护程序。 您必须能够使用共享密钥而不是密码通过SSH通过SSH从Master以及任何备份Master连接到所有节点,包括本地节点。 您可以在“过程:配置无密码SSH访问”中查看在Linux或Unix系统中进行此类设置的基本方法。 如果您的群集节点使用OS X,请参阅Hadoop Wiki上的SSH: Setting up Remote Desktop and Enabling Self-Login。
DNS
HBase使用本地主机名自报告其IP地址。
NTP
群集节点上的时钟应同步。 少量的变化是可以接受的,但是较大的偏斜会导致不稳定和意外的行为。 时间同步是检查集群中是否出现无法解释的问题的首要检查之一。 建议您在群集上运行网络时间协议(NTP)服务或其他时间同步机制,并且所有节点都希望使用同一服务进行时间同步。 请参阅The Linux Documentation Project (TLDP)上的“基本NTP配置”以设置NTP。
文件和进程数限制(ulimit)
Apache HBase是一个数据库。 它要求能够一次打开大量文件。 许多Linux发行版将允许单个用户打开的文件数限制为1024(在旧版OS X中为256)。 您可以通过以运行HBase的用户身份登录时运行命令ulimit -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
建议将ulimit至少增加到10,000,但更可能是10,240,因为该值通常以1024的倍数表示。每个ColumnFamily至少具有一个StoreFile,如果该区域处于加载状态,则可能有六个以上的StoreFile。 所需打开文件的数量取决于ColumnFamilies的数量和区域的数量。 以下是用于计算RegionServer上打开文件的潜在数量的粗略公式。
计算打开文件的潜在数量
(StoreFiles per ColumnFamily) x (regions per RegionServer)
例如,假设一个模式每个区域有3个ColumnFamily,每个ColumnFamily平均有3个StoreFiles,并且每个RegionServer有100个区域,那么JVM将打开3 * 3 * 100 = 900文件描述符,不计算打开的JAR文件,配置 文件等。 打开文件不会占用太多资源,并且允许用户打开太多文件的风险很小。
另一个相关的设置是允许用户一次运行的进程数。 在Linux和Unix中,使用ulimit -u命令设置进程数。 这不应与nproc命令混淆,后者控制给定用户可用的CPU数量。 在负载下,ulimit -u太低会导致OutOfMemoryError异常。
为运行HBase进程的用户配置文件描述符和进程的最大数量是操作系统配置,而不是HBase配置。 确保为实际运行HBase的用户更改设置也很重要。 要查看哪个用户启动了HBase,以及该用户的ulimit配置,请查看该实例的HBase日志的第一行。
例子2. Ubuntu上的ulimit设置
要在Ubuntu上配置ulimit设置,请编辑/etc/security/limits.conf,这是一个由空格分隔的四列文件。 有关此文件格式的详细信息,请参考关于limits.conf的手册页。 在下面的示例中,第一行将具有用户名hadoop的操作系统用户的打开文件(nofile)数量的软限制和硬限制都设置为32768。 第二行将同一用户的进程数设置为32000。
hadoop - nofile 32768 hadoop - nproc 32000仅在指示可插拔身份验证模块(PAM)环境使用它们时才应用设置。 要将PAM配置为使用这些限制,请确保/etc/pam.d/common-session文件包含以下行:
session required pam_limits.so
Linux Shell
HBase附带的所有shell脚本都依赖于GNU Bash shell。
Windows
不建议在Windows计算机上运行生产系统。
1.2.2.Hadoop
下表总结了每个HBase版本支持的Hadoop版本。 该表中未出现的较旧版本被认为不受支持,并且可能缺少必要的功能,而较新版本未经测试,但可能合适。
基于HBase的版本,您应该选择最合适的Hadoop版本。 您可以使用Apache Hadoop或供应商的Hadoop发行版。 这里没有区别。 有关Hadoop供应商的信息,请参见Hadoop Wiki。
推荐使用Hadoop2.x。
Hadoop 2.x速度更快,并且具有短路读取(请参阅利用本地数据)等功能,这将有助于改善HBase随机读取配置文件。 Hadoop 2.x还包括重要的错误修复程序,这些改进将改善您的总体HBase体验。 HBase不支持与Hadoop的早期版本一起运行。 有关特定于不同HBase版本的要求,请参见下表。Hadoop 3.x仍处于早期访问版本中,尚未通过HBase社区针对生产用例的充分测试。
使用以下图例解释此表:
Hadoop版本支持表
=经过测试可正常运行
=已知功能不完整或存在CVE,因此我们在较新的次要版本中放弃了对它的支持
=未测试,可能/可能不起作用
| HBase-1.3.x | HBase-1.4.x | HBase-1.5.x | HBase-2.1.x | HBase-2.2.x | |
|---|---|---|---|---|---|
| Hadoop-2.4.x |
|
|
|
|
|
| Hadoop-2.5.x |
|
|
|
|
|
| Hadoop-2.6.0 |
|
|
|
|
|
| Hadoop-2.6.1+ |
|
|
|
|
|
| Hadoop-2.7.0 |
|
|
|
|
|
| Hadoop-2.7.1+ |
|
|
|
|
|
| Hadoop-2.8.[0-2] |
|
|
|
|
|
| Hadoop-2.8.[3-4] |
|
|
|
|
|
| Hadoop-2.8.5+ |
|
|
|
|
|
| Hadoop-2.9.[0-1] |
|
|
|
|
|
| Hadoop-2.9.2+ |
|
|
|
|
|
| Hadoop-3.0.[0-2] |
|
|
|
|
|
| Hadoop-3.0.3+ |
|
|
|
|
|
| Hadoop-3.1.0 |
|
|
|
|
|
| Hadoop-3.1.1+ |
|
|
|
|
|
Hadoop 2.1.6版和JDK 1.8 Kerberos
在Kerberos环境中使用2.6.1之前的Hadoop版本和JDK 1.8时,由于Kerberos keytab重新登录错误,HBase服务器可能会失败并中止。 JDK 1.7的较新版本(1.7.0_80)也存在此问题。 有关更多详细信息,请参见HADOOP-10786。 在这种情况下,请考虑升级到Hadoop 2.6.1+。
Hadoop 2.6.x
如果您计划在HDFS加密区域上运行HBase,则基于2.6.x行的Hadoop发行版必须已应用HADOOP-11710。 否则将导致群集故障和数据丢失。 该修补程序存在于Apache Hadoop 2.6.1+版本中。
Hadoop 2.y.0版本
从Hadoop 2.7.0版本开始,Hadoop PMC习惯于在其主要版本2发行行中召集新的次要版本,因为它们不稳定/尚未准备好投入生产。 因此,HBase明确建议下游用户避免在这些版本之上运行。 请注意,Hadoop PMC还为2.8.1版本提供了相同的警告。 作为参考,请参阅Apache Hadoop 2.7.0, Apache Hadoop 2.8.0, Apache Hadoop 2.8.1 和Apache Hadoop 2.9.0.的发行公告。
Hadoop 3.0.x版本
包含应用程序时间轴服务功能的Hadoop发行版可能会导致应用程序类路径中出现意外版本的HBase类。 计划使用HBase运行MapReduce应用程序的用户应确保其YARN服务中存在YARN-7190(当前在2.9.1+和3.1.0+中已修复)。
Hadoop 3.1.0版本
Hadoop PMC将3.1.0版本称为不稳定/生产就绪。 因此,HBase明确建议下游用户避免在此版本之上运行。 作为参考,请参阅release announcement for Hadoop 3.1.0。
用HBase替换捆绑的Hadoop!
因为HBase依赖Hadoop,所以它将Hadoop jar捆绑在其lib目录下。 捆绑的罐子只能在独立模式下使用。 在分布式模式下,群集上的Hadoop版本与HBase下的Hadoop版本匹配至关重要。 将HBase lib目录中找到的hadoop jar替换为您在集群上运行的版本中的等效hadoop jar,以避免版本不匹配的问题。 确保在整个群集中替换HBase下的jar。 Hadoop版本不匹配问题有多种表现形式。 如果HBase似乎挂起,请检查是否不匹配。
1.2.2.1.dfs.datanode.max.transfer.threads
HDFS DataNode可以随时提供服务的文件数量上限。 进行任何加载之前,请确保已配置Hadoop的conf/hdfs-site.xml,并将dfs.datanode.max.transfer.threads值至少设置为以下值:
<property>
<name>dfs.datanode.max.transfer.threads</name>
<value>4096</value>
</property>
完成上述配置后,请务必重新启动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...
另请参阅casestudies.max.transfer.threads,并请注意,此属性以前称为dfs.datanode.max.xcievers(例如Hadoop HDFS: Deceived by Xciever)。
1.2.3.ZooKeeper要求
ZooKeeper 3.4.x is required.
1.3.HBase运行模式:独立和分布式
HBase有两种运行模式:独立运行(standalone)和分布式(distributed)运行。 开箱即用,HBase以独立模式运行。 无论使用哪种模式,都需要通过编辑HBase conf目录中的文件来配置HBase。 至少,您必须编辑conf/hbase-env.sh以告知HBase使用哪个Java。 在此文件中,您设置HBase环境变量,例如JVM的堆大小和其他选项,日志文件的首选位置等。将JAVA_HOME设置为指向Java安装的根目录。
1.3.1.Standalone HBase
这是默认模式。 快速入门部分介绍了独立模式。 在独立模式下,HBase不使用HDFS(而是使用本地文件系统),而是在同一JVM中运行所有HBase守护程序和本地ZooKeeper。 ZooKeeper绑定到一个知名端口,因此客户端可以与HBase进行通信。
1.3.1.1.HDFS上的独立HBase
在独立的hbase上有时有用的变体是,所有守护程序都在一个JVM中运行,而不是持久化到本地文件系统,而是持久化到HDFS实例。
当您打算使用简单的部署概要文件时,可以考虑使用此概要文件,虽然负载很轻,但是数据必须在节点间来回移动。 写入要复制数据的HDFS可以确保后者。
要配置此独立变体,请编辑hbase-site.xml设置hbase.rootdir以指向HDFS实例中的目录,然后将hbase.cluster.distributed设置为false。 例如:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://namenode.example.org:8020/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>false</value>
</property>
</configuration>
1.3.2.分散式(Distributed)
可以将分布式模式细分为分布式模式,但是所有守护程序都在单个节点上运行(也称为伪分布式),并在其中完全分布在群集中的所有节点上。 伪分布式和全分布式术语来自Hadoop。
伪分布式(Pseudo-distributed)模式可以针对本地文件系统运行,也可以针对Hadoop Distributed File System (HDFS)实例运行。 全分布式(Fully-distributed)模式只能在HDFS上运行。 有关如何设置HDFS的信息,请参阅Hadoop文档。 可在ttp://www.alexjf.net/blog/distributed-systems/hadoop-yarn-installation-definitive-guide中找到有关在Hadoop 2上设置HDFS的很好的演练。
1.3.2.1.伪分布式(Pseudo-distributed)
伪分布式快速入门
快速入门已添加到快速入门一章。 请参阅quickstart-pseudo。 本节中最初的某些信息已移至此处。
伪分布式模式只是在单个主机上运行的完全分布式模式。 将此HBase配置仅用于测试和原型制作。 不要将此配置用于生产或性能评估。
1.3.3.完全分布(Fully-distributed)
默认情况下,HBase在独立模式下运行。 提供独立模式和伪分布式模式都是为了进行小型测试。 对于生产环境,建议使用分布式模式。 在分布式模式下,HBase守护程序的多个实例在群集中的多个服务器上运行。
就像在伪分布式模式下一样,完全分布式配置需要将hbase.cluster.distributed属性设置为true。 通常,将hbase.rootdir配置为指向高可用性HDFS文件系统。
此外,还配置了群集,以便多个群集节点可以注册为RegionServer,ZooKeeper QuorumPeers和备份HMaster服务器。 这些配置基础都在快速入门全面分发中进行了演示。
分布式RegionServer
通常,您的群集将包含运行在不同服务器上的多个RegionServer,以及主和备份Master和ZooKeeper守护程序。 主服务器上的conf/regionservers文件包含其RegionServer与该群集关联的主机列表。 每个主机都位于单独的行上。 当主服务器启动或停止时,此文件中列出的所有主机都将启动和停止其RegionServer进程。
ZooKeeper and HBase
有关HBase的ZooKeeper设置说明,请参见ZooKeeper部分。
例子3.例子分布式HBase集群
这是分布式HBase群集的conf/hbase-site.xml 。 用于实际工作的群集将包含更多自定义配置参数。 大多数HBase配置指令都有默认值,除非在hbase-site.xml中覆盖该值,否则将使用默认值。 有关更多信息,请参见“配置文件”。
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://namenode.example.org:8020/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>node-a.example.com,node-b.example.com,node-c.example.com</value>
</property>
</configuration>
这是一个示例conf/regionservers文件,其中包含应在集群中运行RegionServer的节点列表。 这些节点需要安装HBase,并且需要使用与主服务器相同的conf/目录内容
node-a.example.com
node-b.example.com
node-c.example.com
这是示例 conf/backup-masters 文件,其中包含应运行备份Master实例的每个节点的列表。 除非主控主机不可用,否则备份主控实例将处于空闲状态。
node-b.example.com
node-c.example.com
分布式HBase快速入门
有关具有多个ZooKeeper,备份HMaster和RegionServer实例的简单三节点群集配置的演练,请参阅快速启动完全分布式。
过程:HDFS客户端配置
值得注意的是,如果您在Hadoop集群上进行了HDFS客户端配置更改(例如HDFS客户端的配置指令),而不是服务器端配置,则必须使用以下方法之一使HBase能够查看和使用这些配置更改:
- 在hbase-env.sh中,将指向HADOOP_CONF_DIR的指针添加到HBASE_CLASSPATH环境变量。
- 在${HBASE_HOME}/conf下添加hdfs-site.xml(或hadoop-site.xml)或更好的符号链接副本,或
- 如果只有少量的HDFS客户端配置,请将其添加到hbase-site.xml。
此类HDFS客户端配置的示例是dfs.replication。 例如,如果要以5的复制因子运行,除非您执行上述操作以使配置可用于HBase,否则HBase将创建默认值为3的文件。
1.4.运行并确认安装
确保首先运行HDFS。 通过在HADOOP_HOME目录中运行bin/start-hdfs.sh来启动和停止Hadoop HDFS守护程序。 您可以通过测试将文件放置到Hadoop文件系统中的put和get来确保它正确启动。 HBase通常不使用MapReduce或YARN守护程序。 这些不需要启动。
如果您要管理自己的ZooKeeper,请启动并确认其正在运行,否则HBase将在启动过程中为您启动ZooKeeper。
使用以下命令启动HBase:
bin/start-hbase.sh
从HBASE_HOME目录运行以上命令。
现在,您应该有一个正在运行的HBase实例。 HBase日志可在logs子目录中找到。 检查它们,特别是如果HBase无法启动。
HBase还建立了一个列出重要属性的UI。 默认情况下,它部署在主主机上的端口16010上(HBase RegionServers默认在端口16020上侦听,并在端口16030上建立一个信息性HTTP服务器)。 如果Master在默认端口上的名为master.example.org的主机上运行,请将浏览器指向http://master.example.org:16010以查看Web界面。
HBase启动后,请参阅shell exercises部分,以了解如何创建表,添加数据,扫描插入以及最后禁用和删除表。
要在退出HBase Shell之后停止HBase,请输入
$ ./bin/stop-hbase.sh
stopping hbase...............
关机可能需要一些时间才能完成。 如果群集由许多计算机组成,则可能需要更长的时间。 如果您正在运行分布式操作,请确保等到HBase完全关闭后再停止Hadoop守护程序。
1.5.默认配置
1.5.1.hbase-site.xml and hbase-default.xml
就像在Hadoop中将特定于站点的HDFS配置添加到hdfs-site.xml文件中一样,对于HBase,特定于站点的自定义项也放入conf / hbase-site.xml文件中。 有关可配置属性的列表,请参见下面的hbase default configurations,或在src/main/resources.的HBase源代码中查看原始的hbase-default.xml源文件。
并非所有配置选项都将其显示在hbase-default.xml中。 有些配置只会出现在源代码中。 识别这些更改的唯一方法是通过代码审查。
当前,此处的更改将要求HBase重新启动群集以注意到更改。
1.5.2.HBase Default Configuration
以下文档是使用默认的hbase配置文件hbase-default.xml作为源生成的。
hbase.tmp.dir
描述
本地文件系统上的临时目录。 更改此设置以指向比“ /tmp”更永久的位置(java.io.tmpdir的通常解析方法),因为在重新启动计算机时会清除“ /tmp”目录。
默认
${java.io.tmpdir}/hbase-${user.name}
hbase.rootdir
描述
区域服务器共享的目录,HBase保留在该目录中。 URL应该是“完全限定(fully-qualified)”的,以包括文件系统方案。 例如,要指定HDFS实例的namenode在端口9000上的namenode.example.org上运行的HDFS目录“/hbase”,请将此值设置为:hdfs://namenode.example.org:9000/hbase。 默认情况下,我们也会写入设置为${hbase.tmp.dir}的任何内容(通常是/tmp),因此请更改此配置,否则所有数据都会在计算机重新启动时丢失。
默认
${hbase.tmp.dir}/hbase
hbase.cluster.distributed
描述
群集将处于的模式。对于独立模式,可能的值为false;对于分布式模式,可能的值为true。 如果为false,则启动将在一个JVM中同时运行所有HBase和ZooKeeper守护程序。
默认
false
hbase.zookeeper.quorum
描述
ZooKeeper集合中服务器的逗号分隔列表(此配置应已命名为hbase.zookeeper.ensemble)。 例如,“ host1.mydomain.com,host2.mydomain.com,host3.mydomain.com”。 默认情况下,对于本地和伪分布式操作模式,此选项设置为localhost。 对于完全分布式的设置,应将其设置为ZooKeeper集成服务器的完整列表。 如果在hbase-env.sh中设置了HBASE_MANAGES_ZK,则这是hbase在群集启动/停止过程中将 start/stop ZooKeeper的服务器列表。 在客户端,我们将使用此集成成员列表,并将其与hbase.zookeeper.property.clientPort配置放在一起。 并将其作为connectString参数传递到zookeeper构造函数中。
默认
localhost
zookeeper.recovery.retry.maxsleeptime
描述
最大的睡眠时间之前重试饲养员操作以毫秒为单位,使睡眠时间不会长无粘结这里需要一个最大时间
默认
60000
hbase.local.dir
描述
本地文件系统上用作本地存储的目录。
默认
${hbase.tmp.dir}/local/
hbase.master.port
描述
HBase主站应绑定的端口。
默认
16000
hbase.master.info.port
描述
HBase Master Web UI的端口。 如果不希望运行UI实例,则设置为-1。
默认
16010
hbase.master.info.bindAddress
描述
HBase Master Web UI的绑定地址
默认
0.0.0.0
hbase.master.logcleaner.plugins
描述
LogsCleaner服务调用的以逗号分隔的BaseLogCleanerDelegate列表。 这些WAL清理程序是按顺序调用的,因此将修剪最多文件的清理程序放在前面。 要实现自己的BaseLogCleanerDelegate,只需将其放在HBase的类路径中,然后在此处添加完全限定的类名。 始终在列表中添加以上默认的日志清除器。
默认
org.apache.hadoop.hbase.master.cleaner.TimeToLiveLogCleaner,org.apache.hadoop.hbase.master.cleaner.TimeToLiveProcedureWALCleaner
hbase.master.logcleaner.ttl
描述
WAL在存档({hbase.rootdir}/oldWALs)目录中保留多长时间,之后它将由主线程清除。 该值以毫秒为单位。
默认
600000
hbase.master.procedurewalcleaner.ttl
描述
过程WAL将在存档目录中保留多长时间,之后将由主线程将其清除。 该值以毫秒为单位。
默认
604800000
hbase.master.hfilecleaner.plugins
描述
由HFileCleaner服务调用的BaseHFileCleanerDelegate的逗号分隔列表。 这些HFiles清理程序是按顺序调用的,因此将修剪大多数文件的清理程序放在前面。 要实现自己的BaseHFileCleanerDelegate,只需将其放在HBase的类路径中,然后在此处添加完全限定的类名。 请始终在列表中添加上述默认日志清除器,因为它们将在hbase-site.xml中被覆盖。
默认
org.apache.hadoop.hbase.master.cleaner.TimeToLiveHFileCleaner
hbase.master.infoserver.redirect
描述
Master是否侦听Master Web UI端口(hbase.master.info.port)并将请求重定向到Master和RegionServer共享的Web UI服务器。 配置 当Master为区域提供服务(不是默认设置)时,这很有意义。
默认
true
hbase.master.fileSplitTimeout
描述
分割区域,在中止尝试之前要等待文件分割步骤多长时间。 默认值:600000。此设置以前在hbase-1.x中称为hbase.regionserver.fileSplitTimeout。 现在,Split在主端运行,因此重命名(如果找到了“ hbase.master.fileSplitTimeout”设置,它将使用它来初始化当前的“ hbase.master.fileSplitTimeout”配置。
默认
600000
hbase.regionserver.port
描述
HBase RegionServer绑定到的端口。
默认
16020
hbase.regionserver.info.port
描述
为HBase的RegionServer的Web UI设置的端口为-1,如果你不希望RegionServer的UI运行。
默认
16030
hbase.regionserver.info.bindAddress
描述
HBase RegionServer Web UI的地址
默认
0.0.0.0
hbase.regionserver.info.port.auto
描述
Master或RegionServer UI是否应搜索要绑定的端口。 如果hbase.regionserver.info.port已在使用中,则启用自动端口搜索。 对于测试很有用,默认情况下处于关闭状态。
默认
false
hbase.regionserver.handler.count
描述
在RegionServer上旋转的RPC侦听器实例数。 主机将相同的属性用于主机处理程序的计数。 过多的处理程序可能适得其反。 使它成为CPU计数的倍数。 如果大多数情况下是只读的,则处理程序计数接近cpu计数的效果很好。 从两倍的CPU计数开始,然后从那里进行调整。
默认
30
hbase.ipc.server.callqueue.handler.factor
描述
确定呼叫队列数量的因素。 值为0表示在所有处理程序之间共享一个队列。 值为1表示每个处理程序都有自己的队列。
默认
0.1
hbase.ipc.server.callqueue.read.ratio
描述
将呼叫队列分为读写队列。指定的间隔(应在0.0到1.0之间)将乘以呼叫队列的数量。值为0表示不拆分呼叫队列,这意味着读取和写入请求都将被推送到同一组队列中。小于0.5的值表示读队列少于写队列。值为0.5表示将有相同数量的读取和写入队列。大于0.5的值表示将有比写队列更多的读队列。值1.0表示除一个队列外的所有队列均用于调度读取请求。示例:给定呼叫队列的总数为10,读比率为0表示:10个队列将包含两个读/写请求。 read.ratio为0.3表示:3个队列仅包含读取请求,而7个队列仅包含写入请求。 read.ratio为0.5表示:5个队列仅包含读取请求,而5个队列仅包含写入请求。 read.ratio为0.8表示:8个队列将仅包含读取请求,而2个队列将仅包含写入请求。 read.ratio为1表示:9个队列将仅包含读取请求,而1个队列将仅包含写入请求。
默认
0
hbase.ipc.server.callqueue.scan.ratio
描述
给定读取呼叫队列的数量(根据呼叫队列总数乘以callqueue.read.ratio计算得出),scan.ratio属性会将读取呼叫队列分为小读取队列和长读取队列。小于0.5的值表示长读队列少于短读队列。值为0.5表示将有相同数量的短读和长读队列。大于0.5的值表示长读取队列比短读取队列多。值为0或1表示使用相同的队列进行获取和扫描。示例:假设读取呼叫队列的总数为8,则scan.ratio为0或1表示:8个队列将同时包含长读取请求和短读取请求。 scan.ratio为0.3表示:2个队列将仅包含长读请求,而6个队列将仅包含短读请求。 scan.ratio为0.5表示:4个队列将仅包含长读请求,而4个队列将仅包含短读请求。 scan.ratio为0.8表示:6个队列将仅包含长读请求,而2个队列将仅包含短读请求。
默认
0
hbase.regionserver.msginterval
描述
从RegionServer到Master的消息之间的时间间隔(以毫秒为单位)。
默认
3000
hbase.regionserver.logroll.period
描述
无论提交多少编辑,我们都将滚动提交日志的时间段。
默认
3600000
hbase.regionserver.logroll.errors.tolerated
描述
在触发服务器异常终止之前,我们将允许的连续WAL关闭错误数。 如果在日志滚动过程中关闭当前WAL编写器失败,则设置为0将导致区域服务器中止。 甚至很小的值(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
描述
在阻止新更新并强制进行刷新之前,区域服务器中所有内存存储区的最大大小。 默认为堆的40%(0.4)。 阻止更新并强制执行刷新,直到区域服务器中所有内存存储的大小达到hbase.regionserver.global.memstore.size.lower.limit。 此配置中的默认值有意保留为空,以使用旧的hbase.regionserver.global.memstore.upperLimit属性(如果存在)。
默认
none
hbase.regionserver.global.memstore.size.lower.limit
描述
强制刷新之前,区域服务器中所有内存存储区的最大大小。 默认为hbase.regionserver.global.memstore.size(0.95)的95%。 如果由于内存存储限制而阻止更新,则此值的100%值将导致最小的刷新发生。 为了尊重旧的hbase.regionserver.global.memstore.lowerLimit属性(如果存在),有意将此配置中的默认值保留为空。
默认
none
hbase.systemtables.compacting.memstore.type
描述
确定用于系统表(如META,名称空间表等)的内存存储的类型。默认情况下,类型为NONE,因此我们对所有系统表使用默认的内存存储。 如果我们需要对系统表使用压缩存储区,则将此属性设置为BASIC/EAGER
默认
NONE
hbase.regionserver.optionalcacheflushinterval
描述
编辑内容在自动刷新之前在内存中保留的最长时间。 默认值1小时。 将其设置为0以禁用自动刷新。
默认
3600000
hbase.regionserver.dns.interface
描述
区域服务器应从中报告其IP地址的网络接口的名称。
默认
default
hbase.regionserver.dns.nameserver
描述
区域服务器应使用该名称服务器(DNS)的主机名或IP地址来确定主机用于通信和显示目的的主机名。
默认
default
hbase.regionserver.region.split.policy
描述
拆分策略确定何时应拆分区域。 当前可用的其他各种拆分策略为BusyRegionSplitPolicy,ConstantSizeRegionSplitPolicy,DisabledRegionSplitPolicy,DelimitedKeyPrefixRegionSplitPolicy,KeyPrefixRegionSplitPolicy和SteppingSplitPolicy。 DisabledRegionSplitPolicy阻止手动区域分割。
默认
org.apache.hadoop.hbase.regionserver.SteppingSplitPolicy
hbase.regionserver.regionSplitLimit
描述
区域数量的限制,之后将不再进行区域划分。 这不是对区域数量的硬限制,但可作为区域服务器在特定限制后停止拆分的准则。 默认设置为1000。
默认
1000
zookeeper.session.timeout
描述
以毫秒为单位的ZooKeeper会话超时。 它以两种不同的方式使用。 首先,在HBase用于连接到集成体的ZK客户端中使用此值。 HBase在启动ZK服务器时也使用它,并将其作为“ maxSessionTimeout”传递。 请参阅https://zookeeper.apache.org/doc/current/zookeeperProgrammers.html#ch_zkSessions。 例如,如果HBase区域服务器连接到同样由HBase管理的ZK集合,则会话超时将是此配置指定的会话超时。 但是,连接到使用其他配置管理的集成服务器的区域服务器将受到该集成服务器的maxSessionTimeout的影响。 因此,即使HBase可能建议使用90秒,该集合的最大超时值也可以低于此值,并且它将具有优先权。 ZK随附的当前默认maxSessionTimeout为40秒,低于HBase的默认值。
默认
90000
zookeeper.znode.parent
描述
ZooKeeper中用于HBase的根ZNode。 配置有相对路径的所有HBase的ZooKeeper文件都将位于此节点下。 默认情况下,所有HBase的ZooKeeper文件路径都配置有相对路径,因此除非更改,否则它们都将位于此目录下。
默认
/hbase
zookeeper.znode.acl.parent
描述
根ZNode用于访问控制列表。
默认
acl
hbase.zookeeper.dns.interface
描述
ZooKeeper服务器应从其报告其IP地址的网络接口的名称。
默认
default
hbase.zookeeper.dns.nameserver
描述
ZooKeeper服务器应使用该主机名或名称服务器(DNS)的IP地址来确定主机用于通讯和显示目的的主机名。
默认
default
hbase.zookeeper.peerport
描述
ZooKeeper对等方用来互相通信的端口。 有关更多信息,请参见https://zookeeper.apache.org/doc/r3.4.10/zookeeperStarted.html#sc_RunningReplicatedZooKeeper。
默认
2888
hbase.zookeeper.leaderport
描述
ZooKeeper用于领导者选举的端口。 有关更多信息,请参见https://zookeeper.apache.org/doc/r3.4.10/zookeeperStarted.html#sc_RunningReplicatedZooKeeper
默认
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中的媒体资源。 限制单个客户端通过IP地址标识到ZooKeeper集成中的单个成员的并发连接数(在套接字级别)。 设置为高值可以避免独立运行和伪分布式运行的zk连接问题。
默认
300
hbase.client.write.buffer
描述
BufferedMutator写缓冲区的默认大小(以字节为单位)。 较大的缓冲区会占用更多的内存(在客户端和服务器端,因为服务器会实例化传递的写缓冲区以对其进行处理),但是较大的缓冲区会减少制作的RPC数量。 要估算服务器端使用的内存,请评估hbase.client.write.buffer * hbase.regionserver.handler.count
默认
2097152
hbase.client.pause
描述
常规客户端暂停值。大多采用的值运行失败的获取,区域查找重试前等待,等见hbase.client.retries.number对于我们如何从这个初始暂停量以及如何暂停工作瓦特/重退避描述。
默认
100
hbase.client.pause.cqtbe
描述
是否对CallQueueTooBigException(cqtbe)使用特殊的客户端暂停。 如果您观察到来自同一RegionServer的CQTBE频繁并且那里的呼叫队列保持满状态,则将此属性设置为比hbase.client.pause高的值。
默认
none
hbase.client.retries.number
描述
最大重试次数。 用作所有可重试操作的最大值,例如获取单元格的值,开始行更新等。重试间隔是基于hbase.client.pause的粗略函数。 首先,我们以该时间间隔重试,但随着退避,我们很快就达到了每十秒钟重试一次的目的。 有关备份如何增加的信息,请参见HConstants#RETRY_BACKOFF。 更改此设置和hbase.client.pause以适合您的工作量。
默认
15
hbase.client.max.total.tasks
描述
一个HTable实例将发送到群集的最大并发变异任务数。
默认
100
hbase.client.max.perserver.tasks
描述
单个HTable实例将发送到单个区域服务器的最大并发变异任务数。
默认
2
hbase.client.max.perregion.tasks
描述
客户将维护到一个区域的最大并发突变任务数。 也就是说,如果已经对该区域进行了hbase.client.max.perregion.tasks写入,则在完成某些写入之前,不会将新的看跌期权发送到该区域。
默认
1
hbase.client.perserver.requests.threshold
描述
所有客户端线程(进程级别)中一台服务器的并发暂挂请求的最大数量。 超出的请求将立即引发ServerTooBusyException,以防止仅一台慢速区域服务器占用和阻止用户线程。 如果您使用固定数量的线程以同步方式访问HBase,请将其设置为与线程数量相关的合适值将对您有所帮助。 有关详细信息,请参见https://issues.apache.org/jira/browse/HBASE-16388。
默认
2147483647
hbase.client.scanner.caching
描述
如果未从(本地,客户端)内存提供服务,则在扫描器上调用next时尝试获取的行数。 此配置与hbase.client.scanner.max.result.size一起使用,以尝试有效地使用网络。 默认值默认为Integer.MAX_VALUE,以便网络将填充hbase.client.scanner.max.result.size定义的块大小,而不是受特定的行数限制,因为行的大小因表而异 。 如果您提前知道一次扫描不需要多于一定数量的行,则应通过Scan#setCaching将此配置设置为该行限制。 较高的缓存值将启用更快的扫描程序,但会消耗更多的内存,并且当缓存为空时,对next的某些调用可能会花费越来越长的时间。 请勿将此值设置为使得两次调用之间的时间大于扫描程序超时; 即hbase.client.scanner.timeout.period
默认
2147483647
hbase.client.keyvalue.maxsize
描述
指定KeyValue实例的组合最大允许大小。 这是为保存在存储文件中的单个条目设置上限。 由于无法拆分它们,因此有助于避免由于数据太大而无法进一步拆分区域。 将其设置为最大区域大小的一小部分似乎是明智的。 将其设置为零或更少将禁用检查。
默认
10485760
hbase.server.keyvalue.maxsize
描述
单个单元格的最大允许大小,包括值和所有关键组件。 小于或等于0的值将禁用该检查。 默认值为10MB。 这是一项安全设置,可以保护服务器免受OOM情况的影响。
默认
10485760
hbase.client.scanner.timeout.period
描述
客户端扫描程序的租用期限(以毫秒为单位)。
默认
60000
hbase.client.localityCheck.threadPoolSize
默认
2
hbase.bulkload.retries.number
描述
最大重试次数。 面对分裂操作,这是尝试进行原子批量加载的最大迭代次数0表示永不放弃。
默认
10
hbase.master.balancer.maxRitPercent
描述
平衡时过渡区域的最大百分比。 默认值为1.0。 因此,没有平衡器节流。 如果将此配置设置为0.01,则表示平衡时最多有1%的过渡区域。 然后,平衡时群集的可用性至少为99%。
默认
1.0
hbase.balancer.period
描述
区域平衡器在主服务器中运行的时间段。
默认
300000
hbase.normalizer.period
描述
区域规范化器在主服务器中运行的时间段。
默认
300000
hbase.normalizer.min.region.count
描述
配置最小区域数
默认
3
hbase.regions.slop
描述
如果任何区域服务器具有平均+(平均*斜率)区域,则重新平衡。 在StochasticLoadBalancer(默认负载均衡器)中,此参数的默认值为0.001,而在其他负载均衡器(即SimpleLoadBalancer)中默认值为0.2。
默认
0.001
hbase.server.thread.wakefrequency
描述
在主机端,此配置是用于FS相关行为的时间段:检查hdfs是否处于安全模式下,设置或检查hbase.version文件,设置或检查hbase.id文件。 使用默认值应该可以。 在regionserver端,此配置在几个地方使用:刷新检查间隔,压缩检查间隔,沃尔玛滚动检查间隔。 特别是,管理员可以通过hbase.regionserver.flush.check.period和hbase.regionserver.compaction.check.period调整刷新和压缩检查间隔。 (以毫秒为单位)
默认
10000
hbase.regionserver.flush.check.period
描述
它确定regionserver中PeriodicFlusher的刷新检查周期。 如果未设置,则使用hbase.server.thread.wakefrequency作为默认值。 (以毫秒为单位)
默认
${hbase.server.thread.wakefrequency}
hbase.regionserver.compaction.check.period
描述
它确定区域服务器中CompactionChecker的压缩检查周期。 如果未设置,则使用hbase.server.thread.wakefrequency作为默认值。 (以毫秒为单位)
默认
${hbase.server.thread.wakefrequency}
hbase.server.versionfile.writeattempts
描述
在中止之前尝试重试几次以尝试写入版本文件。 每次尝试都由hbase.server.thread.wakefrequency毫秒分隔。
默认
3
hbase.hregion.memstore.flush.size
描述
果内存区的大小超过此字节数,则内存区将刷新到磁盘。 值由运行每个hbase.server.thread.wakefrequency的线程检查。
默认
134217728
hbase.hregion.percolumnfamilyflush.size.lower.bound.min
描述
如果使用了FlushLargeStoresPolicy并且有多个列族,那么每次我们达到内存存储区的总限制时,我们都会找出其内存存储区超出“下限”的所有列族,并仅刷新它们,同时将其他存储区保留在内存中。 默认情况下,“下界”将为“ hbase.hregion.memstore.flush.size / column_family_number”,除非此属性的值大于该值。 如果没有一个家庭的内存大小超过下限,则将刷新所有内存(就像往常一样)。
默认
16777216
hbase.hregion.preclose.flush.size
描述
如果在关闭时某个区域中的存储区大小等于或大于此大小,请在设置区域关闭标志并使该区域脱机之前运行“预冲洗”以清除存储区。 关闭时,在关闭标志下运行刷新以清空内存。 在这段时间内,该地区处于离线状态,我们没有进行任何写操作。 如果内存存储内容很大,则刷新可能需要很长时间才能完成。 预刷新的目的是在放置关闭标志并使区域脱机之前清理掉大部分的内存存储,因此在关闭标志下运行的刷新几乎没有作用。
默认
5242880
hbase.hregion.memstore.block.multiplier
描述
如果memstore具有hbase.hregion.memstore.block.multiplier乘以hbase.hregion.memstore.flush.size字节,则阻止更新。 防止更新流量激增期间失控的存储器。 如果没有上限,则内存存储将进行填充,以便在刷新结果刷新文件时需要花费很长时间来压缩或拆分,或更糟糕的是,我们OOME。
默认
4
hbase.hregion.memstore.mslab.enabled
描述
启用MemStore-Local Allocation Buffer,该功能可防止在重写入负载下发生堆碎片。 这可以减少大堆上停止世界GC暂停的频率。
默认
true
hbase.hregion.memstore.mslab.chunksize
描述
MemStoreLAB中块的最大字节大小。 单位:bytes
默认
2097152
hbase.regionserver.offheap.global.memstore.size
描述
RegionServer中所有MemStore可能使用的堆外内存量。 值为0表示将不使用堆外内存,并且MSLAB中的所有块都将为HeapByteBuffer,否则非零值表示将为MSLAB中的块以及MSLAB中的所有块使用多少兆字节的堆外内存 将是DirectByteBuffer。 单位:megabytes。
默认
0
hbase.hregion.memstore.mslab.max.allocation
描述
MemStoreLAB中一个分配的最大大小,如果所需的字节大小超过此阈值,则将仅从JVM堆而不是MemStoreLAB进行分配。
默认
262144
hbase.hregion.max.filesize
描述
最大HFile大小。 如果某个区域的HFiles大小的总和超过了该值,则该区域将一分为二。
默认
10737418240
hbase.hregion.majorcompaction
描述
两次大压实之间的时间,以毫秒为单位。 设置为0将禁用基于时间的自动专业压缩。 用户请求的基于大小的大型压缩仍将运行。 将该值乘以hbase.hregion.majorcompaction.jitter可以使压缩在给定的时间范围内在某个随机时间开始。 默认值为7天,以毫秒为单位。 如果大型压缩在您的环境中造成破坏,则可以将其配置为在部署的非高峰时间运行,或者通过将此参数设置为0来禁用基于时间的大型压缩,然后在cron作业或其他作业中运行大型压缩 外部机制。
默认
604800000
hbase.hregion.majorcompaction.jitter
描述
应用于hbase.hregion.majorcompaction的乘数,使压缩在hbase.hregion.majorcompaction的任一侧发生给定的时间。 数量越小,紧缩将更接近hbase.hregion.majorcompaction间隔。
默认
0.50
hbase.hstore.compactionThreshold
描述
如果在任何一个商店中都存在超过此数目的StoreFile(每次刷新MemStore都会写入一个StoreFile),则运行压缩以将所有StoreFile重写为一个StoreFile。 较大的值会延迟压缩,但是当确实发生压缩时,则需要更长的时间才能完成。
默认
3
hbase.regionserver.compaction.enabled
描述
通过设置true / false启用/禁用压缩。 我们可以使用compaction_switch shell命令进一步动态地切换压缩。
默认
true
hbase.hstore.flusher.count
描述
刷新线程数。 如果线程较少,则将对MemStore刷新进行排队。 如果线程更多,则刷新将并行执行,从而增加了HDFS的负载,并可能导致更多的压缩。
默认
2
hbase.hstore.blockingStoreFiles
描述
如果在任何一个商店中都存在超过此数目的StoreFile(每次MemStore刷新都写入一个StoreFile),则将阻止对此区域进行更新,直到压缩完成或超过hbase.hstore.blockingWaitTime。
默认
16
hbase.hstore.blockingWaitTime
描述
达到hbase.hstore.blockingStoreFiles定义的StoreFile限制后,区域将阻止更新的时间。 经过这段时间后,即使压缩尚未完成,该区域也将停止阻止更新。
默认
90000
hbase.hstore.compaction.min
描述
运行压缩之前必须符合压缩条件的最小StoreFiles数。 调整hbase.hstore.compaction.min的目标是避免最终产生太多无法压缩的微小StoreFiles。 每次在存储中有两个StoreFiles时,将此值设置为2都会导致较小的压缩,这可能不合适。 如果将此值设置得太高,则所有其他值都需要相应地进行调整。 在大多数情况下,默认值为适当。 在以前的HBase版本中,参数hbase.hstore.compaction.min被命名为hbase.hstore.compactionThreshold。
默认
3
hbase.hstore.compaction.max
描述
无论合格的StoreFiles数量如何,一次较小的压缩都会选择的StoreFiles的最大数量。 实际上,hbase.hstore.compaction.max的值控制完成一次压缩的时间长度。 将其设置为更大意味着压缩中将包含更多StoreFiles。 在大多数情况下,默认值为适当。
默认
10
hbase.hstore.compaction.min.size
描述
小于此大小的StoreFile(或使用ExploringCompactionPolicy时选择的StoreFiles)始终可以进行较小的压缩。 大小更大的HFile由hbase.hstore.compaction.ratio评估以确定它们是否合格。 因为此限制表示所有小于此值的StoreFiles的“自动包含”限制,所以在需要大量写入1-2 MB范围的StoreFiles的写繁重环境中,可能需要减小此值,因为每个StoreFile都将作为目标 进行压缩,生成的StoreFiles可能仍小于最小大小,需要进一步压缩。 如果降低此参数,比率检查将更快地触发。 这解决了早期版本的HBase中遇到的一些问题,但是在大多数情况下不再需要更改此参数。 默认值:128 MB,以字节为单位。
默认
134217728
hbase.hstore.compaction.max.size
描述
大于此大小的StoreFile(或使用ExploringCompactionPolicy时选择的StoreFiles)将从压缩中排除。 增大hbase.hstore.compaction.max.size的作用较小,而较大的StoreFiles则不会经常压缩。 如果您认为压缩过于频繁而没有太多好处,则可以尝试提高此值。 默认值:LONG.MAX_VALUE的值,以字节为单位。
默认
9223372036854775807
hbase.hstore.compaction.ratio
描述
对于较小的压缩,此比率用于确定大于hbase.hstore.compaction.min.size的给定StoreFile是否适合压缩。它的作用是限制大型StoreFiles的压缩。 hbase.hstore.compaction.ratio的值表示为浮点十进制。很大的比例(例如10)将产生一个巨大的StoreFile。相反,较低的值(例如.25)将产生类似于BigTable压缩算法的行为,从而产生四个StoreFiles。建议在1.0到1.4之间使用一个适中的值。调整此值时,您要平衡写入成本和读取成本。将值提高(到1.4之类)会增加写入成本,因为您将压缩更大的StoreFiles。然而,在读取,HBase的需要通过较少的StoreFiles寻求完成读取。如果您无法利用布隆过滤器,请考虑使用这种方法。否则,您可以将此值降低到1.0之类,以减少写入的背景成本,并使用Bloom过滤器控制读取期间接触到的StoreFiles的数量。在大多数情况下,默认值为适当。
默认
1.2F
hbase.hstore.compaction.ratio.offpeak
描述
允许您设置不同的比率(默认情况下更具侵略性),以确定非高峰时段压缩中是否包含较大的StoreFiles。 以与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之间的一个整数(包括0和23)。 设置为-1以禁用非峰值。
默认
-1
hbase.offpeak.end.hour
描述
非高峰时间的结束时间,以0到23之间的整数表示(包括0和23)。 设置为-1以禁用非峰值。
默认
-1
hbase.regionserver.thread.compaction.throttle
描述
有两种不同的线程池用于压缩,一种用于大压缩,另一种用于小压缩。这有助于保持瘦表(如HBase的:元)压实快。如果压实是大于这个阈值,它进入大型压实池。 在大多数情况下,默认值为适当。 默认值:2 x hbase.hstore.compaction.max x hbase.hregion.memstore.flush.size(默认为128MB)。 值字段假定hbase.hregion.memstore.flush.size的值与默认值保持不变。
默认
2684354560
hbase.regionserver.majorcompaction.pagecache.drop
描述
指定是否通过主要压缩将读取/写入的页面丢弃到系统页面缓存中。 将其设置为true有助于防止大型压缩污染页面缓存,这几乎总是需要的,尤其是对于内存/存储比率低/中等的群集。
默认
true
hbase.regionserver.minorcompaction.pagecache.drop
描述
指定是否通过较小的压缩将读取/写入的页面丢弃到系统页面缓存中。 将其设置为true有助于防止较小的压缩对页面缓存造成污染,这在内存与存储比率较低的群集或写入密集的群集中最为有用。 当大量读取都在最近写入的数据上时,您可能希望在中等到低的写入工作量下将其设置为false。
默认
true
hbase.hstore.compaction.kv.max
描述
刷新或压缩时要批量读取和写入的KeyValue的最大数量。 如果您有较大的键值和内存不足异常问题,请将其设置为较低,如果行宽且较小的行,请将其设置为较高。
默认
10
hbase.storescanner.parallel.seek.enable
描述
在StoreScanner中启用StoreFileScanner并行搜索功能,该功能可以减少特殊情况下的响应延迟。
默认
false
hbase.storescanner.parallel.seek.threads
描述
如果启用了并行查找功能,则为默认线程池大小。
默认
10
hfile.block.cache.policy
描述
L1块缓存(LRU或TinyLFU)的逐出策略。
默认
LRU
hfile.block.cache.size
描述
分配给StoreFile使用的块缓存的最大堆的百分比(-Xmx设置)。 默认值为0.4表示分配40%。 设置为0即可禁用,但不建议这样做; 您至少需要足够的缓存来保存存储文件索引。
默认
0.4
hfile.block.index.cacheonwrite
描述
这允许在写入索引时将非根多级索引块放入块高速缓存中。
默认
false
hfile.index.block.max.size
描述
当多级块索引中的叶级,中间级或根级索引块的大小增长到该大小时,将写出该块并开始一个新块。
默认
131072
hbase.bucketcache.ioengine
描述
存储桶式缓存内容的位置。 其中之一:堆,文件,文件,mmap或pmem。 如果是一个或多个文件,请将其设置为file:PATH_TO_FILE。 mmap表示内容将在mmaped文件中。 使用mmap:PATH_TO_FILE。 “ pmem”是持久存储设备上文件上的存储桶缓存。 使用pmem:PATH_TO_FILE。 有关更多信息,请参见http://hbase.apache.org/book.html#offheap.blockcache。
默认
none
hbase.hstore.compaction.throughput.lower.bound
描述
聚合压缩吞吐量的目标下限,以字节/秒为单位。 当PressureAwareCompactionThroughputController吞吐量控制器处于活动状态时,允许您调整最小可用压实吞吐量。 (默认情况下处于活动状态。)
默认
52428800
hbase.hstore.compaction.throughput.higher.bound
描述
聚合压缩吞吐量的目标上限,以字节/秒为单位。 当PressureAwareCompactionThroughputController吞吐量控制器处于活动状态时,允许您控制聚合压实吞吐量的需求。 (默认情况下处于活动状态。)当压实压力在[0.0,1.0]范围内时,最大吞吐量将在上下限之间调整。 如果压实压力为1.0或更高,则上限将被忽略,直到压力返回正常范围。
默认
104857600
hbase.bucketcache.size
描述
EITHER表示要提供给缓存的总堆内存大小的百分比的浮点数(如果<1.0),或者,它是BucketCache的总容量(以兆字节(megabytes )为单位)。 默认值:0.0
默认
none
hbase.bucketcache.bucket.sizes
描述
以逗号分隔的存储区存储区大小列表。 可以是多种尺寸。 按从小到大的顺序列出块大小。 您使用的大小将取决于您的数据访问模式。 必须是256的倍数,否则当您从缓存中读取数据时,将会遇到“ java.io.IOException:无效的HFile块魔术”。 如果在此处未指定任何值,则将选择代码中设置的默认存储桶大小(请参见BucketAllocator#DEFAULT_BUCKET_SIZES)。
默认
none
hfile.format.version
描述
用于新文件的HFile格式版本。 第3版增加了对hfiles中标签的支持(请参阅http://hbase.apache.org/book.html#hbase.tags)。 另请参阅配置“ hbase.replication.rpc.codec”。
默认
3
hfile.block.bloom.cacheonwrite
描述
为复合Bloom过滤器的内联块启用写时缓存。
默认
false
io.storefile.bloom.block.size
描述
复合Bloom过滤器的单个块(“块”)的大小(以字节为单位)。 此大小是近似值,因为Bloom块只能插入数据块的边界,并且每个数据块的键数有所不同。
默认
131072
hbase.rs.cacheblocksonwrite
描述
块完成后是否应将HFile块添加到块缓存中。
默认
false
hbase.rpc.timeout
描述
这是为RPC层定义的,HBase客户端应用程序需要花费多长时间(毫秒)来进行远程调用以使超时。 它使用ping来检查连接,但最终将抛出TimeoutException。
默认
60000
hbase.client.operation.timeout
描述
操作超时是一个顶级限制(毫秒),可确保Table中的阻止操作不会超过此限制。 在每个操作中,如果rpc请求由于超时或其他原因而失败,它将重试直到成功或抛出RetriesExhaustedException。 但是,如果阻塞的总时间在重试用尽之前达到了操作超时,它将提前中断并抛出SocketTimeoutException。
默认
1200000
hbase.cells.scanned.per.heartbeat.check
描述
在两次心跳检查之间扫描的细胞数。 心跳检查在扫描处理期间进行,以确定服务器是否应停止扫描以便将心跳消息发送回客户端。 心跳消息用于在长时间运行的扫描期间保持客户端-服务器连接保持活动状态。 较小的值表示心跳检查将更频繁地发生,因此将对扫描的执行时间提供更严格的限制。 较大的值表示心跳检查发生的频率较低
默认
10000
hbase.rpc.shortoperation.timeout
描述
这是“ hbase.rpc.timeout”的另一个版本。 对于集群内的那些RPC操作,我们依靠此配置为短操作设置短超时限制。 例如,区域服务器尝试向活动主服务器报告的rpc超时时间短可以使主服务器故障转移过程更快。
默认
10000
hbase.ipc.client.tcpnodelay
描述
设置rpc套接字连接没有延迟。 参见http://docs.oracle.com/javase/1.5.0/docs/api/java/net/Socket.html#getTcpNoDelay()
默认
true
hbase.regionserver.hostname
描述
此配置仅供专家使用:除非您真的知道自己在做什么,否则请不要设置其值。 设置为非空值时,它表示基础服务器的(外部)主机名。 有关详细信息,请参见https://issues.apache.org/jira/browse/HBASE-12954。
默认
none
hbase.regionserver.hostname.disable.master.reversedns
描述
此配置仅供专家使用:除非您真的知道自己在做什么,否则请不要设置其值。 设置为true时,regionserver将使用当前节点的主机名作为服务器名,HMaster将跳过反向DNS查找,而是使用regionserver发送的主机名。 请注意,此配置和hbase.regionserver.hostname是互斥的。 有关更多详细信息,请参见https://issues.apache.org/jira/browse/HBASE-18226。
默认
false
hbase.master.keytab.file
描述
kerberos keytab文件的完整路径,用于登录已配置的HMaster服务器主体。
默认
none
hbase.master.kerberos.principal
描述
例如 “hbase/_HOST@EXAMPLE.COM”。 用来运行HMaster进程的Kerberos主体名称。 主体名称应采用以下格式:user/hostname@DOMAIN。 如果将“ _HOST”用作主机名部分,它将被正在运行的实例的实际主机名替换。
默认
none
hbase.regionserver.keytab.file
描述
kerberos keytab文件的完整路径,用于登录已配置的HRegionServer服务器主体。
默认
none
hbase.regionserver.kerberos.principal
描述
例如 “ hbase/_HOST@EXAMPLE.COM”。 用来运行HRegionServer进程的kerberos主体名称。 主体名称应采用以下格式:user / hostname @ DOMAIN。 如果将“ _HOST”用作主机名部分,它将被正在运行的实例的实际主机名替换。 该主体的条目必须存在于hbase.regionserver.keytab.file中指定的文件中
默认
none
hadoop.policy.file
描述
RPC服务器用于对客户端请求做出授权决策的策略配置文件。 仅在启用HBase安全性时使用。
默认
hbase-policy.xml
hbase.superuser
描述
在整个集群中,无论存储的是什么ACL,都被授予完全特权的用户或组(逗号分隔)的列表。 仅在启用HBase安全性时使用。
默认
none
hbase.auth.key.update.interval
描述
服务器中认证令牌的主密钥的更新间隔(以毫秒为单位)。 仅在启用HBase安全性时使用。
默认
86400000
hbase.auth.token.max.lifetime
描述
认证令牌过期的最大生存时间(以毫秒为单位)。 仅在启用HBase安全性时使用。
默认
604800000
hbase.ipc.client.fallback-to-simple-auth-allowed
描述
当客户端配置为尝试安全连接,但尝试连接到不安全的服务器时,该服务器可能会指示客户端切换到SASL SIMPLE(不安全)身份验证。 此设置控制客户端是否将接受来自服务器的此指令。 如果为false(默认值),则客户端将不允许回退到SIMPLE身份验证,并将中止连接。
默认
false
hbase.ipc.server.fallback-to-simple-auth-allowed
描述
当服务器配置为需要安全连接时,它将使用SASL SIMPLE(不安全)身份验证拒绝来自客户端的连接尝试。 此设置允许安全服务器在客户端请求时接受来自客户端的SASL SIMPLE连接。 如果为false(默认值),则服务器将不允许回退到SIMPLE身份验证,并且将拒绝连接。 警告:仅在将客户端转换为安全身份验证时,才应将此设置用作临时措施。 为了安全操作,必须禁用它。
默认
false
hbase.display.keys
描述
如果将其设置为true,则webUI会显示所有开始/结束键,作为表详细信息,区域名称等的一部分。如果将其设置为false,则将隐藏键。
默认
true
hbase.coprocessor.enabled
描述
启用或禁用协处理器加载。 如果为“ false”(禁用),则将忽略任何其他与协处理器相关的配置。
默认
true
hbase.coprocessor.user.enabled
描述
启用或禁用用户(aka表)协处理器加载。 如果为“ false”(禁用),则将忽略表描述符中的任何表协处理器属性。 如果“ hbase.coprocessor.enabled”为“ false”,则此设置无效。
默认
true
hbase.coprocessor.region.classes
描述
逗号分隔的区域观察者或端点协处理器列表,默认情况下在所有表上加载。 对于任何覆盖协处理器方法,将按顺序调用这些类。 在实现自己的协处理器之后,将其添加到HBase的类路径中,并在此处添加完全限定的类名称。 也可以通过设置HTableDescriptor或HBase Shell来按需加载协处理器。
默认
none
hbase.coprocessor.master.classes
描述
逗号分隔的org.apache.hadoop.hbase.coprocessor.MasterObserver协处理器列表,默认情况下在活动HMaster进程中加载。 对于任何已实现的协处理器方法,将按顺序调用列出的类。 在实现自己的MasterObserver之后,只需将其放入HBase的类路径中,然后在此处添加完全限定的类名即可。
默认
none
hbase.coprocessor.abortonerror
描述
设置为true会导致如果协处理器无法加载,初始化失败或引发意外的Throwable对象,则导致托管服务器(主服务器或区域服务器)中止。 将其设置为false将允许服务器继续执行,但是相关协处理器的系统范围状态将变得不一致,因为它将仅在一部分服务器中正确执行,因此这仅对调试最有用。
默认
true
hbase.rest.port
描述
HBase REST服务器的端口。
默认
8080
hbase.rest.readonly
描述
定义启动REST服务器的模式。可能的值是:false:允许所有HTTP方法-GET/PUT/POST/DELETE。 true:仅允许GET方法。
默认
false
hbase.rest.threads.max
描述
REST服务器线程池的最大线程数。 池中的线程被重用以处理REST请求。 这控制了并发处理的最大请求数。 这可能有助于控制REST服务器使用的内存,以避免OOM问题。 如果线程池已满,则传入的请求将排队,并等待一些空闲线程。
默认
100
hbase.rest.threads.min
描述
REST服务器线程池的最小线程数。线程池总是至少有这些数量的线程,因此REST服务器已准备好为传入的请求。
默认
2
hbase.rest.support.proxyuser
描述
允许运行REST服务器以支持代理用户模式。
默认
false
hbase.defaults.for.version.skip
描述
设置为true以跳过“ hbase.defaults.for.version”检查。 将其设置为true可以在Maven生成的另一端以外的环境中使用。 即在IDE中运行。 您需要将此布尔值设置为true,以避免出现RuntimeException投诉:“ hbase-default.xml文件似乎适用于旧版本的HBase(\${hbase.version}),此版本为X.X.X-SNAPSHOT”
默认
false
hbase.table.lock.enable
描述
设置为true以启用将锁锁定在zookeeper中以进行模式更改操作。 来自主服务器的表锁定可防止将并行模式修改为损坏的表状态。
默认
true
hbase.table.max.rowsize
描述
未设置行内扫描标志的“获取”或“扫描”单行的最大大小(以字节为单位)(默认为1 Gb)。 如果行大小超过此限制,则将RowTooBigException抛出给客户端。
默认
1073741824
hbase.thrift.minWorkerThreads
描述
线程池的“core size”。 在每个连接上都会创建新线程,直到创建了这么多线程。
默认
16
hbase.thrift.maxWorkerThreads
描述
线程池的最大大小。 当挂起的请求队列溢出时,将创建新线程,直到它们的数量达到该数量为止。 此后,服务器开始断开连接。
默认
1000
hbase.thrift.maxQueuedRequests
描述
在队列中等待的未决Thrift连接的最大数量。 如果池中没有空闲线程,则服务器会将请求排队。 仅当队列溢出时,才添加新线程,直到hbase.thrift.maxQueuedRequests线程。
默认
1000
hbase.regionserver.thrift.framed
描述
在服务器端使用Thrift TFramedTransport。 对于节俭服务器,这是建议的传输方式,并且在客户端需要类似的设置。 将其更改为false将选择默认传输方式,当由于THRIFT-601发出格式错误的请求时,该传输方式容易受到DoS攻击。
默认
false
hbase.regionserver.thrift.framed.max_frame_size_in_mb
描述
使用成帧传输时的默认帧大小,以MB为单位
默认
2
hbase.regionserver.thrift.compact
描述
使用Thrift TCompactProtocol二进制序列化协议。
默认
false
hbase.rootdir.perms
描述
安全(kerberos)设置中根数据子目录的FS权限。 当master启动时,它将创建具有此权限的rootdir或设置不匹配的权限。
默认
700
hbase.wal.dir.perms
描述
安全(kerberos)设置中的根WAL目录的FS权限。 当master启动时,它将使用此权限创建WAL目录,或者在不匹配时设置权限。
默认
700
hbase.data.umask.enable
描述
启用(如果为true),应将文件权限分配给由regionserver写入的文件
默认
false
hbase.data.umask
描述
hbase.data.umask.enable为true时应用于写入数据文件的文件权限
默认
000
hbase.snapshot.enabled
描述
设置为true以允许拍摄/还原(restored )/克隆(cloned)快照。
默认
true
hbase.snapshot.restore.take.failsafe.snapshot
描述
设置为true以在还原操作之前进行快照。 发生故障时将使用拍摄的快照来还原以前的状态。 在还原操作结束时,此快照将被删除
默认
true
hbase.snapshot.restore.failsafe.name
描述
还原操作获取的故障安全快照的名称。 您可以使用{snapshot.name},{table.name}和{restore.timestamp}变量根据要还原的内容创建名称。
默认
hbase-failsafe-{snapshot.name}-{restore.timestamp}
hbase.snapshot.working.dir
描述
快照过程将发生的位置。 完成的快照的位置不会更改,但是快照过程发生的临时目录将设置为此位置。 为了提高性能,这可以是与根目录不同的文件系统。 有关更多信息,请参见HBASE-21098
默认
none
hbase.server.compactchecker.interval.multiplier
描述
该数字确定我们进行扫描以查看是否有必要进行压缩的频率。 通常,压缩是在某些事件(例如内存存储刷新)之后进行的,但是如果一段时间未收到区域的大量写入,或者由于压缩策略不同,则可能需要定期检查。 检查之间的间隔是hbase.server.compactchecker.interval.multiplier乘以hbase.server.thread.wakefrequency。
默认
1000
hbase.lease.recovery.timeout
描述
在放弃之前,我们等待dfs租赁恢复的总时间为多长时间。
默认
900000
hbase.lease.recovery.dfs.timeout
描述
dfs之间恢复租约调用的时间。 应该大于名称节点作为数据节点的一部分发出块恢复命令所花费的时间总和; dfs.heartbeat.interval以及主数据节点所花费的时间,在死数据节点上执行块恢复到超时; 通常是dfs.client.socket-timeout。 有关更多信息,请参见HBASE-8389的末尾。
默认
64000
hbase.column.max.version
描述
新的列族描述符将使用此值作为要保留的默认版本数。
默认
1
dfs.client.read.shortcircuit
描述
如果设置为true,则此配置参数启用短路本地读取。
默认
false
dfs.domain.socket.path
描述
如果dfs.client.read.shortcircuit设置为true,这是UNIX域套接字的路径,该套接字将用于DataNode与本地HDFS客户端之间的通信。 如果此路径中存在字符串“ _PORT”,它将被DataNode的TCP端口替换。 注意托管共享域套接字的目录的权限; dfsclient将向HBase用户以外的其他用户开放。
默认
none
hbase.dfs.client.read.shortcircuit.buffer.size
描述
如果未设置DFSClient配置dfs.client.read.shortcircuit.buffer.size,我们将使用此处配置的短路读取默认直接字节缓冲区大小。 DFSClient本机默认值为1MB; HBase保持其HDFS文件处于打开状态,因此文件块数* 1MB很快就开始增加,并由于直接内存不足而威胁到OOME。 因此,我们将其设置为默认值。 使其>在HColumnDescriptor中设置的默认hbase块大小,通常为64k。
默认
131072
hbase.regionserver.checksum.verify
描述
如果设置为true(默认值),则HBase会验证hfile块的校验和。 HBase在写出hfile时,将校验和与数据内联。 HDFS(在撰写本文时)将校验和写入数据文件之外的单独文件,这需要额外的查找。 设置该标志可节省一些I / O。 设置此标志时,将在hfile流上内部禁用HDFS的校验和验证。 如果hbase-checksum验证失败,我们将切换回使用HDFS校验和(因此,请不要禁用HDFS校验和!此外,此功能仅适用于hfile,不适用于WAL)。 如果将此参数设置为false,则hbase将不会验证任何校验和,而是取决于HDFS客户端中进行的校验和验证。
默认
true
hbase.hstore.bytes.per.checksum
描述
hfile块中HBase级别校验和的新创建校验和块中的字节数。
默认
16384
hbase.hstore.checksum.algorithm
描述
用于计算校验和的算法的名称。 可能的值为NULL,CRC32,CRC32C。
默认
CRC32C
hbase.client.scanner.max.result.size
描述
调用扫描仪的下一个方法时返回的最大字节数。 请注意,当单行大于此限制时,该行仍将完全返回。 默认值为2MB,适用于1ge网络。 对于更快和/或更高延迟的网络,此值应增加。
默认
2097152
hbase.server.scanner.max.result.size
描述
调用扫描仪的下一个方法时返回的最大字节数。 请注意,当单行大于此限制时,该行仍将完全返回。 默认值为100MB。 这是一项安全设置,可以保护服务器免受OOM情况的影响。
默认
104857600
hbase.status.published
描述
此设置激活主服务器发布区域服务器状态。 当区域服务器停止运行并开始恢复时,主服务器会将此信息推送到客户端应用程序,以使它们立即断开连接,而不必等待超时。
默认
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的目录。 但是,已经加载的过滤器/协处理器类不会被卸载。 有关更多详细信息,请参见HBASE-1936。 不适用于协处理器。
默认
${hbase.rootdir}/lib
hbase.security.authentication
描述
控制是否为HBase启用安全身份验证。 可能的值为“简单”(不进行身份验证)和“ kerberos”。
默认
simple
hbase.rest.filter.classes
描述
REST服务的Servlet过滤器。
默认
org.apache.hadoop.hbase.rest.filter.GzipFilter
hbase.master.loadbalancer.class
描述
在周期发生时用于执行区域平衡的类。 有关其工作原理的更多信息,请参见类注释。http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html它将DefaultLoadBalancer替换为默认值(因为重命名为SimpleLoadBalancer )。
默认
org.apache.hadoop.hbase.master.balancer.StochasticLoadBalancer
hbase.master.loadbalance.bytable
描述
平衡器运行时的因子表名称。 默认值:false。
默认
false
hbase.master.normalizer.class
描述
发生周期时用于执行区域规范化的类。 有关其工作原理的更多信息,请参见类注释。http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/master/normalizer/SimpleRegionNormalizer.html
默认
org.apache.hadoop.hbase.master.normalizer.SimpleRegionNormalizer
hbase.rest.csrf.enabled
描述
设置为true以启用针对跨站点请求伪造(CSRF)的保护
默认
false
hbase.rest-csrf.browser-useragents-regex
描述
通过将hbase.rest.csrf.enabled设置为true来为REST服务器启用跨站点请求伪造(CSRF)防护时,用逗号分隔的正则表达式列表,用于与HTTP请求的User-Agent标头匹配。 如果传入的User-Agent与这些正则表达式中的任何一个匹配,则该请求被认为是由浏览器发送的,因此将强制执行CSRF防护。 如果请求的User-Agent与这些正则表达式都不匹配,则认为该请求是由浏览器以外的其他设备(例如脚本化自动化)发送的。 在这种情况下,CSRF并不是潜在的攻击媒介,因此无法执行预防措施。 这有助于实现与尚未更新为发送CSRF预防标头的现有自动化的向后兼容性。
默认
Mozilla.,Opera.
hbase.security.exec.permission.checks
描述
如果启用此设置并且基于ACL的访问控制处于活动状态(AccessController协处理器作为系统协处理器或作为表协处理器安装在表上),那么如果所有相关用户需要执行协处理器端点的能力,则必须授予他们所有EXEC特权 电话。 像任何其他权限一样,EXEC特权可以全局授予用户,也可以基于每个表或每个命名空间授予用户。 有关协处理器端点的更多信息,请参见HBase在线手册的协处理器部分。 有关使用AccessController授予或撤消权限的更多信息,请参见HBase在线手册的安全性部分。
默认
false
hbase.procedure.regionserver.classes
描述
逗号分隔的org.apache.hadoop.hbase.procedure.RegionServerProcedureManager过程管理器列表,默认情况下在活动HRegionServer进程中加载。 生命周期方法(init / start / stop)将由活动的HRegionServer进程调用以执行特定的全局受阻过程。 在实现自己的RegionServerProcedureManager之后,只需将其放入HBase的类路径中,然后在此处添加完全限定的类名即可。
默认
none
hbase.procedure.master.classes
描述
逗号分隔的org.apache.hadoop.hbase.procedure.MasterProcedureManager过程管理器列表,默认情况下在活动HMaster进程上加载。 过程由其签名标识,用户可以使用签名和即时名称来触发全局障碍过程的执行。 在实现自己的MasterProcedureManager之后,只需将其放入HBase的类路径中,然后在此处添加完全限定的类名即可。
默认
none
hbase.coordinated.state.manager.class
描述
实现协调状态管理器的类的全限定名称。
默认
org.apache.hadoop.hbase.coordination.ZkCoordinatedStateManager
hbase.regionserver.storefile.refresh.period
描述
刷新辅助区域的存储文件的时间段(以毫秒为单位)。 0表示此功能被禁用。 一旦二级区域刷新了该区域中的文件列表(没有通知机制),二级区域就会从主区域看到新文件(通过刷新和压缩)。 但是过于频繁的刷新可能会导致额外的Namenode压力。 如果文件刷新的时间不能超过HFile TTL(hbase.master.hfilecleaner.ttl),则拒绝请求。 还建议通过此设置将HFile TTL配置为更大的值。
默认
0
hbase.region.replica.replication.enabled
描述
是否启用了到辅助区域副本的异步WAL复制。 如果启用此功能,将创建一个名为“ region_replica_replication”的复制对等方,它将复制日志尾部并将突变复制到具有区域复制> 1的表的区域副本中。如果启用一次,则禁用此复制还需要禁用复制 使用Shell或Admin java类的对等体。 到辅助区域副本的复制通过标准的群集间复制进行。
默认
false
hbase.http.filter.initializers
描述
用逗号分隔的类名称列表。 列表中的每个类都必须扩展org.apache.hadoop.hbase.http.FilterInitializer。 相应的过滤器将被初始化。 然后,该筛选器将应用于所有面向用户的jsp和servlet网页。 列表的顺序定义了过滤器的顺序。 默认的StaticUserWebFilter添加一个由hbase.http.staticuser.user属性定义的用户主体。
默认
org.apache.hadoop.hbase.http.lib.StaticUserWebFilter
hbase.security.visibility.mutations.checkauths
描述
如果启用此属性,将检查是否在能见度表达标签与用户发出突变有关
默认
false
hbase.http.max.threads
描述
HTTP Server将在其ThreadPool中创建的最大线程数。
默认
16
hbase.replication.rpc.codec
描述
启用复制时要使用的编解码器,以便也复制标签。 与HFileV3一起使用,后者支持其中的标签。 如果未使用标签,或者使用的hfile版本为HFileV2,则可以将KeyValueCodec用作复制编解码器。 请注意,在没有标签的情况下使用KeyValueCodecWithTags进行复制不会造成任何危害。
默认
org.apache.hadoop.hbase.codec.KeyValueCodecWithTags
hbase.replication.source.maxthreads
描述
任何复制源用于将编辑并行传送到接收器的最大线程数。 这也限制了每个复制批处理分成的块数。 较大的值可以提高主群集和从群集之间的复制吞吐量。 默认值10几乎不需要更改。
默认
10
hbase.http.staticuser.user
描述
呈现内容时在静态Web筛选器上作为筛选条件的用户名。 HDFS Web UI(用于浏览文件的用户)是一个示例用法。
默认
dr.stack
hbase.regionserver.handler.abort.on.error.percent
描述
区域服务器RPC线程无法中止RS的百分比。 -1禁用中止; 0即使有一个处理程序挂掉,也中止; 0.x仅在此百分比的处理程序已死亡时才中止; 1只有中止所有处理程序挂掉。
默认
0.5
hbase.mob.file.cache.size
描述
要缓存的已打开文件处理程序的数量。 更大的值将为每个mob文件缓存提供更多的文件处理程序,从而有利于读取,并减少频繁的文件打开和关闭操作。 但是,如果将其设置得太高,则可能导致“打开的文件处理程序太多”。默认值为1000。
默认
1000
hbase.mob.cache.evict.period
描述
mob缓存逐出已缓存的mob文件之前的时间(以秒为单位)。 默认值为3600秒。
默认
3600
hbase.mob.cache.evict.remain.ratio
描述
当缓存的mob文件的数量超过hbase.mob.file.cache.size时,将触发逐出后保留的缓存文件的比率(介于0.0和1.0之间)。 默认值为0.5f。
默认
0.5f
hbase.master.mob.ttl.cleaner.period
描述
ExpiredMobFileCleanerChore运行的周期。 单位是第二。 默认值为一天。 MOB文件名仅使用其中文件创建时间的日期部分。 我们用这段时间来确定文件的TTL到期时间。 因此,TTL过期文件的删除可能会延迟。 最大延迟时间可能是24小时。
默认
86400
hbase.mob.compaction.mergeable.threshold
描述
如果mob文件的大小小于该值,则将其视为小文件,需要以mob压缩方式合并。 默认值为1280MB。
默认
1342177280
hbase.mob.delfile.max.count
描述
mob压缩中允许的最大del文件数。 在mob压缩中,当现有del文件的数量大于此值时,它们将合并,直到del文件的数量不大于该值。 预设值为3。
默认
3
hbase.mob.compaction.batch.size
描述
一批mob压缩中允许的mob文件的最大数量。 暴民压缩将小暴民文件合并为大暴民文件。 如果小文件的数量很大,则合并中可能会导致“打开的文件处理程序太多”。 合并必须分为几批。 此值限制在一批mob压缩中选择的mob文件的数量。 默认值为100。
默认
100
hbase.mob.compaction.chore.period
描述
MobCompactionChore运行的时间。 单位是第二。 默认值为一周。
默认
604800
hbase.mob.compactor.class
描述
实现mob压缩器,默认之一是PartitionedMobCompactor。
默认
org.apache.hadoop.hbase.mob.compactions.PartitionedMobCompactor
hbase.mob.compaction.threads.max
描述
MobCompactor中使用的最大线程数。
默认
1
hbase.snapshot.master.timeout.millis
描述
快照过程执行的主服务器超时
默认
300000
hbase.snapshot.region.timeout
描述
超时regionservers保持快照请求池等待线程。
默认
300000
hbase.rpc.rows.warning.threshold
描述
批处理操作中的行数,超过该行数将记录警告。
默认
5000
hbase.master.wait.on.service.seconds
描述
默认值为5分钟。 进行30秒的测试。 有关某些上下文,请参见HBASE-19794。
默认
30
hbase.master.cleaner.snapshot.interval
描述
快照清理琐事间隔(以毫秒为单位)。 清理线程按此时间间隔运行,以查找所有基于TTL过期的快照并将其删除。
默认
1800000
hbase.master.snapshot.ttl
描述
当用户在创建快照时未指定TTL时,将考虑默认快照TTL。 默认值0表示永久-快照必须手动删除后才能自动删除
默认
0
hbase.master.regions.recovery.check.interval
描述
区域恢复杂项间隔(以毫秒为单位)。 此琐事将以此间隔运行,以查找具有可配置最大存储文件引用计数的所有区域,然后重新打开它们。
默认
1200000
hbase.regions.recovery.store.file.ref.count
描述
文件上的引用计数非常大,表明该对象存在引用泄漏。 即使通过压缩使这些文件无效,也无法将其删除。 在这种情况下,恢复的唯一方法是重新打开可以释放所有资源的区域,例如引用计数,租约等。此配置表示针对重新打开区域考虑的存储文件引用计数阈值。 具有存储文件引用计数>此值的任何区域都可以由主服务器重新打开。 默认值-1表示此功能已关闭。 仅应提供正整数值才能启用此功能。
默认
-1
1.6.hbase-env.sh
在此文件中设置HBase环境变量。 示例包括在HBase守护程序启动时传递JVM的选项,例如堆大小和垃圾收集器配置。 您还可以设置HBase配置的配置,日志目录,niceness,ssh选项,在何处查找进程pid文件等。在 conf/hbase-env.sh 中打开文件并仔细阅读其内容。 每个选项都有充分的文档记录。 如果希望在启动时由HBase守护程序读取环境变量,请在此处添加您自己的环境变量。
此处的更改将要求群集重新启动,以便HBase注意到更改。
1.7.log4j.properties
编辑此文件以更改HBase文件的滚动速率并更改HBase记录消息的级别。
尽管可以通过HBase UI更改特定守护程序的日志级别,但此处的更改将要求HBase重新启动集群以注意到更改。
1.8.客户端配置和依赖关系连接到HBase集群
如果您以独立模式运行HBase,则无需配置任何内容即可让客户端正常工作,只要它们都在同一台计算机上即可。
由于HBase Master可能会四处移动,因此客户端可以通过向ZooKeeper查找当前的关键位置来进行引导。 ZooKeeper是保留所有这些值的位置。 因此,客户在执行其他任何操作之前,需要先确定ZooKeeper合奏的位置。 通常,此集合位置保留在hbase-site.xml中,并由客户端从CLASSPATH中拾取。
如果正在配置要运行HBase客户端的IDE,则应在类路径中包含conf /目录,以便可以找到hbase-site.xml设置(或添加src / test / resources来选择使用的hbase-site.xml 通过测试)。
对于使用Maven的Java应用程序,建议在连接到集群时包括hbase-shaded-client模块依赖项:
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-shaded-client</artifactId>
<version>2.0.0</version>
</dependency>
仅用于客户端的基本示例hbase-site.xml可能如下所示:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hbase.zookeeper.quorum</name>
<value>example1,example2,example3</value>
<description>The directory shared by region servers.
</description>
</property>
</configuration>
1.8.1.Java客户端配置
Java客户端使用的配置保留在HBaseConfiguration实例中。
HBaseConfiguration上的工厂方法HBaseConfiguration.create();在调用时将读取在客户端的CLASSPATH上找到的第一个hbase-site.xml的内容(如果存在)(调用还将包括任何hbase-default。 找到xml;在hbase.X.X.X.jar中附带了一个hbase-default.xml。 也可以直接指定配置,而不必从hbase-site.xml中读取。 例如,以编程方式为集群设置ZooKeeper集成,请执行以下操作:
Configuration config = HBaseConfiguration.create();
config.set("hbase.zookeeper.quorum", "localhost"); // Here we are running zookeeper locally
如果多个ZooKeeper实例组成了ZooKeeper集合,则可以在用逗号分隔的列表中指定它们(就像在hbase-site.xml文件中一样)。 然后可以将此填充的Configuration实例传递到表,依此类推。
1.9.超时设定
HBase提供了各种各样的超时设置,以限制各种远程操作的执行时间。
- hbase.rpc.timeout
- hbase.rpc.read.timeout
- hbase.rpc.write.timeout
- hbase.client.operation.timeout
- hbase.client.meta.operation.timeout
- hbase.client.scanner.timeout.period
hbase.rpc.timeout属性限制了单个RPC调用在超时之前可以运行多长时间。 要微调与读取或写入相关的RPC超时,请设置hbase.rpc.read.timeout和hbase.rpc.write.timeout配置属性。 如果没有这些属性,将使用hbase.rpc.timeout。
较高级别的超时是hbase.client.operation.timeout,它对于每个客户端调用均有效。 例如,由于hbase.rpc.timeout而导致RPC调用因超时而失败时,它将重试,直到达到hbase.client.operation.timeout。 可以通过设置hbase.client.meta.operation.timeout配置值来微调系统表的客户端操作超时。 如果未设置,则其值将使用hbase.client.operation.timeout。
扫描操作的超时控制不同。 使用hbase.client.scanner.timeout.period属性设置此超时。
1.10.示例配置
1.10.1.基本的分布式HBase安装
这是分布式十节点群集的基本配置示例:* 在此示例中,通过节点example9将节点命名为example0,example1等。 * HBase Master和HDFS NameNode在节点example0上运行。 * RegionServers在节点example1-example9上运行。 * 3节点ZooKeeper集合在默认端口上的example1,example2和example3上运行。 * ZooKeeper数据保留在目录 /export/zookeeper中。
下面我们显示在HBase conf目录中找到的主要配置文件(hbase-site.xml,regionservers和hbase-env.sh)可能是什么样子。
1.10.2.hbase-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hbase.zookeeper.quorum</name>
<value>example1,example2,example3</value>
<description>The directory shared by RegionServers.
</description>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/export/zookeeper</value>
<description>Property from ZooKeeper config zoo.cfg.
The directory where the snapshot is stored.
</description>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://example0:8020/hbase</value>
<description>The directory shared by RegionServers.
</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>The mode the cluster will be in. Possible values are
false: standalone and pseudo-distributed setups with managed ZooKeeper
true: fully-distributed with unmanaged ZooKeeper Quorum (see hbase-env.sh)
</description>
</property>
</configuration>
1.10.3.区域服务器(regionservers)
在此文件中,您列出了将运行RegionServers的节点。 在我们的例子中,这些节点是example1-example9。
example1
example2
example3
example4
example5
example6
example7
example8
example9
1.10.4. hbase-env.sh
hbase-env.sh文件中的以下几行显示了如何设置JAVA_HOME环境变量(HBase必需)以及如何将堆设置为4 GB(而不是默认值1 GB)。 如果复制并粘贴此示例,请确保调整JAVA_HOME以适合您的环境。
# The java implementation to use.
export JAVA_HOME=/usr/java/jdk1.8.0/
# The maximum amount of heap to use. Default is left to JVM default.
export HBASE_HEAPSIZE=4G
使用rsync将conf目录的内容复制到群集的所有节点。
1.11.重要配置
下面我们列出了一些重要的配置。 我们将本节分为所需的配置和值得一看的推荐配置。
1.11.1.所需配置
1.11.1.1.大集群配置
如果您的群集具有很多区域,则在主服务器启动后,Regionserver可能会短暂签入,而所有其他RegionServer都将滞后。 这第一台要签入的服务器将被分配所有非最佳区域。 为防止发生上述情况,请将hbase.master.wait.on.regionservers.mintostart属性从其默认值1开始。请参见HBASE-6389修改条件以确保主服务器在开始区域分配之前等待足够数量的区域服务器(Region Server)。作业以获取更多详细信息。
1.11.2.推荐配置
1.11.2.1.ZooKeeper配置
zookeeper.session.timeout
默认超时是90秒(以毫秒为单位指定)。这意味着,如果服务器崩溃,则主服务器将在90秒后通知崩溃并开始恢复。您可能需要将超时调整为一分钟或更短,以便主服务器可以更快地注意到故障。更改此值之前,请确保已控制JVM垃圾收集配置,否则,持续超过ZooKeeper会话超时的长时间垃圾收集将占用RegionServer。 (这样做可能会很好-如果RegionServer长时间处于GC中,您可能希望恢复在服务器上开始)。
要更改此配置,请编辑hbase-site.xml,在集群中复制更改的文件,然后重新启动。
我们将此值设置得很高,以免我们不得不在邮件列表中提出问题,询问在大规模导入期间为什么RegionServer出现故障。通常的原因是未调整其JVM,并且它们正在运行很长时间的GC暂停。我们的想法是,当用户熟悉HBase时,我们将不必再让他们知道其所有复杂性。后来,当他们已经建立了一
ZooKeeper的实例数
See zookeeper.
1.11.2.2.HDFS配置
dfs.datanode.failed.volumes.tolerated
这是hdfs-default.xml描述中的``...在DataNode停止提供服务之前允许失败的卷数。默认情况下,任何卷故障都会导致数据节点关闭''。 您可能希望将其设置为可用磁盘数量的一半。
hbase.regionserver.handler.count
此设置定义保持打开状态以响应对用户表的传入请求的线程数。经验法则是,当每个请求的有效负载接近MB时(大放置,使用大缓存进行扫描),此数字应保持较低;当有效负载较小(获取,小放置,ICV,删除)时,请保持较高的数字。正在进行的查询的总大小受设置hbase.ipc.server.max.callqueue.size的限制。
如果他们的有效负载很小,则可以安全地将该数目设置为最大传入客户端数,典型示例是为网站提供服务的集群,因为通常不缓冲看跌期权,并且大部分操作都可以得到。
将该设置保持在较高状态是危险的,原因是区域服务器中当前正在发生的所有put的总大小可能会对其内存施加过多压力,甚至触发OutOfMemoryError。在内存不足的情况下运行的RegionServer会触发其JVM的垃圾收集器更频繁地运行,直到达到明显的GC暂停为止(原因是,用于保留所有请求有效负载的所有内存都不能被废弃,垃圾收集器尝试)。一段时间后,整个群集的吞吐量会受到影响,因为命中该RegionServer的每个请求都将花费更长的时间,从而使问题更加严重。
通过在单个RegionServer上rpc.logging然后拖尾其日志(排队的请求会占用内存),您可以了解您是否拥有过多的处理程序。
1.11.2.3.大内存机器的配置
HBase带有合理,保守的配置,几乎可以在人们可能要测试的所有计算机类型上使用。 如果您有较大的计算机(HBase具有8G和较大的堆),则以下配置选项可能会有所帮助。 TODO。
1.11.2.4.压缩(Compression)
您应该考虑启用ColumnFamily压缩。 有几个选项几乎是无摩擦的,在大多数情况下,它们通过减小StoreFiles的大小从而减少I / O来提高性能。
有关更多信息,请参见compression。
1.11.2.5.配置WAL文件的大小和数量
如果RS发生故障,HBase使用wal来恢复尚未刷新到磁盘的内存存储数据。 这些WAL文件应配置为略小于HDFS块(默认情况下,HDFS块为64Mb,WAL文件为〜60Mb)。
HBase的也有上的WAL文件,旨在确保从未有需要恢复期间重播了太多数据的数量限制。 需要根据memstore配置设置此限制,以便所有必需的数据都适合。 建议分配足够的WAL文件以至少存储那么多的数据(当所有内存存储都快用完时)。 例如,对于16Gb RS堆,默认内存存储设置(0.4)和默认WAL文件大小(〜60Mb),16Gb * 0.4 / 60,WAL文件计数的起点是〜109。 但是,由于并非所有存储器都一直都在装满,因此可以分配较少的WAL文件。
1.11.2.6.托管拆分(Managed Splitting)
HBase通常根据hbase-default.xml和hbase-site.xml配置文件中的设置来处理区域划分。重要设置包括hbase.regionserver.region.split.policy,hbase.hregion.max.filesize,hbase.regionserver.regionSplitLimit。分割的一种简化视图是,当区域增长到hbase.hregion.max.filesize时,将对其进行分割。对于大多数使用模式,应使用自动拆分。有关手动区域分割的更多信息,请参见manual region splitting decisions。
您可以选择自己管理拆分,而不是让HBase自动拆分您的区域。如果您非常了解键空间,则可以手动管理拆分,否则让HBase为您确定拆分位置。手动拆分可以减轻区域创建和负载下的移动。它还使区域边界是已知且不变的(如果禁用区域分割)。如果使用手动拆分,则更容易进行基于时间的交错压缩,以分散网络IO负载。
禁用自动拆分
org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy
推荐自动分割
如果禁用自动拆分以诊断问题或在数据快速增长期间,建议在情况变得更稳定时重新启用它们。 管理区域分裂自己的潜在好处并非没有争议。
确定预分割区域的最佳数量
预分割区域的最佳数量取决于您的应用程序和环境。 一个好的经验法则是从每个服务器10个预分割区域开始,并观察数据随时间增长的情况。 最好在区域太少的一侧犯错误,然后再进行滚动拆分。 最佳区域数取决于您所在区域中最大的StoreFile。 如果数据量增加,则最大的StoreFile的大小将随时间增加。 目的是使最大区域足够大,以使压缩选择算法仅在定时大压缩期间对其进行压缩。 否则,集群可能会同时受到大量区域的压缩风暴。 重要的是要了解数据增长会导致压缩风暴,而不是手动拆分决定。
如果将区域分成太多大区域,则可以通过配置HConstants.MAJOR_COMPACTION_PERIOD来增加主要压缩间隔。 org.apache.hadoop.hbase.util.RegionSplitter实用程序还提供所有区域的网络IO安全滚动拆分。
1.11.2.7.托管压缩(Managed Compactions)
默认情况下,大型压缩计划为每7天运行一次。
如果需要精确控制大型压缩的时间和频率,可以禁用托管大型压缩。 有关详细信息,请参见 compaction.parameters表中的hbase.hregion.majorcompaction条目。
不要禁用主要压缩
对于StoreFile清理,绝对必需进行大压缩。 请勿完全禁用它们。 您可以通过HBase Shell或通过Admin API手动运行主要压缩。
有关压缩和压缩文件选择过程的更多信息,请参见compaction。
1.11.2.8.投机执行(Speculative Execution)
默认情况下,MapReduce任务的推测执行是打开的,对于HBase群集,通常建议在系统级关闭推测执行,除非在特定情况下需要它,可以在每个作业中对其进行配置。 将属性mapreduce.map.speculative和mapreduce.reduce.speculative设置为false。
1.11.3.其他配置
1.11.3.1.平衡器(Balancer)
平衡器是一种定期操作,在主服务器上运行,以重新分配群集上的区域。 它是通过hbase.balancer.period配置的,默认值为300000(5分钟)。
有关LoadBalancer的更多信息,请参见 master.processes.loadbalancer。
1.11.3.2.禁用块缓存
不要关闭块缓存(您可以通过将hfile.block.cache.size设置为零来实现)。 目前,如果您这样做的话,我们做得并不好,因为RegionServer将花费所有的时间一遍又一遍地加载HFile索引。 如果您的工作组对块缓存不利,请至少调整块缓存的大小,以使HFile索引保留在缓存中(您可以通过调查RegionServer UI来大致了解所需的大小;您将 请参阅网页顶部附近的索引块大小)。
1.11.3.3.Nagle或小包装问题
如果在针对HBase的操作中偶尔会出现40ms左右的延迟,请尝试Nagles的设置。 例如,请参阅用户邮件列表线程,“缓存设置为1时的扫描性能不一致”以及其中引用的问题,其中设置notcpdelay可以提高扫描速度。 您可能还会在HBASE-7008的尾部看到图表,将扫描仪缓存设置为更好的默认设置,我们的Lars Hofhansl尝试打开和关闭Nagle来测量效果的各种数据大小。
1.11.3.4.更好的平均恢复时间(MTTR)
本节介绍的配置将使服务器在出现故障后更快地恢复。 请参阅Deveraj Das和Nicolas Liochon博客文章HBase简介平均恢复时间(MTTR),以进行简要介绍。
HBASE-8354强制Namenode进入具有租约恢复请求的循环的过程很麻烦,但是在低超时以及如何导致更快的恢复(包括引用添加到HDFS的补丁程序)的末尾进行了大量的讨论。 阅读Varun Sharma的评论。 以下建议的配置是Varun提出并经过测试的建议。 确保您在最新版本的HDFS上运行,因此您具有他所引用的修复程序,并且自己添加了可帮助HBase MTTR的HDFS(例如HDFS-3703,HDFS-3712和HDFS-4791)。 Hadoop 1较晚)。 在RegionServer中设置以下内容。
<property>
<name>hbase.lease.recovery.dfs.timeout</name>
<value>23000</value>
<description>How much time we allow elapse between calls to recover lease.
Should be larger than the dfs timeout.</description>
</property>
<property>
<name>dfs.client.socket-timeout</name>
<value>10000</value>
<description>Down the DFS timeout from 60 to 10 seconds.</description>
</property>
在NameNode/DataNode端,设置以下内容以启用HDFS-3703,HDFS-3912中引入的“陈旧性(staleness)”。
<property>
<name>dfs.client.socket-timeout</name>
<value>10000</value>
<description>Down the DFS timeout from 60 to 10 seconds.</description>
</property>
<property>
<name>dfs.datanode.socket.write.timeout</name>
<value>10000</value>
<description>Down the DFS timeout from 8 * 60 to 10 seconds.</description>
</property>
<property>
<name>ipc.client.connect.timeout</name>
<value>3000</value>
<description>Down from 60 seconds to 3.</description>
</property>
<property>
<name>ipc.client.connect.max.retries.on.timeouts</name>
<value>2</value>
<description>Down from 45 seconds to 3 (2 == 3 retries).</description>
</property>
<property>
<name>dfs.namenode.avoid.read.stale.datanode</name>
<value>true</value>
<description>Enable stale state in hdfs</description>
</property>
<property>
<name>dfs.namenode.stale.datanode.interval</name>
<value>20000</value>
<description>Down from default 30 seconds</description>
</property>
<property>
<name>dfs.namenode.avoid.write.stale.datanode</name>
<value>true</value>
<description>Enable stale state in hdfs</description>
</property>
1.11.3.5.JMX
JMX(Java管理扩展)提供了内置的工具,使您可以监视和管理Java VM。 要从远程系统启用监视和管理,在启动Java VM时,需要设置系统属性com.sun.management.jmxremote.port(要启用JMX RMI连接的端口号)。 有关更多信息,请参见官方文档。从历史上看,除了上面提到的端口,JMX打开两个附加的随机TCP监听端口,这可能导致端口冲突问题。 (有关详细信息,请参见HBASE-10289)
或者,您可以使用HBase提供的基于协处理器的JMX实现。 要启用它,请在hbase-site.xml中添加以下属性:
<property>
<name>hbase.coprocessor.regionserver.classes</name>
<value>org.apache.hadoop.hbase.JMXListener</value>
</property>
请勿同时为Java VM设置com.sun.management.jmxremote.port。
当前,它支持Master和RegionServer Java VM。 默认情况下,JMX侦听TCP端口10102,您可以使用以下属性进一步配置端口:
<property>
<name>regionserver.rmi.registry.port</name>
<value>61130</value>
</property>
<property>
<name>regionserver.rmi.connector.port</name>
<value>61140</value>
</property>
在大多数情况下,注册表端口可以与连接器端口共享,因此您只需要配置regionserver.rmi.registry.port。 但是,如果要使用SSL通信,则必须将2个端口配置为不同的值。
默认情况下,密码验证和SSL通信是禁用的。 要启用密码身份验证,您需要更新hbase-env.sh,如下所示:
export HBASE_JMX_BASE="-Dcom.sun.management.jmxremote.authenticate=true \
-Dcom.sun.management.jmxremote.password.file=your_password_file \
-Dcom.sun.management.jmxremote.access.file=your_access_file"
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS $HBASE_JMX_BASE "
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS $HBASE_JMX_BASE "
请参见$JRE_HOME/lib/management下的示例password/access文件。
要通过密码验证启用SSL通信,请执行以下步骤:
#1. generate a key pair, stored in myKeyStore
keytool -genkey -alias jconsole -keystore myKeyStore
#2. export it to file jconsole.cert
keytool -export -alias jconsole -keystore myKeyStore -file jconsole.cert
#3. copy jconsole.cert to jconsole client machine, import it to jconsoleKeyStore
keytool -import -alias jconsole -keystore jconsoleKeyStore -file jconsole.cert
然后像下面这样更新hbase-env.sh:
export HBASE_JMX_BASE="-Dcom.sun.management.jmxremote.ssl=true \
-Djavax.net.ssl.keyStore=/home/tianq/myKeyStore \
-Djavax.net.ssl.keyStorePassword=your_password_in_step_1 \
-Dcom.sun.management.jmxremote.authenticate=true \
-Dcom.sun.management.jmxremote.password.file=your_password file \
-Dcom.sun.management.jmxremote.access.file=your_access_file"
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS $HBASE_JMX_BASE "
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS $HBASE_JMX_BASE "
最后,使用密钥库在客户端上启动jconsole:
jconsole -J-Djavax.net.ssl.trustStore=/home/tianq/jconsoleKeyStore
要在Master上启用HBase JMX实现,还需要在hbase-site.xml中添加以下属性:
<property> <name>hbase.coprocessor.master.classes</name> <value>org.apache.hadoop.hbase.JMXListener</value> </property>
端口配置的相应属性是master.rmi.registry.port(默认为10101)和master.rmi.connector.port(默认与Registry.port相同)
1.12.动态配置
可以更改配置的子集而无需重新启动服务器。 在HBase Shell中,操作update_config和update_all_config将提示一个服务器或所有服务器重新加载配置。
当前,正在运行的服务器中只能更改所有配置的一部分。 这些是这些配置:
表3.配置支持动态更改
| Key |
|---|
| hbase.ipc.server.fallback-to-simple-auth-allowed |
| hbase.cleaner.scan.dir.concurrent.size |
| hbase.regionserver.thread.compaction.large |
| hbase.regionserver.thread.compaction.small |
| hbase.regionserver.thread.split |
| hbase.regionserver.throughput.controller |
| hbase.regionserver.thread.hfilecleaner.throttle |
| hbase.regionserver.hfilecleaner.large.queue.size |
| hbase.regionserver.hfilecleaner.small.queue.size |
| hbase.regionserver.hfilecleaner.large.thread.count |
| hbase.regionserver.hfilecleaner.small.thread.count |
| hbase.regionserver.hfilecleaner.thread.timeout.msec |
| hbase.regionserver.hfilecleaner.thread.check.interval.msec |
| hbase.regionserver.flush.throughput.controller |
| hbase.hstore.compaction.max.size |
| hbase.hstore.compaction.max.size.offpeak |
| hbase.hstore.compaction.min.size |
| hbase.hstore.compaction.min |
| hbase.hstore.compaction.max |
| hbase.hstore.compaction.ratio |
| hbase.hstore.compaction.ratio.offpeak |
| hbase.regionserver.thread.compaction.throttle |
| hbase.hregion.majorcompaction |
| hbase.hregion.majorcompaction.jitter |
| hbase.hstore.min.locality.to.skip.major.compact |
| hbase.hstore.compaction.date.tiered.max.storefile.age.millis |
| hbase.hstore.compaction.date.tiered.incoming.window.min |
| hbase.hstore.compaction.date.tiered.window.policy.class |
| hbase.hstore.compaction.date.tiered.single.output.for.minor.compaction |
| hbase.hstore.compaction.date.tiered.window.factory.class |
| hbase.offpeak.start.hour |
| hbase.offpeak.end.hour |
| hbase.oldwals.cleaner.thread.size |
| hbase.oldwals.cleaner.thread.timeout.msec |
| hbase.oldwals.cleaner.thread.check.interval.msec |
| hbase.procedure.worker.keep.alive.time.msec |
| hbase.procedure.worker.add.stuck.percentage |
| hbase.procedure.worker.monitor.interval.msec |
| hbase.procedure.worker.stuck.threshold.msec |
| hbase.regions.slop |
| hbase.regions.overallSlop |
| hbase.balancer.tablesOnMaster |
| hbase.balancer.tablesOnMaster.systemTablesOnly |
| hbase.util.ip.to.rack.determiner |
| hbase.ipc.server.max.callqueue.length |
| hbase.ipc.server.priority.max.callqueue.length |
| hbase.ipc.server.callqueue.type |
| hbase.ipc.server.callqueue.codel.target.delay |
| hbase.ipc.server.callqueue.codel.interval |
| hbase.ipc.server.callqueue.codel.lifo.threshold |
| hbase.master.balancer.stochastic.maxSteps |
| hbase.master.balancer.stochastic.stepsPerRegion |
| hbase.master.balancer.stochastic.maxRunningTime |
| hbase.master.balancer.stochastic.runMaxSteps |
| hbase.master.balancer.stochastic.numRegionLoadsToRemember |
| hbase.master.loadbalance.bytable |
| hbase.master.balancer.stochastic.minCostNeedBalance |
| hbase.master.balancer.stochastic.localityCost |
| hbase.master.balancer.stochastic.rackLocalityCost |
| hbase.master.balancer.stochastic.readRequestCost |
| hbase.master.balancer.stochastic.writeRequestCost |
| hbase.master.balancer.stochastic.memstoreSizeCost |
| hbase.master.balancer.stochastic.storefileSizeCost |
| hbase.master.balancer.stochastic.regionReplicaHostCostKey |
| hbase.master.balancer.stochastic.regionReplicaRackCostKey |
| hbase.master.balancer.stochastic.regionCountCost |
| hbase.master.balancer.stochastic.primaryRegionCountCost |
| hbase.master.balancer.stochastic.moveCost |
| hbase.master.balancer.stochastic.maxMovePercent |
| hbase.master.balancer.stochastic.tableSkewCost |
244

被折叠的 条评论
为什么被折叠?



