Hbase学习02

第2章 Apache HBase配置

 

本章在“入门”一章中进行了扩展,以进一步解释Apache HBase的配置。 请仔细阅读本章,特别是基本先决条件,确保您的HBase测试和部署顺利进行,并防止数据丢失。 熟悉支持和测试期望.

 

2.1 配置文件

2.1.1 配置信息介绍

Apache HBase使用与Apache Hadoop相同的配置系统。 所有配置文件都位于conf /目录中,需要保持群集中每个节点的同步

2.1.2 配置文件简介

backup-masters

默认情况下不存在。一个纯文本文件,列出主机应在其上启动备份主进程的主机,每行一台主机。

 

hadoop-metrics2-hbase.properties

用于连接HBase Hadoop的Metrics2框架。 查看Hadoop Wiki条目

(https://wiki.apache.org/hadoop/HADOOP-6728-MetricsV2)了解有关Metrics2的更多信息。 仅包含默认情况下的注释示例。

 

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地址列表,每行一个,并且只应包含本地主机,如果群集中的每个节点都将在其本地主机接口上运行RegionServer。

 

Checking XML Validity

编辑XML时,最好使用支持XML的编辑器来确保语法是正确的

你的XML是格式良好的。 您也可以使用xmllint实用程序检查您的XML格式是否正确。 默认情况下,xmllint重新流动并将XML打印到标准输出。 要检查格式是否正确,并且只有在存在错误时才打印输出,请使用命令xmllint -noout filename.xml。

 

Keep Configuration In Sync Across the Cluster

 

在分布式模式下运行时,在对HBase配置进行编辑之后,确保将conf /目录的内容复制到集群的所有节点。 HBase不会为你做这个。 使用rsync,scp或其他安全的机制将配置文件复制或同步到您的节点。对于大多数配置,服务器需要重新启动以获取更改。动态配置是一个例外情况,稍后将在后面介绍。

2.2 基本先决条件

2.2.1 JDK矩阵表

HBase Version

JDK 7

JDK 8

2.0

Not Supported (http://search- hadoop.com/m/YGbbsPxZ723m3as)

Yes(支持)

1.3

yes

Yes(支持)

1.2

yes

Yes(支持)

1.1

yes

Running with JDK 8 will work but is not well tested.(用JDK8测试可以工作但是没有完全测试)

 

 

This section lists required services and some required system configuration. Table 2. Java

 

 

 

 

  HBase将不会用Java 6编译或编译。

  您必须在集群的每个节点上设置JAVA_HOME。 hbase-env.sh提供了一个方便的机制来做到这一点.

 

2.2.2 操作系统使用设置

SSH

HBase广泛使用安全Shell(ssh)命令和实用程序在集群节点之间进行通信。 群集中的每台服务器都必须运行ssh,以便可以管理Hadoop和HBase守护程序。 您必须能够使用共享密钥而不是密码通过SSH(包括本地节点)从主服务器和任何备份主服务器连接到所有节点。 您可以在“Procedure:Configure Passwordless SSH Access”(配置无密码SSH访问)中看到Linux或Unix系统中这种设置的基本方法。 如果群集节点使用OS X,请参阅“SSH:设置远程桌面和启用”一节。

Self-Login (https://wiki.apache.org/hadoop/Running_Hadoop_On_OS_X_10.5_64-bit_%28Single-Node_Cluster%29) on the Hadoop wiki.

DNS

HBase使用本地主机名来自我报告其IP地址。 正向和反向DNS解析必须在0.92.0之前的HBase版本中工作。 hadoop-dns-checker(https://github.com/sujee/hadoop-dns-checker)工具可用于验证DNS在群集上正常工作。 项目README文件提供了有关使用的详细说明。

Loopback IP

在hbase-0.96.0之前,HBase只使用IP地址127.0.0.1来引用localhost,这是不可配置的。 有关更多详细信息,请参阅Loopback IP。

NTP

群集节点上的时钟应该同步。少量的变化是可以接受的,但是大量的偏斜会导致不稳定和意外的行为。 如果在群集中看到无法解释的问题,则时间同步是首先要检查的事项之一。 建议您在群集上运行网络时间协议(NTP)服务或其他时间同步机制,并且所有节点都查找相同的服务以进行时间同步。 请参阅Linux文档项目(TLDP)上的基本NTP配置(http://www.tldp.org/LDP/sag/html/basic-ntp-config.html)以设置NTP。

 

Limits on Number of Files and Processes (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上打开的文件的潜在数量的粗略公式.

Calculate the Potential Number of Open Files

 

(StoreFiles per ColumnFamily) x (regions per RegionServer)

EG:(每个ColumnFamily的StoreFiles)x(每个RegionServer的区域)

 

例如,假设一个模式每个区域有3个ColumnFamilies,每个ColumnFamily平均有3个StoreFiles,每个RegionServer有100个区域,JVM将打开3 * 3 * 100 = 900个文件描述符,不包括打开的JAR文件,配置 文件和其他。 打开一个文件不需要很多资源,而且允许用户打开太多文件的风险很小.

 

另一个相关设置是允许用户一次运行的进程数量。 在Linux和Unix中,进程的数量是使用ulimit -u命令设置的。 这不应与nproc命令混淆,该命令控制给定用户可用的CPU数量。 在负载下,ulimit -u太低会导致OutOfMemoryError异常。 从2011年开始,请参阅Jack Levin在hbase-users邮件列表中的主要HDFS问题.

 

为运行HBase进程的用户配置文件描述符和进程的最大数量是操作系统配置,而不是HBase配置。 确保为实际运行HBase的用户更改设置也很重要。 要查看哪个用户启动了HBase,以及该用户的ulimit配置,请查看该实例的HBase日志的第一行。 你的hadoop集群上一个有用的读取设置配置是Aaron Kimball的配置参数:你可以忽略什么?

Example 5. ulimit Settings on Ubuntu

 

 

Linux Shell

所有HBase附带的shell脚本都依赖于GNU Bash(http://www.gnu.org/software/bash)shell

Windows/Linux

在HBase 0.96之前,在Microsoft Windows上运行HBase仅限于测试目的。 不建议在Windows机器上运行生产系统.生产Hbase必须搭建在Linux系统中。为了性能与安全性

 

 

 

2.2.3    Hadoop-HDFS基础与注意事项  Hadoop (https://hadoop.apache.org)

下表总结了每个HBase版本支持的Hadoop版本。 基于HBase的版本,您应该选择最合适的Hadoop版本。 您可以使用Apache Hadoop或Hadoop的供应商分发。 这里没有任何区别。 有关Hadoop供应商的信息,请参阅Hadoop wiki(https://wiki.apache.org/hadoop/Distributions%20and%20Commercial%20Support)。

2. 基Hadoop 2.x is recommended(推荐).

Hadoop 2.x速度更快,包含短路读取等功能,这将有助于提高您的HBase随机读取配置文件。 Hadoop 2.x还包含重要的错误修复,可以改善您的整体HBase体验。 HBase不支持使用早期版本的Hadoop。 请参阅下表

特定于不同HBase版本的要求。

Hadoop 3.x仍处于早期版本的发布阶段,HBase社区尚未对生产用例进行充分的测试。

Use the following legend to interpret this table:

 Hadoop版本支持矩阵            

"S" = supported

"X" = not supported

"NT" = Not tested

 

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

NT

NT

NT

NT

Hadoop Pre-2.6.1 and JDK 1.8 Kerberos

在Kerberos(认证方式)环境中使用2.6.1之前版本的Hadoop版本和JDK 1.8时,HBase服务器可能会失败并中止

   由于Kerberos密钥表重新登录错误。 JDK 1.7(1.7.0_80)的后期版本也有问题。 参考

HADOOP-10786(https://issues.apache.org/jira/browse/HADOOP-10786)了解更多详情。 在这种情况下考虑升级到Hadoop 2.6.1+。

Hadoop 2.6.x

基于2.6.x行的Hadoop发行版必须具有HADOOP-11710

if(https://issues.apache.org/jira/browse/HADOOP-11710),如果您计划在HDFS加密区域之上运行HBase, 否则会导致群 故障和数据丢失。 此修补程序存在于Apache Hadoop版本2.6.1+中。.

 

Hadoop 2.7.x

        Hadoop版本2.7.0未经测试或不受支持,因为Hadoop PMC明确将该版本标记为不稳定。 (参考Apache Hadoop 2.7.0的公告(https://s.apache.org/hadoop-2.7.0-announcement)。)

 

Hadoop 2.8.x

Hadoop版本2.8.0和2.8.1未经过测试或支持,因为Hadoop PMC明确标记了该版本

        释放不稳定。 (参考Apache Hadoop 2.8.0(https://s.apache.org/hadoop-2.8.0-announcement)的公告和Apache Hadoop

2.8.1(https://s.apache.org/hadoop-2.8.1-公告)。)

替换捆绑HBase的Hadoop!

 

由于HBase依赖于Hadoop,它将Hadoop jar的一个实例捆绑在它的lib目录下。 捆绑的jar只能用于独立模式。 在分布式模式下,群集中出现的Hadoop版本与HBase下的版本匹配非常重要。 将HBase lib目录中的hadoop jar替换为您在群集上运行的hadoop jar,以避免版本不匹配问题。 确保在整个集群中更换HBase中的jar。 Hadoop版本不匹配问题有各种各样的表现,但通常都看起来像挂起。

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>


XML

 

 

进行上述配置后,务必重新启动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:被Xciever欺骗(http://ccgtech.blogspot.com/2010/02/hadoop-HDFS-欺骗逐xciever.html))。

ZooKeeper Requirements

ZooKeeper 3.4.x是必需的。 HBase利用了自Zookeeper 3.4.0以来的多功能性。该

hbase.zookeeper.useMulti配置属性默认为true。 请参考HBASE-12241(regionServer的崩溃

(https://issues.apache.org/jira/browse/HBASE-12241)和HBASE-6775(在可用于HBASE-6710 0.92 / 0.94兼容性修复时使用ZK.multi)( https://issues.apache.org/jira/browse/HBASE-6775)作为背景。 该属性已被弃用,并且HBase 2.0中始终启用useMulti.

  5 HBase运行模式:独立和分布式

HBase有两种运行模式:独立和分布式。 开箱即用,HBase以独立模式运行。 无论您的模式如何,您都需要通过编辑HBase conf目录中的文件来配置HBase。 至少,您必须编辑conf / hbase-env.sh来告诉HBase要使用哪个java。 在这个文件中,您可以设置HBase环境变量,例如JVM的heapsize和其他选项,日志文件的首选位置等。将JAVA_HOME设置为指向您的Java安装的根目录。.

Standalone HBase

这是默认模式。 独立模式是在快速入门部分中描述的。 在独立模式下,HBase不使用HDFS--它使用本地文件系统 - 而是在同一个JVM中运行所有HBase守护进程和本地ZooKeeper。 ZooKeeper绑定到一个众所周知的端口,客户端可以和HBase进行通信.

独立于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>

分布式

分布式模式可以细分为分布式,但所有守护进程都运行在单个节点上--a.k.a.伪分布式和完全分布式,其中守护进程分布在集群中的所有节点上。 伪分布式与完全分布式命名法来自Hadoop.

 

伪分布式模式可以针对本地文件系统运行,也可以针对Hadoop分布式文件系统(HDFS)的实例运行。 完全分布式模式只能在HDFS上运行。 有关如何设置HDFS,请参阅Hadoop文档(https://hadoop.apache.org/docs/current/)。 在Hadoop 2上设置HDFS的一个很好的步骤可以在http://www.alexjf.net/blog/distributed-systems/hadoop-yarn-installation-definitive-guide.

伪分布式

Pseudo-Distributed Quickstart(伪分布式快读入门)

   快速入门章节已添加快速入门。 请参阅quickstart-pseudo。 原本在本节中的一些信息已经移到那里.

伪分布式模式就是在单个主机上运行的完全分布式模式。 仅使用此HBase配置进行测试和原型设计。 请勿将此配置用于生产

Fully-distributed(完全分布式)

默认情况下,HBase以独立模式运行。 提供独立模式和伪分布模式用于小规模测试。 对于生产环境,建议使用分布式模式。 在分布式模式下,HBase守护进程的多个实例在集群中的多个服务器上运行.

 

就像在伪分布式模式中一样,完全分布式的配置要求您将hbase.cluster.distributed属性设置为true。 通常情况下,hbase.rootdir被配置为指向高度可用的HDFS文件系统.

 

此外,群集配置为使多个群集节点成为RegionServer,ZooKeeper QuorumPeers和备份HMaster服务器。 这些配置基础都以快速完全分布的方式进行演示.

 

Distributed  RegionServers(分布式RegionServers)

通常,群集将包含多个运行在不同服务器上的Region Server,以及主要和备份Master和ZooKeeper守护程序。 主服务器上的conf / regionservers文件包含Region Server与此群集关联的主机列表。 每个主机都在一条独立的线路上。 当主服务器启动或停止时,此文件中列出的所有主机将启动和停止其RegionServer进程.

ZooKeeper and HBase

有关HBase的ZooKeeper设置说明,请参见ZooKeeper部分.

Example 6. Example Distributed HBase Cluster

 

这是一个分布式HBase集群的简单的conf / hbase-site.xml。 用于实际工作的群集将包含更多自定义配置参数。 大多数HBase配置指令都具有默认值,除非在hbase-site.xml中覆盖该值,否则将使用这些默认值。 有关更多信息,请参阅“配置文件”.

 

<configuration>                                                                                                       XML

<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                                                                                                   JAVA

node-b.example.com node-c.example.com

 

这是conf / backup-masters文件的示例,其中包含应运行备份主实例的每个节点的列表。 除非主主站变为不可用,否则备份主站实例将处于空闲状态.

 

node-b.example.com                                                                                                   JAVA

node-c.example.com

Distributed HBase Quickstart(分布式Hbase快速入门)

请参阅快速入门 - 完全分发,了解包含多个ZooKeeper,备份HMaster和RegionServer实例的简单三节点群集配置.

过程:HDFS客户端配置

  1. 注意,如果您在Hadoop集群上进行了HDFS客户端配置更改(例如HDFS客户端的配置指令),而不是服务器端配置,则必须使用以下方法之一来启用HBase以查看和使用这些配置 配置更改:
    1. 将指向HADOOP_CONF_DIR的指针添加到hbase-env.sh中的HBASE_CLASSPATH环境变量.
    2. 在$ {HBASE_HOME} / conf下添加hdfs-site.xml(或hadoop-site.xml)或更好的符号链接, or
    3. 如果只有一小部分HDFS客户端配置,将它们添加到hbase-site.xml.

 

这种HDFS客户端配置的一个例子是dfs.replication。 例如,如果您希望以5的复制因子运行,则HBase将创建缺省值为3的文件,除非您执行上述操作以使配置可用于HBase.

 

 

Running and Confirming Your  Installation(运行并确认你的安装)

确保HDFS先运行。 通过在HADOOP_HOME目录中运行bin / start-hdfs.sh来启动和停止Hadoop HDFS守护进程。 你可以通过测试把文件放进Hadoop文件系统来获得正确的启动。 HBase通常不使用MapReduce或YARN守护进程。 这些不需要启动.

 

如果您正在管理自己的ZooKeeper,请启动它并确认它正在运行,否则HBase将启动ZooKeeper作为其启动过程的一部分.

Start HBase with the following command:

 

bin/start-hbase.sh

 

Run the above from the HBASE_HOME (从HBASE_HOME目录运行以上)

 

您现在应该有一个正在运行的HBase实例。 HBase日志可以在日志子目录中找到。 检查出来,特别是如果HBase起动困难.

 

HBase也提供了一个UI列出重要的属性。 默认情况下,它被部署在16010端口的主控主机上(默认情况下,HBase RegionServers侦听端口16020,并在端口16030建立一个信息HTTP服务器)。 如果主服务器在默认端口上运行在名为master.example.org的主机上,请将浏览器指向http://master.example.org:16010以查看Web界面.

 

一旦HBase启动,请参阅shell练习部分,了解如何创建表,添加数据,扫描插入以及最终禁用并删除表.

To stop HBase after exiting the HBase shell enter

 

……

 

关机可能需要一些时间才能完成。 如果您的集群由多台机器组成,则可能需要更长的时间。 如果您正在运行分布式操作,那么在停止Hadoop守护进程之前,一定要等到HBase完全关闭.

 

2.3  Default Configuration

2.3.1 hbase-site.xml and  hbase-default.xml

就像在Hadoop中将特定于站点的HDFS配置添加到hdfs-site.xml文件一样,对于HBase,特定于站点的定制进入文件conf/hbase-site.xml。 有关可配置属性的列表,请参见下面的hbase默认配置或查看src/main/ resources中的HBase源代码中的原始hbase-default.xml源文件.

 

并不是所有的配置选项都会把它传给hbase-default.xml。 一些配置只会出现在源代码中; 识别这些变化的唯一方法是通过代码审查.

目前,这里的变化将需要重启集群来注意到这个变化.

2.3.2 HBase Default Configuration

hbase.tmp.dir

Description

本地文件系统上的临时目录。 将此设置更改为指向比“/tmp”更持久(重启不会清除)的位置,这是java.io.tmpdir的常见解决方案,因为在重新启动计算机时清除了“/tmp”目录。

Default

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

 

hbase.rootdir

Description

目录服务器共享的目录,HBase保持不变。 该URL应该是“完全限定的”以包括文件系统方案。 例如,要指定HDFS实例的namenode在端口9000上的namenode.example.org上运行的HDFS目录“/hbase”,请将此值设置为:hdfs//namenode.example.org:9000 /hbase。 默认情况下,我们写的是无论${hbase.tmp.dir}是否被设置 - 通常是/tmp - 所以改变这个配置,否则所有的数据都会在机器重启时丢失.

Default

${hbase.tmp.dir}/hbase

 

hbase.cluster.distributed

Description

群集所处的模式。对于独立模式,可能的值为false,对于分布式模式,可能的值为true。 如果为false,启动将在一个JVM中一起运行所有HBase和ZooKeeper守护进程.生产环境必须显式指为true.

Default

false

 

hbase.zookeeper.quorum

Description

逗号分隔的ZooKeeper集合中的服务器列表(这个配置应该被命名为hbase.zookeeper.ensemble)。 例如,“host1.mydomain.com,host2.mydomain.com,host3.mydomain.com”。 默认情况下,对于本地和伪分布式操作模式,将其设置为localhost。 对于完全分布式安装,应将其设置为ZooKeeper集成服务器的完整列表。 如果在hbase-env.sh中设置了HBASE_MANAGES_ZK,这是hbase将作为群集启动/停止的一部分启动/停止ZooKeeper的服务器列表。 客户端,我们将把这个集合成员的列表,并把它与hbase.zookeeper.property.clientPort配置放在一起。 并将其作为connectString参数传递给zookeeper构造函数.生产环境最优使用独立zk奇数节点,根据具体情况安装对应zk版本与JDK版本,后续会讲解版本适配表。

Default

localhost

 

zookeeper.recovery.retry.maxsleeptime

Description

在重试zookeeper操作之前的最大睡眠时间(以毫秒为单位),这里需要最大时间,以便睡眠时间不会无限增长

Default

 

60000

 

hbase.local.dir

Description

将本地文件系统上的目录用作本地存储

Default

${hbase.tmp.dir}/local/

 

hbase.master.port

Description

HBase Master应该绑定的端口.

Default

16000

 

hbase.master.info.port

Description

HBase Master Web UI的端口。 如果您不想运行UI实例,请将其设置为-1.

Default

16010

 

hbase.master.info.bindAddress

Description

HBase Master Web UI的绑定地址(限制可访问16010端口的ip,0.0.0.0表示全部监听,即为全都可以访问)

Default

0.0.0.0

 

hbase.master.logcleaner.plugins

Description

由LogsCleaner服务调用的BaseLogCleanerDelegate的逗号分隔列表。 这些WAL清洁工具类是按顺序调用的,所以把清洁累放在最前面。 要实现您自己的BaseLogCleanerDelegate,只需将其放入HBase的类路径中,并在此添加完全限定的类名。 始终在列表中添加上面的默认日志清理工具.

Default

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

 

hbase.master.logcleaner.ttl

Description

WAL在归档({hbase.rootdir}/oldWALs)目录中保留多久,之后将由主线程清除。该值以毫秒为单位.oldWALs目录表示WALs被刷进磁盘HFile持久化后会移动到oldWALs目录,删了也没啥关系的。

Default

600000

 

hbase.master.procedurewalcleaner.ttl

Description

程序WAL保留在{hbase.rootdir}/oldWALs/masterProcedureWALs目录中的时间,单位毫秒。过期后会被Master线程清除。默认:604800000(事务有关。)

Default

604800000

 

hbase.master.hfilecleaner.plugins

Description

由HFileCleaner服务调用的BaseHFileCleanerDelegate的逗号分隔列表。 这些HFile清洁工按顺序调用,所以把清洁剂放在最前面。 要实现您自己的BaseHFileCleanerDelegate,只需将其放入HBase的类路径中,并在此添加完全限定的类名。 总是在列表中添加上面的默认日志清除程序,因为它们将被覆盖在hbase-site.xml中.

 

Default

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

 

hbase.master.infoserver.redirect

Description

Master是否监听Master Web UI端口(hbase.master.info.port)并将请求重定向到由Master和RegionServer共享的Web UI服务器。配置。 当主服务区域时是有意义的(不是默认的).

Default

true

 

hbase.master.fileSplitTimeout

Description

分割一个区域,在放弃尝试之前等待文件分割步骤需要多长时间。 默认值:600000.这个设置在hbase-1.x中被称为hbase.regionserver.fileSplitTimeout。 拆分现在运行主端,因此重命名(如果找到'hbase.master.fileSplitTimeout'设置,将使用它来填充当前'hbase.master.fileSplitTimeout'配置.

Default

600000

 

hbase.regionserver.port

Description

HBase RegionServer绑定的端口.(RPC通信)

Default

16020

 

hbase.regionserver.info.port

Description

HBase RegionServer Web UI的端口如果您不希望RegionServer UI运行,请将其设置为-1.

Default

16030

 

hbase.regionserver.info.bindAddress

Description

HBase RegionServer Web UI的地址(0.0.0.0表示均可访问)

Default

0.0.0.0

 

hbase.regionserver.info.port.auto

Description

Master或RegionServer UI是否应搜索要绑定的端口。 如果hbase.regionserver.info.port已被使用,则启用自动端口搜索。 用于测试,默认关闭.

Default

false

 

hbase.regionserver.handler.count

Description

在RegionServers上启动RPC Listener实例的计数。 Master使用相同的属性来处理主处理程序的数量。 太多的处理者可能会适得其反。 使其成为CPU数量的倍数。 如果主要是只读的,处理程序计数接近CPU计数做得很好。 从CPU数量的两倍开始,并从那里调整.

Default

30

 

hbase.ipc.server.callqueue.handler.factor

Description

 

确定呼叫队列数量的因素。 值为0表示在所有处理程序之间共享单个队列。 值为1意味着每个处理程序都有自己的队列.

Default

0.1

 

hbase.ipc.server.callqueue.read.ratio

Description

将调用队列分成读写队列。指定的时间间隔(应该在0.0到1.0之间)将乘以呼叫队列的数量。值为0表示不分割调用队列,这意味着读取和写入请求将被推送到相同的一组队列中。低于0.5的值意味着将比写入队列更少的读取队列。值为0.5意味着将有相同数量的读写队列。大于0.5的值意味着将有更多的读队列比写队列。值为1.0意味着除了一个之外的所有队列都用于分派读取请求。示例:假设呼叫队列的总数为10,则read.ratio为0意味着:10个队列将同时包含读/写请求。 0.3的读取比率意味着:3个队列将只包含读取请求,7个队列将只包含写入请求。 0.5的read.ratio表示:5个队列将只包含读取请求,5个队列将只包含写入请求。 0.8的read.ratio意味着:8个队列将只包含读取请求,2个队列将只包含写入请求。 1的read.ratio表示:9个队列将只包含读取请求,1个队列将只包含写入请求.

Default

0

 

hbase.ipc.server.callqueue.scan.ratio

Description

鉴于读取的调用队列的数量(根据调用队列的总数乘以callqueue.read.ratio计算),scan.ratio属性将把读取的调用队列拆分为小读取和长读取队列。低于0.5的值意味着长读队列比短读队列少。值为0.5意味着将有相同数量的短读取和长读取队列。大于0.5的值意味着将会有比长读取队列更多的长读取队列值0或1表示使用同一组队列进行获取和扫描。

示例:给定读取调用队列的总数为8,scan.ratio为0或1意味着:8个队列将包含长读请求和短读请求。 0.3的scan.ratio表示:2个队列只包含长读请求,6个队列只包含短读请求。 0.5的scan.ratio表示:4个队列只包含长读请求,4个队列只包含短读请求。 0.8的scan.ratio意味着:6个队列只包含长读请求,2个队列只包含短读请求.

Default

0

 

hbase.regionserver.msginterval

Description

从RegionServer到Master的消息间隔(以毫秒为单位).

Default

3000

 

hbase.regionserver.logroll.period

Description

无论有多少次编辑,我们将滚动提交日志的时间段。

Default

3600000

 

hbase.regionserver.logroll.errors.tolerated

Description

在触发服务器中止之前,我们将允许连续的WAL关闭错误的数量。 如果在日志滚动过程中关闭当前WAL书写器失败,则设置为0将导致区域服务器中止。 即使是一个很小的值(2或3)也会让区域服务器承担瞬间的HDFS错误.

Default

2

 

hbase.regionserver.hlog.reader.impl

Description

WAL文件阅读器的实现.

Default

org.apache.hadoop.hbase.regionserver.wal.ProtobufLogReader

 

hbase.regionserver.hlog.writer.impl

Description

WAL文件编写器的实现.

Default

org.apache.hadoop.hbase.regionserver.wal.ProtobufLogWriter

 

hbase.regionserver.global.memstore.size

Description

在新更新被阻止并刷新之前,区域服务器中所有存储区的最大大小。 默认为堆的40%(0.4)。 更新被阻止,强制刷新直到区域服务器中的所有内存大小都达到hbase.regionserver.global.memstore.size.lower.limit。 此配置中的默认值已被故意留空,以便尊重旧的hbase.regionserver.global.memstore.upperLimit属性(如果存在).

 

默认none

 

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

Description

强制刷新之前,区域服务器中所有存储区的最大大小。 默认为hbase.regionserver.global.memstore.size(0.95)的95%。 当由于内存限制而导致更新被阻塞时,此值的100%会导致最小可能的刷新。 此配置中的默认值已被故意留空,以便尊重旧的hbase.regionserver.global.memstore.lowerLimit属性(如果存在).

 

默认 none

 

hbase.systemtables.compacting.memstore.type

Description

确定用于系统表(如META,名称空间表等)的memstore的类型。默认情况下,NONE是类型,因此我们对所有系统表使用默认的memstore。 如果我们需要为系统表使用压缩存储器,那么将这个属性设置为BASIC / EAGER

Default

NONE

 

hbase.regionserver.optionalcacheflushinterval

Description

在自动刷新之前,编辑在内存中的最长时间。 默认1小时。 将其设置为0将禁用自动Flush.

Default

3600000

 

hbase.regionserver.dns.interface

Description

区域服务器应从中报告其IP地址的网络接口的名称.

Default

default

 

hbase.regionserver.dns.nameserver

Description

 

域名服务器应使用的名称服务器(DNS)的主机名或IP地址,以确定主机用于通信和显示的主机名.

Default

default

 

hbase.regionserver.region.split.policy

Description

分割政策决定了一个地区应该何时拆分。 当前可用的各种其他拆分策略是:BusyRegionSplitPolicy,ConstantSizeRegionSplitPolicy,DisabledRegionSplitPolicy,DelimitedKeyPrefixRegionSplitPolicy,KeyPrefixRegionSplitPolicy和SteppingSplitPolicy。 DisabledRegionSplitPolicy会阻止手动区域分割.

Default

org.apache.hadoop.hbase.regionserver.SteppingSplitPolicy

 

hbase.regionserver.regionSplitLimit

Description

限制区域数量,之后不再发生区域分割。 这不是硬性限制区域数量,而是作为区域服务商在一定限度之后停止拆分的指导方针。 默认设置为1000.

Default

1000

 

zookeeper.session.timeout

Description

ZooKeeper会话超时(以毫秒为单位)。 它以两种不同的方式使用。 首先,这个值用于HBase用来连接到集合的ZK客户端。 当它启动一个ZK服务器时它也被HBase使用,它被作为'maxSessionTimeout'传递。 请参阅http://hadoop.apache.org/zookeeper/docs/current/zookeeperProgrammers.html#ch_zkSessions。 例如,如果HBase区域服务器连接到也由HBase管理的ZK集合,那么会话超时将是由此配置指定的。 但是,连接到以不同配置管理的合奏的区域服务器将受到合奏的maxSessionTimeout的限制。 所以,尽管HBase可能会建议使用90秒,但是整体的最大超时时间可能会低于此值,并且会优先考虑。 ZK目前的默认值是40秒,比HBase的低.

Default

90000

 

zookeeper.znode.parent

Description

ZooKeeper中用于HBase的Root ZNode。 所有配置了相对路径的HBase的ZooKeeper文件都会在这个节点下。 默认情况下,所有的HBase的ZooKeeper文件路径都配置了一个相对路径,所以它们都会在这个目录下,除非改变.

Default

/hbase

 

zookeeper.znode.acl.parent

Description

Root ZNode用于访问控制列表.

Default

acl

 

hbase.zookeeper.dns.interface

Description

ZooKeeper服务器应从中报告其IP地址的网络接口的名称.

Default

default hbase.zookeeper.dns.nameserver

ZooKeeper服务器应该使用的名称服务器(DNS)的主机名或IP地址,以确定主站用于通信和显示的主机名.

Default

default

 

hbase.zookeeper.peerport

Description

ZooKeeper同伴使用的端口彼此通信。 有关更多信息,请参阅http://hadoop.apache.org/zookeeper/docs/r3.1.1/zookeeperStarted.html#sc_RunningReplicatedZooKeeper。.

Default

2888

 

hbase.zookeeper.leaderport

Description

ZooKeeper用于领导者选举的端口。 有关更多信息,请参阅http://hadoop.apache.org/zookeeper/docs/r3.1.1/zookeeperStarted.html#sc_RunningReplicatedZooKeeper。.

Default

3888

 

hbase.zookeeper.property.initLimit

Description

来自ZooKeeper的配置zoo.cfg的属性。 初始同步阶段可以采用的时钟周期数.

Default

10

 

hbase.zookeeper.property.syncLimit

Description

来自ZooKeeper的配置zoo.cfg的属性。 发送请求和获取确认之间可以传递的滴答数量.

Default

5

 

hbase.zookeeper.property.dataDir

Description

来自ZooKeeper的配置zoo.cfg的属性。 快照存储的目录

Default

${hbase.tmp.dir}/zookeeper

 

hbase.zookeeper.property.clientPort

Description

来自ZooKeeper的配置zoo.cfg的属性。 客户端将连接的端口.

Default

2181

 

hbase.zookeeper.property.maxClientCnxns

Description

来自ZooKeeper的配置zoo.cfg的属性。 限制由IP地址标识的单个客户端可能对ZooKeeper集合的单个成员产生的并发连接数量(在套接字级别)。 设置为高以避免独立运行和伪分布式运行的zk连接问题.

Default

300

 

hbase.client.write.buffer

BufferedMutator写入缓冲区的默认大小(以字节为单位)。 一个更大的缓冲区需要更多的内存 - 在客户端和服务器端,因为服务器实例化传递的写入缓冲区来处理它 - 但是更大的缓冲区大小减少了RPC的数量。 对于估计使用的服务器端内存,评估 hbase.client.write.buffer * hbase.regionserver.handler.count

Default

2097152

 

hbase.client.pause

Description

一般客户端暂停值。 在运行重试失败的get,区域查找等等之前,主要用作等待的值。请参阅hbase.client.retries.number以了解如何从此初始暂停量回退,以及此暂停如何在重试时运行.

Default

100

 

hbase.client.pause.cqtbe

Description

是否为CallQueueTooBigException(cqtbe)使用特殊的客户端暂停。 如果您观察到来自同一个RegionServer的频繁的CQTBE,并且其中的呼叫队列保持充满,则将此属性设置为比hbase.client.pause更高的值

 

Default none

 

hbase.client.retries.number

Description

最大重试次数 用作所有可重试操作(如获取单元格值,启动行更新等)的最大值。重试间隔是基于hbase.client.pause的粗略函数。 起初我们在这段时间重试,但后来退后,我们很快就达到每十秒钟重试一次。 请参阅HConstants#RETRY_BACKOFF了解备份如何提升。 改变这个设置和hbase.client.pause来适应你的工作量.

Default

15

 

hbase.client.max.total.tasks

Description

单个HTable实例发送到集群的最大并发突变任务数.

Default

100

 

hbase.client.max.perserver.tasks

Description

单个HTable实例将发送到单个区域服务器的最大并发突变任务数.

Default

2

 

hbase.client.max.perregion.tasks

Description

客户端将维护到单个Region的最大并发突变任务数。 也就是说,如果已经有hbase.client.max.perregion.tasks写入这个区域,那么新的放入将不会被发送到这个区域,直到一些写入完成.

Default

1

 

hbase.client.perserver.requests.threshold

Description

 

所有客户端线程(进程级别)中一个服务器的并发未决请求的最大数量。 超过请求将立即抛出ServerTooBusyException,以防止用户的线程被占用和只被一个缓慢的区域服务器阻止。 如果使用固定数量的线程以同步方式访问HBase,请将此值设置为与线程数量相关的适当值,这些值将对您有所帮助。 有关详细信息,请参阅https://issues.apache.org/jira/browse/HBASE-16388

Default

2147483647

 

hbase.client.scanner.caching

Description

如果从本地,客户端内存中未提供,则在扫描程序上调用下一次时尝试获取的行数。 此配置与hbase.client.scanner.max.result.size一起使用,可以有效地使用网络。 缺省值默认为Integer.MAX_VALUE,这样网络将填充由hbase.client.scanner.max.result.size定义的块大小,而不受特定行数的限制,因为行的大小随表格的不同而不同。 如果您事先知道扫描中不需要超过一定数量的行,则应通过扫描#setCaching将此配置设置为该行限制。 缓存值越高,扫描器的速度越快,但是会占用更多的内存,而当缓存空置时,下一次调用的时间可能会越来越长。 请勿设置此值,以便调用之间的时间大于扫描器超时; 即hbase.client.scanner.timeout.period

Default

2147483647

 

hbase.client.keyvalue.maxsize

Description

指定KeyValue实例的组合的最大允许大小。 这是为保存在存储文件中的单个条目设置上限。 由于它们不能被分割,所以有助于避免因为数据太大而导致地区不能被分割。 将此设置为最大区域大小的一小部分似乎是明智的。 将其设置为零或更少将禁用检查.

Default

10485760

 

hbase.server.keyvalue.maxsize

Description

单个单元格的最大允许大小,包括值和所有关键组件。 值为0或更小将禁用检查。 默认值是10MB。 这是保护服务器免受OOM情况的安全设置.

Default

10485760

 

hbase.client.scanner.timeout.period

Description

客户端扫描程序的租期以毫秒为单位.

Default

60000

 

hbase.client.localityCheck.threadPoolSize

Default

2

 

hbase.bulkload.retries.number

Description

最大重试次数 这是在面对分裂操作时尝试原子批量加载的最大迭代次数0意味着永不放弃.

Default

10

 

hbase.master.balancer.maxRitPercent

 

 

Description

平衡时转换区域的最大百分比。 默认值是1.0。 所以没有平衡器节流。 如果将此配置设置为0.01,则意味着在平衡时转换中最多有1%的区域。 那么当平衡时,集群的可用性至少为99%.

Default

1.0

 

hbase.balancer.period

Description

区域平衡器在主站运行的时间段.

Default

300000

 

hbase.normalizer.period

Description

区域标准化程序在主程序中运行的时段.

Default

300000

 

hbase.regions.slop

Description

如果任何区域服务器具有平均值+(平均*斜率)区域,则重新平衡。 StochasticLoadBalancer(默认负载均衡器)中此参数的默认值为0.001,其他负载均衡器(即SimpleLoadBalancer)中的默认值为0.2。

Default

0.001

 

hbase.server.thread.wakefrequency

Description

在两次搜索之间休息的时间(以毫秒为单位)。 用作日志滚筒等服务线程的睡眠间隔.

Default

10000

 

hbase.server.versionfile.writeattempts

Description

在放弃之前重试尝试写入版本文件的次数。 每个尝试都由hbase.server.thread.wake频率毫秒分隔.

Default

3

 

hbase.hregion.memstore.flush.size

Description

如果memstore的大小超过此字节数,Memstore将被刷新到磁盘。 值由每个hbase.server.thread.wakefrequency运行的线程检查.

Default

134217728

 

hbase.hregion.percolumnfamilyflush.size.lower.bound.min

Description

如果使用了FlushLargeStoresPolicy,并且有多个列族,那么每当我们达到完全的memstore限制时,我们就会找出所有内存超过“下限”的列族,只有在保留其他内存的同时刷新它们。 默认情况下,“下限”将是“hbase.hregion.memstore.flush.size / column_family_number”

这个属性的值大于那个值。 如果没有一个家族的memstore大小超过下限,所有的memstore都将被刷新(就像往常一样)。

Default

16777216

 

hbase.hregion.preclose.flush.size

Description

如果我们关闭时某个地区的存储空间大于或等于这个大小,则可以运行“预先刷新”来清除存储区,然后再放置区域关闭标记并使区域脱机。 关闭时,在关闭标志下运行刷新以清空内存。 在此期间,该地区处于离线状态,我们没有进行任何写入。 如果memstore内容很大,则此刷新可能需要很长时间才能完成。 前置是为了清除大部分的memstore,然后放上关闭标志并把该区域设置为脱机状态,这样在关闭标志下运行的刷新没有什么作用.

Default

5242880

 

hbase.hregion.memstore.block.multiplier

Description

如果memstore具有hbase.hregion.memstore.block.multiplier次数hbase.hregion.memstore.flush.size字节,则阻止更新。 在更新流量尖峰期间有用的防止失控的memstore。 如果没有上限,memstore就会填满,当刷新结果flush文件需要很长时间来压缩或拆分,或者更糟的是,我们OOME.

Default

4

 

hbase.hregion.memstore.mslab.enabled

Description

启用MemStore-Local分配缓冲区,该功能可用于在繁重的写入负载下防止堆碎片。 这可以减少在大堆停止整体GC暂停的频率.

Default

true

 

hbase.hregion.max.filesize

Description

最大HFile大小。 如果一个地区的HFiles的总和已经超过这个数值,那么这个地区就会被分成两部分.

Default

10737418240

 

hbase.hregion.majorcompaction

Description

主要压缩之间的时间,以毫秒表示。 设置为0可禁用基于时间的自动重要压缩。 用户请求的和基于大小的主要压缩将仍然运行。 这个值乘以hbase.hregion.majorcompaction.jitter,使压缩在一个给定的时间窗口期间稍微随机的时间开始。 缺省值是7天,以毫秒表示。 如果主要压缩在您的环境中导致中断,则可以将它们配置为在部署的非高峰时间运行,或者通过将此参数设置为0来禁用基于时间的主要压缩,并在cron作业或另一个 外部机制.

Default

604800000

 

hbase.hregion.majorcompaction.jitter

Description

应用于hbase.hregion.majorcompaction的乘数会导致压缩发生hbase.hregion.majorcompaction任意一侧的给定时间量。 数字越小,压缩将越接近hbase.hregion.majorcompaction时间间隔.

Default

 

0.50

 

hbase.hstore.compactionThreshold

Description

如果任何一个Store中存在超过此数量的StoreFiles(每个MemStore刷新一个StoreFile),则会运行压缩将所有StoreFile重写为单个StoreFile。 较大的值延迟压缩,但是当压缩发生时,需要较长时间才能完成.

Default

3

 

hbase.hstore.flusher.count

Description

刷新线程的数量。 用更少的线程,MemStore刷新将排队。 随着线程数量的增加,冲刷将并行执行,增加HDFS的负载,并可能导致更多的压缩

Default

2

 

hbase.hstore.blockingStoreFiles

Description

如果任何一个Store中存在超过此数量的StoreFiles(每个MemStore刷新一个StoreFile),则更新在该区域中被阻止,直到压缩完成或者直到超过hbase.hstore.blockingWaitTime.

Default

16

 

hbase.hstore.blockingWaitTime

Description

在达到hbase.hstore.blockingStoreFiles定义的StoreFile限制后,区域将阻止更新的时间。 经过这段时间后,即使压缩尚未完成,该地区也将停止阻止更新.

Default

90000

 

hbase.hstore.compaction.min

Description

压缩之前必须有资格进行压缩的StoreFiles的最小数量可以运行。 调整hbase.hstore.compaction.min的目标是避免结束太多的小型StoreFiles来压缩。 如果将此值设置为2,则每次在Store中有两个StoreFiles时会导致轻微的压缩,这可能不合适。 如果将此值设置得太高,则需要相应调整所有其他值。 对于大多数情况下,默认值是适当的。 在以前的HBase版本中,参数hbase.hstore.compaction.min被命名为hbase.hstore.compactionThreshold.

Default

3

 

hbase.hstore.compaction.max

Description

无论符合条件的StoreFiles的数量如何,将为单个次要压缩选择的StoreFiles的最大数量。 有效地,hbase.hstore.compaction.max的值控制单个压缩完成所需的时间长度。 将其设置得更大意味着更多的StoreFiles包含在压缩中。 对于大多数情况下,默认值是适当的.

Default

10

 

hbase.hstore.compaction.min.size

Description

 

StoreFile(或使用ExploringCompactionPolicy时选择的StoreFiles)小于此大小将始终有资格进行轻微压缩。 这个大小或更大的HFile通过hbase.hstore.compaction.ratio进行评估,以确定它们是否合格。 由于此限制表示所有StoreFiles的“自动包含”限制小于此值,因此在需要刷新多个StoreFile(1-2 MB范围内的许多StoreFiles)的写入繁重环境中可能需要降低此值,因为每个StoreFile都将作为目标 对于压缩而言,所得到的StoreFile可能仍然在最小尺寸下,并且需要进一步的压缩。 如果此参数降低,比率检查会更快地触发。

这解决了在早期版本的HBase中看到的一些问题,但是在大多数情况下不再需要更改此参数。 默认:128 MB以字节表示.

Default

134217728

 

hbase.hstore.compaction.max.size

Description

StoreFile(或使用ExploringCompactionPolicy时选择的StoreFiles)大于此大小将被排除在压缩之外。 提高hbase.hstore.compaction.max.size的效果较少,较大的StoreFiles不经常压缩。 如果你觉得压缩过于频繁而没有太多好处,你可以尝试提高这个价值。 默认值:LONG.MAX_VALUE的值,以字节表示.

Default

9223372036854775807

 

hbase.hstore.compaction.ratio

Description

对于轻微压缩,此比率用于确定大于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来完成读取。如果您不能利用Bloom过滤器,请考虑使用这种方法。否则,可以将此值降低到1.0以降低写入的背景成本,并使用Bloom过滤器来控制读取期间触摸的StoreFiles的数量。对于大多数情况下,默认值是适当的.

Default

1.2F

 

hbase.hstore.compaction.ratio.offpeak

Description

允许您设置不同(默认情况下,更积极)的比率,以确定在非高峰时段是否包含较大的StoreFiles。 以与hbase.hstore.compaction.ratio相同的方式工作。 仅当hbase.offpeak.start.hour和hbase.offpeak.end.hour也被启用时才适用.

Default

5.0F

 

hbase.hstore.time.to.purge.deletes

Description

使用未来的时间戳延迟清除标记的时间。 如果未设置,或设置为0,则将在下一次主要压缩过程中清除所有删除标记(包括具有未来时间戳的标记)。 否则,保留一个删除标记,直到在标记的时间戳之后出现的主要压缩加上该设置的值,以毫秒为单位.

Default

0

 

hbase.offpeak.start.hour

Description

非高峰时段开始,以0到23之间的整数表示,包括0和23之间的整数。 设置为-1以禁用非高峰.

Default

 

-1

 

hbase.offpeak.end.hour

Description

非高峰时段结束,以0到23之间的整数表示,包括0和23之间的整数。 设置为-1以禁用非高峰.

Default

-1

 

hbase.regionserver.thread.compaction.throttle

Description

有两个不同的线程池用于压缩,一个用于大型压缩,另一个用于小型压缩。 这有助于保持精简表(如hbase:meta)的快速压缩。 如果压缩度大于此阈值,则会进入大型压缩池。 在大多数情况下,默认值是适当的。 默认值:2 x hbase.hstore.compaction.max x hbase.hregion.memstore.flush.size(默认为128MB)。 值字段假定hbase.hregion.memstore.flush.size的值与默认值相同.

Default

2684354560

 

hbase.regionserver.majorcompaction.pagecache.drop

Description

指定是否通过主要压缩删除读取/写入系统页面缓存的页面。 将其设置为true有助于防止重大压缩污染页面缓存,这几乎总是要求的,特别是对于具有低/中等内存与存储率的群集.

Default

true

 

hbase.regionserver.minorcompaction.pagecache.drop

Description

指定是否通过较小的压缩删除读取/写入系统页面缓存的页面。 将其设置为true有助于防止轻微压缩污染页面缓存,这对于内存与存储比率较低的群集或写入较重的群集是最有利的。 当大部分读取位于最近写入的数据上时,您可能希望在中等到低写入工作负载下将其设置为false.

Default

true

 

hbase.hstore.compaction.kv.max

Description

刷新或压缩时要读取并批量写入的KeyValues的最大数量。 如果你有较大的KeyValues,并且Out Of Memory Exceptions有问题,请将它设置得更低.

Default

10

 

hbase.storescanner.parallel.seek.enable

Description

在StoreScanner中启用StoreFileScanner并行搜索功能,该功能可以在特殊情况下减少响应延迟.

Default

false

 

hbase.storescanner.parallel.seek.threads

Description

如果启用了并行查找功能,则默认线程池大小.

Default

10

 

hfile.block.cache.size

Description

StoreFile使用的最大堆(-Xmx设置)分配给块缓存的百分比。 默认值为0.4意味着分配40%。 设置为0禁用,但不建议; 您至少需要足够的缓存来保存存储文件索引.

Default

0.4

 

hfile.block.index.cacheonwrite

Description

这允许在索引被写入时将非根多级索引块放入块高速缓存中.

Default

false

 

hfile.index.block.max.size

Description

当多级块索引中的叶级,中级或根级索引块的大小增长到这个大小时,块被写出并且开始新的块.

Default

131072

 

hbase.bucketcache.ioengine

Description

在哪里存储bucketcache的内容。 其中之一:offheap,文件,文件或mmap。 如果有文件或文件,则将其设置为文件:PATH_TO_FILE。 mmap意味着内容将在一个mmaped文件中。 使用mmap:PATH_TO_FILE。 有关更多信息,请参阅http://hbase.apache.org/book.html#offheap.blockcache.

 

Default none

 

hbase.bucketcache.size

Description

EITHER表示缓存的总堆内存大小的百分比(如果小于1.0),则表示BucketCache的总容量(兆字节)。 默认值:0.0

Default none

 

hbase.bucketcache.bucket.sizes

Description

用于bucketcache的存储区大小的逗号分隔列表。 可以是多种尺寸。 列出从最小到最大的块大小。 您使用的大小取决于您的数据访问模式。 必须是256的倍数,否则当你从缓存中读取时,你会遇到“java.io.IOException:无效的HFile块魔术”。 如果你在这里没有指定值,那么你可以选择在代码中设置的默认桶大小(参见BucketAllocator#DEFAULT_BUCKET_SIZES).

 

Default none

 

hfile.format.version

Description

用于新文件的HFile格式版本。 版本3添加了对hfiles中标签的支持(请参阅http://hbase.apache.org/book.html#hbase.tags)。 另请参阅配置“hbase.replication.rpc.codec”.

Default

3

 

hfile.block.bloom.cacheonwrite

Description

为复合布隆过滤器的内联块启用写入缓存.

false

 

io.storefile.bloom.block.size

Description

复合布隆过滤器的单个块(“块”)的字节大小。 这个大小是近似的,因为布洛姆块只能被插入到数据块的边界处,而每个数据块的密钥数量是不同的.

Default

131072

 

hbase.rs.cacheblocksonwrite

Description

块完成后,是否应将HFile块添加到块缓存中.

Default

false

 

hbase.rpc.timeout

Description

这是为了让RPC层定义一个远程调用超时(毫秒)HBase客户端应用程序超时。 它使用ping来检查连接,但最终会抛出TimeoutException.

Default

60000

 

hbase.client.operation.timeout

Description

操作超时是一个顶级的限制(毫秒),确保表格中的阻止操作不会被阻止超过这个限制。 在每个操作中,如果rpc请求由于超时或其他原因而失败,则将重试直到成功或抛出RetriesExhaustedException。 但是,如果总的阻塞时间在重试耗尽之前达到操作超时,则会提前中断并抛出SocketTimeoutException.

Default

1200000

 

hbase.cells.scanned.per.heartbeat.check

Description

在心跳检查之间扫描的信元的数量。 在扫描处理过程中会发生心跳检查,以确定服务器是否应该停止扫描,以便将心跳消息发送回客户端。 心跳消息用于在长时间运行扫描期间保持客户端 - 服务器连接的活动。 较小的值意味着心跳检查将更频繁地发生,因此将对扫描的执行时间提供更严格的界限。

数值越大意味着心跳检查发生的频率越低

Default

10000

 

hbase.rpc.shortoperation.timeout

Description

这是“hbase.rpc.timeout”的另一个版本。 对于集群内的RPC操作,我们依靠此配置为短操作设置短超时限制。 例如,区域服务器试图向活动主服务器报告的短rpc超时可以更快地进行主站故障转移过程.

Default

10000

 

hbase.ipc.client.tcpnodelay

Description

在rpc套接字连接上设置没有延迟。 请参阅http://docs.oracle.com/javase/1.5.0/docs/api/java/net/Socket.html#getTcpNoDelay()

true

 

hbase.regionserver.hostname

Description

这个配置适用于专家:除非你真的知道你在做什么,否则不要设定它的价值。 当设置为非空值时,这表示底层服务器的(面向外部)主机名。 有关详细信息,请参阅https://issues.apache.org/jira/browse/HBASE-12954.

 

Default none

 

hbase.regionserver.hostname.disable.master.reversedns

Description

这个配置适用于专家:除非你真的知道你在做什么,否则不要设定它的价值。 当设置为true时,regionserver将使用当前节点主机名作为服务器名称,HMaster将跳过反向DNS查找并使用regionserver发送的主机名。 请注意,此配置和hbase.regionserver.hostname是互斥的。 有关更多详细信息,请参阅https://issues.apache.org/jira/browse/HBASE-18226.

Default

false

 

hbase.master.keytab.file

Description

用于登录配置的HMaster服务器主体的kerberos密钥表文件的完整路径.

Default none

 

hbase.master.kerberos.principal

Description

防爆。“hbase/_HOST@EXAMPLE.COM”。 应该用来运行HMaster进程的Kerberos主体名称。 主体名称的格式应为:user / hostname @ DOMAIN。 如果使用“_HOST”作为主机名部分,它将被替换为正在运行的实例的实际主机名.

 

Default none

 

hbase.regionserver.keytab.file

Description

用于登录配置的HRegionServer服务器主体的kerberos密钥表文件的完整路径.

Default none

 

hbase.regionserver.kerberos.principal

Description

防爆。“hbase/_HOST@EXAMPLE.COM”。 应该用来运行HRegionServer进程的kerberos主体名称。 主体名称的格式应为:user / hostname @ DOMAIN。 如果使用“_HOST”作为主机名部分,它将被替换为正在运行的实例的实际主机名。 此主体的条目必须存在于hbase.regionserver.keytab.file中指定的文件中

 

Default none

 

hadoop.policy.file

Description

RPC服务器使用策略配置文件对客户端请求进行授权决策。 仅在启用HBase安全性时使用.

Default

 

hbase-policy.xml

 

hbase.superuser

Description

用户或组列表(以逗号分隔),允许在整个集群中拥有完全权限(不管存储的ACL)。 仅在启用HBase安全性时使用.

 

Default none

 

hbase.auth.key.update.interval

Description

服务器中认证令牌的主密钥的更新间隔(以毫秒为单位)。 仅在启用HBase安全性时使用.

Default

86400000

 

hbase.auth.token.max.lifetime

Description

验证令牌过期的最长生存时间(以毫秒为单位)。 仅在启用HBase安全性时使用.

Default

604800000

 

hbase.ipc.client.fallback-to-simple-auth-allowed

Description

当客户端配置为尝试安全连接,但尝试连接到不安全的服务器时,该服务器可能会指示客户端切换到SASL SIMPLE(不安全)身份验证。 此设置控制客户端是否接受来自服务器的此指令。 如果为false(缺省值),则客户端将不允许回退到SIMPLE身份验证,并会中止连接.

Default

false

 

hbase.ipc.server.fallback-to-simple-auth-allowed

Description

当服务器配置为需要安全连接时,它将拒绝来自使用SASL SIMPLE(不安全)身份验证的客户端的连接尝试。 此设置允许安全服务器在客户端请求时接受来自客户端的SASL SIMPLE连接。 如果为false(缺省值),服务器将不允许回退到SIMPLE身份验证,并将拒绝连接。 警告:只有在将客户端转换为安全身份验证时,才应将此设置用作临时措施。 必须禁止它的安全操作.

Default

false

 

hbase.display.keys

Description

当这被设置为true时,webUI等将显示所有开始/结束键作为表格细节,区域名称等的一部分。当这被设置为假时,键被隐藏

Default

true

 

hbase.coprocessor.enabled

Description

启用或禁用协处理器加载。 如果'false'(禁用),任何其他协处理器相关的配置将被忽略.

Default

 

 

true

 

hbase.coprocessor.user.enabled

Description

启用或禁用用户(又名表)协处理器加载。 如果'false'(禁用),则表格描述符中的任何表协处理器属性将被忽略。 如果“hbase.coprocessor.enabled”为“false”,则此设置无效.

Default

true

 

hbase.coprocessor.region.classes

Description

在所有表上默认加载的区域观察者或端点协处理器的逗号分隔列表。 对于任何覆盖协处理器方法,这些类将按顺序调用。 在实现自己的协处理器之后,将其添加到HBase的类路径中,并在此处添加完全限定的类名称。 协处理器也可以通过设置HTableDescriptor或者HBase shell来按需加载.

 

Default none

 

hbase.coprocessor.master.classes

Description

活动HMaster进程默认加载的org.apache.hadoop.hbase.coprocessor.MasterObserver协处理器的逗号分隔列表。 对于任何实施的协处理器方法,列出的类将按顺序调用。 在实现你自己的MasterObserver之后,把它放在HBase的类路径中,并在这里添加完全限定的类名称.

 

Default none

 

hbase.coprocessor.abortonerror

Description

如果协处理器加载失败,初始化失败或引发意外的Throwable对象,则设置为true将导致托管服务器(主服务器或区域服务器)中止。 将其设置为false将允许服务器继续执行,但所涉及的协处理器的系统范围状态将变得不一致,因为它只能在一部分服务器中正确执行,所以这对于仅调试.

Default

true

 

hbase.rest.port

Description

HBase REST服务器的端口.

Default

8080

 

hbase.rest.readonly

Description

定义REST服务器将启动的模式。可能的值有:false:所有的HTTP方法都是允许的 - GET / PUT / POST / DELETE。 true:只允许GET方法.

Default

false

 

hbase.rest.threads.max

Description

REST服务器线程池的最大线程数。 池中的线程被重用来处理REST请求。 这将控制同时处理的最大请求数。 这可能有助于控制REST服务器使用的内存以避免OOM问题。 如果线程池已满,则传入的请求将排队并等待一些空闲的线程.

Default

 

100

 

hbase.rest.threads.min

Description

REST服务器线程池的最小线程数。 线程池总是至少有这么多的线程,所以REST服务器已经准备好为传入的请求提供服务.

Default

2

 

hbase.rest.support.proxyuser

Description

启用运行REST服务器以支持代理用户模式.

Default

false

 

hbase.defaults.for.version.skip

Description

设置为true以跳过“hbase.defaults.for.version”检查。 将其设置为true可以在除maven世代的另一方之外的上下文中有用; 即在IDE中运行。 你需要设置这个布尔值为true以避免看到RuntimeException抱怨:“hbase-default.xml文件似乎是HBase(\ $ {hbase.version})的旧版本,这个版本是X.X.X-SNAPSHOT”

Default

false

 

hbase.table.lock.enable

Description

设置为true以启用锁定zookeeper中的表以进行模式更改操作。 从主服务器锁定表可以防止并发的模式修改损坏表状态.

Default

true

 

hbase.table.max.rowsize

Description

单行字节的最大大小(默认值为1 Gb),用于Get-ing或Scan'ning,不设置行内扫描标志。 如果行大小超过此限制RowTooBigException被抛出到客户端.

Default

1073741824

 

hbase.thrift.minWorkerThreads

Description

线程池的“核心大小”。 在每个连接上创建新线程,直到创建多个线程。

Default

16

 

hbase.thrift.maxWorkerThreads

Description

线程池的最大大小。 待处理的请求队列溢出时,将创建新线程,直到其号码达到此数字。 之后,服务器开始丢弃连接.

Default

1000

 

hbase.thrift.maxQueuedRequests

Description

 

在队列中等待的最大等待节点连接数。 如果池中没有空闲线程,则服务器将请求排队。 只有当队列溢出时,才会添加新的线程,直到hbase.thrift.maxQueuedRequests线程.

Default

1000

 

hbase.regionserver.thrift.framed

Description

在服务器端使用Thrift TFramedTransport。 对于节俭服务器,这是推荐的传输方式,需要在客户端进行类似的设置。 将其更改为false将选择默认传输,当由于THRIFT-601发出格式错误的请求时,容易受到DoS攻击.

Default

false

 

hbase.regionserver.thrift.framed.max_frame_size_in_mb

Description

使用成帧传输时的默认帧大小,以MB为单位

Default

2

 

hbase.regionserver.thrift.compact

Description

使用Thrift TCompactProtocol二进制序列化协议.

Default

false

 

hbase.rootdir.perms

Description

FS安全(kerberos)安装程序中根数据子目录的权限。 主服务器启动时,会使用此权限创建rootdir,如果不匹配则设置权限.

Default

700

 

hbase.wal.dir.perms

Description

FS安全(kerberos)安装程序中的根WAL目录的权限。 主服务器启动时,将使用此权限创建WAL目录,如果不匹配则设置权限.

Default

700

 

hbase.data.umask.enable

Description

如果启用,则启用该文件权限应分配给区域服务器写入的文件

Default

false

 

hbase.data.umask

Description

当hbase.data.umask.enable为true时,应该用来写入数据文件的文件权限

Default

000

 

hbase.snapshot.enabled

Description

设置为true以允许拍摄/恢复/克隆快照.

Default

true

 

hbase.snapshot.restore.take.failsafe.snapshot

Description

设置为true以在还原操作之前拍摄快照。 所拍摄的快照将在失败的情况下使用,以恢复以前的状态。 在还原操作结束时,此快照将被删除

Default

true

 

hbase.snapshot.restore.failsafe.name

Description

恢复操作所采用的故障安全快照的名称。 您可以使用{snapshot.name},{table.name}和

{restore.timestamp}变量根据您正在恢复的内容创建一个名称.

Default

hbase-failsafe-{snapshot.name}-{restore.timestamp}

 

hbase.server.compactchecker.interval.multiplier

Description

这个数字决定了我们扫描的频率,看是否需要压缩。 通常情况下,压缩是在某些事件(如memstore flush)之后完成的,但是如果地区在一段时间内没有收到大量的写入,或者由于不同的压缩策略,可能需要定期检查。 检查之间的时间间隔是hbase.server.compactchecker.interval.multiplier乘以hbase.server.thread.wakefrequency.

Default

1000

 

hbase.lease.recovery.timeout

Description

在放弃之前,我们等待dfs租赁恢复总共需要多长时间.

Default

900000

 

hbase.lease.recovery.dfs.timeout

Description

在dfs恢复租约调用之间有多久。 应该大于namenode发出块恢复命令作为datanode一部分所需的时间总和; dfs.heartbeat.interval和主数据节点所花费的时间,在死数据节点上执行数据块恢复到超时; 通常是dfs.client.socket-timeout。 详情请参阅HBASE-8389的末尾.

Default

64000

 

hbase.column.max.version

Description

新的列族描述符将使用此值作为要保留的默认版本数.

Default

1

 

dfs.client.read.shortcircuit

Description

如果设置为true,则此配置参数启用短路本地读取.

Default

false

 

dfs.domain.socket.path

Description

如果将dfs.client.read.shortcircuit设置为true,则这是通往UNIX域套接字的路径,该套接字将用于DataNode与本地HDFS客户端之间的通信。 如果该路径中存在字符串“_PORT”,则会被DataNode的TCP端口替换。 请注意承载共享域套接字的目录的权限; 如果对HBase用户开放,dfsclient会投诉.

Default

none

 

hbase.dfs.client.read.shortcircuit.buffer.size

Description

如果未设置DFSClient配置dfs.client.read.shortcircuit.buffer.size,我们将使用此处配置的内容作为短路读取默认直接字节缓冲区大小。 DFSClient本机默认值是1MB; HBase保持HDFS文件的打开状态,所以文件块* 1MB的数量很快就开始累积起来,并由于直接内存不足而威胁OOME。 所以,我们从默认设置下来。 使它>在HColumnDescriptor中设置的默认hbase块大小通常是64k.

Default

131072

 

hbase.regionserver.checksum.verify

Description

如果设置为true(默认),HBase将验证hfile块的校验和。 当HBase写出hfiles时,HBase将校验和写入数据。 HDFS(截至撰写本文时)将校验和写入单独的文件,而不是数据文件,从而需要额外的搜索。 设置这个标志可以节省一些I / O。 设置此标志时,HDFS的校验和验证将在hfile流内部禁用。 如果hbase-checksum验证失败,我们将切换回使用HDFS校验和(所以不要禁用HDFS校验和!除此功能仅适用于hfiles,而不适用于WAL)。 如果这个参数设置为false,那么hbase将不会验证任何校验和,而是取决于HDFS客户端中的校验和验证。

Default

true

 

hbase.hstore.bytes.per.checksum

Description

新创建的校验和块中的字节数,用于hfile块中的HBase级校验和.

Default

16384

 

hbase.hstore.checksum.algorithm

Description

用于计算校验和的算法的名称。 可能的值是NULL,CRC32,CRC32C.

Default

CRC32C

 

hbase.client.scanner.max.result.size

Description

调用扫描器的下一个方法时返回的最大字节数。 请注意,当单行大于此限制时,行仍然完全返回。 默认值是2MB,这对于1ge网络是有好处的。 有了更快和/或更高的延迟网络,这个值应该增加.

Default

2097152

 

hbase.server.scanner.max.result.size

Description

调用扫描器的下一个方法时返回的最大字节数。 请注意,当单行大于此限制时,行仍然完全返回。 默认值是100MB。 这是保护服务器免受OOM情况的安全设置.

 

Default

104857600

 

hbase.status.published

Description

该设置激活了主控发布区域服务器的状态。 当一台区域服务器死亡并恢复时,主服务器会将这些信息推送到客户端应用程序,让他们立即切断连接,而不是等待超时.

Default

false

 

hbase.status.publisher.class

Description

用多播消息实现状态发布.

Default

org.apache.hadoop.hbase.master.ClusterStatusPublisher$MulticastPublisher

 

hbase.status.listener.class

Description

使用多播消息实现状态监听器.

Default

org.apache.hadoop.hbase.client.ClusterStatusListener$MulticastListener

 

hbase.status.multicast.address.ip

Description

组播地址用于多播状态发布.

Default

226.1.1.3

 

hbase.status.multicast.address.port

Description

多播端口用于多播状态发布.

Default

16100

 

hbase.dynamic.jars.dir

Description

自定义过滤器JAR的目录可以由区域服务器动态加载,而无需重新启动。 但是,已加载的过滤器/协处理器类将不会被卸载。 有关更多详细信息,请参见HBASE-1936。 不适用于协处理器.

Default

${hbase.rootdir}/lib

 

hbase.security.authentication

Description

控制是否为HBase启用安全身份验证。 可能的值是“简单”(不认证)和“Kerberos”。

Default

simple

 

hbase.rest.filter.classes

Description

用于REST服务的Servlet过滤器.

Default

 

org.apache.hadoop.hbase.rest.filter.GzipFilter

 

hbase.master.loadbalancer.class

Description

用于在期间发生时执行区域平衡的类。 有关它如何工作的更多信息,请参阅类的注释http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html它将DefaultLoadBalancer替换为默认值(因为它被重命名为SimpleLoadBalancer).

Default

org.apache.hadoop.hbase.master.balancer.StochasticLoadBalancer

 

hbase.master.loadbalance.bytable

Description

平衡器运行时的因子表名称。 默认:false.

Default

false

 

hbase.master.normalizer.class

Description

用于在期间发生时执行区域标准化的类。 有关如何运行的更多信息,请参阅类注释http://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/master/normalizer/SimpleRegionNormalizer.html

Default

org.apache.hadoop.hbase.master.normalizer.SimpleRegionNormalizer

 

hbase.rest.csrf.enabled

Description

设置为true以启用对跨站请求伪造(CSRF)的保护

Default

false

 

hbase.rest-csrf.browser-useragents-regex

Description

通过将hbase.rest.csrf.enabled设置为true,为REST服务器启用针对跨站点请求伪造(CSRF)的防护时,用于匹配HTTP请求的User-Agent标头的正则表达式的逗号分隔列表。 如果传入的用户代理与这些正则表达式中的任何一个相匹配,则认为该请求被浏览器发送,因此CSRF预防被强制执行。 如果请求的用户代理与这些正则表达式中的任何一个都不匹配,则该请求被认为是由浏览器以外的其他东西发送的,例如脚本自动化。 在这种情况下,CSRF不是一个潜在的攻击媒介,所以预防没有被执行。 这有助于实现与尚未更新以发送CSRF预防报头的现有自动化的向后兼容性.

Default

Mozilla.,Opera.

 

hbase.security.exec.permission.checks

Description

如果启用此设置,并且基于ACL的访问控制处于活动状态(AccessController协处理器作为系统协处理器安装,或者作为表协处理器安装在表上),则必须授予所有相关用户EXEC权限(如果需要执行协处理器端点调用。 像任何其他许可一样,EXEC特权可以全局授予用户,也可以授予每个用户或每个名称空间。 有关协处理器端点的更多信息,请参阅HBase联机手册的协处理器部分。 有关使用AccessController授予或撤消权限的更多信息,请参阅HBase联机手册的安全性部分.

Default

false

 

hbase.procedure.regionserver.classes

Description

 

在活动HRegionServer进程中默认加载的org.apache.hadoop.hbase.procedure.RegionServerProcedureManager过程管理器的逗号分隔列表。 生命周期方法(init / start / stop)将由活动的HRegionServer进程调用,以执行特定的全局拦截过程。 在实现你自己的RegionServerProcedureManager之后,把它放在HBase的类路径中,并在这里添加完全限定的类名称.

 

Default none

 

hbase.procedure.master.classes

Description

活动HMaster进程默认加载的org.apache.hadoop.hbase.procedure.MasterProcedureManager过程管理器的逗号分隔列表。 程序通过其签名进行标识,用户可以使用签名和即时名称来触发全局程序的执行。 在实现你自己的MasterProcedureManager之后,把它放在HBase的类路径中,并在这里添加完全限定的类名称.

 

Default none

 

hbase.coordinated.state.manager.class

Description

协调状态管理员的完全合格的名字.

Default

org.apache.hadoop.hbase.coordination.ZkCoordinatedStateManager

 

hbase.regionserver.storefile.refresh.period

Description

用于刷新次要区域的存储文件的时间段(以毫秒为单位)。 0意味着此功能被禁用。 次要区域在次要区域刷新区域中的文件列表时会看到来自主要文件的新文件(来自刷新和压缩)(没有通知机制)。 但是频繁刷新可能会导致额外的Namenode压力。 如果文件的刷新时间不能超过HFile TTL(hbase.master.hfilecleaner.ttl),请求将被拒绝。 此设置还建议将HFile TTL配置为较大的值.

Default

0

 

hbase.region.replica.replication.enabled

Description

是否启用对辅助区域副本的异步WAL复制。 如果启用了此功能,则会创建一个名为“region_replica_replication”的复制对等项,该对等项将会记录日志并将突变复制到区域复制对于区域复制大于1的表中。如果启用一次,禁用此复制也需要禁用复制 对等使用shell或Admin java类。 复制到辅助区域副本可以在标准群集间复制上工作.

Default

false

 

hbase.http.filter.initializers

Description

一个以逗号分隔的类名列表。 列表中的每个类都必须扩展org.apache.hadoop.hbase.http.FilterInitializer。 相应的过滤器将被初始化。 然后,过滤器将应用于所有面向jsp和servlet网页的用户。 列表的排序定义了过滤器的排序。 默认的StaticUserWebFilter添加hbase.http.staticuser.user属性定义的用户主体.

Default

org.apache.hadoop.hbase.http.lib.StaticUserWebFilter

 

hbase.security.visibility.mutations.checkauths

Description

如果启用此属性,将检查可见性表达式中的标签是否与发出突变的用户相关联

 

false

 

hbase.http.max.threads

Description

HTTP服务器将在其ThreadPool中创建的最大线程数.

Default

16

 

hbase.replication.rpc.codec

Description

启用复制时要使用的编解码器,以便标签也被复制。 这与支持标签的HFileV3一起使用。 如果不使用标签,或者如果使用的hfile版本是HFileV2,则KeyValueCodec可以用作复制编解码器。 请注意,在没有标签时使用KeyValueCodecWithTags进行复制不会造成任何伤害.

Default

org.apache.hadoop.hbase.codec.KeyValueCodecWithTags

 

hbase.replication.source.maxthreads

Description

任何复制源将用于并行传送编辑到接收器的最大线程数。 这也限制了每个复制批次被分解成的块的数量。 较大的值可以提高主群集和从群集之间的复制吞吐量。 10的默认值很少需要改变.

Default

10

 

hbase.serial.replication.waitingMs

Description

默认情况下,在复制中,我们不能确定从集群中的操作顺序与主集群中的顺序相同。 如果将REPLICATION_SCOPE设置为2,我们将按照写入顺序进行编辑。 这个配置是设置在下一次检查之前,我们将等待多长时间(以毫秒为单位),如果日志不能被推送,因为有一些日志写在它之前还没有被推入。 较大的等待将减少hbase:meta上的查询数量,但会增加复制的延迟时间。 此功能依赖于zk-less分配,因此用户必须将hbase.assignment.usezk设置为false来支持它.

Default

10000

 

hbase.http.staticuser.user

Description

要在呈现内容时在静态网页过滤器上过滤的用户名称。 一个使用示例是HDFS Web UI(用于浏览文件的用户).

Default

dr.stack

 

hbase.regionserver.handler.abort.on.error.percent

Description

区域服务器RPC线程的百分比无法中止RS。 -1禁用中止; 0即使单个处理程序已经死亡也会中止; 0.x只有当这个百分比的经理人死亡时才中止; 1只中止所有的人已经死亡.

Default

0.5

 

hbase.mob.file.cache.size

Description

要缓存的已打开文件处理程序的数量。 更大的值将通过为每个移动文件缓存提供更多的文件处理程序而减少频繁的文件打开和关闭,从而有利于读取。 但是,如果设置得太高,则可能导致“打开的文件处理程序太多”。默认值为1000.

1000

 

hbase.mob.cache.evict.period

Description

生物高速缓存驱逐高速缓存的生物文件之前的时间(秒)。 默认值是3600秒.

Default

3600

 

hbase.mob.cache.evict.remain.ratio

Description

当缓存的移动文件数量超过hbase.mob.file.cache.size时,触发驱逐后保留的文件的比率(介于0.0和1.0之间)会被触发。 默认值是0.5f.

Default

0.5f

 

hbase.master.mob.ttl.cleaner.period

Description

ExpiredMobFileCleanerChore运行的时间段。 该单位是第二。 默认值是一天。 MOB文件名仅使用文件创建时间的日期部分。 我们使用这个时间来决定文件的TTL到期时间。 所以删除TTL过期的文件可能会被延迟。 最大延迟可能是24小时.

Default

86400

 

hbase.mob.compaction.mergeable.threshold

Description

如果一个mob文件的大小小于这个值,那它就被认为是一个小文件,需要在mob compaction中合并。 默认值是1280MB.

Default

1342177280

 

hbase.mob.delfile.max.count

Description

mob压缩中允许的最大del文件数。 在mob压缩中,当现有的del文件的数量大于这个值时,它们被合并,直到del文件的数量不大于该值。 默认值是3.

Default

3

 

hbase.mob.compaction.batch.size

Description

在一批怪物压缩中所允许的暴民文件的最大数量。 暴民压缩合并小暴民文件到更大的。 如果小文件的数量非常大,则可能导致合并中的“打开的文件处理程序太多”。 合并必须分成批次。 此值限制在一批mob mob压缩中选择的mob文件的数量。 默认值是100.

Default

100

 

hbase.mob.compaction.chore.period

Description

MobCompactionChore运行的时间。 该单位是第二。 默认值是一个星期.

Default

604800

 

hbase.mob.compactor.class

 

Description

执行mob compactor,默认一个是PartitionedMobCompactor.

Default

org.apache.hadoop.hbase.mob.compactions.PartitionedMobCompactor

 

hbase.mob.compaction.threads.max

Description

MobCompactor中使用的最大线程数.

Default

1

 

hbase.snapshot.master.timeout.millis

Description

主快照程序执行的超时.

Default

300000

 

hbase.snapshot.region.timeout

Description

区域服务器将线程保持在快照请求池中等待超时.

Default

300000

 

hbase.rpc.rows.warning.threshold

Description

批处理操作中的行数,超过该值将记录警告.

Default

5000

2.3.3 其他配置文件

hbase-env.sh

在这个文件中设置HBase环境变量。 示例包括在启动HBase守护程序(如堆大小和垃圾回收器配置)时传递JVM的选项。 您还可以设置HBase配置,日志目录,niceness,ssh选项,定位进程pid文件的位置等的配置。在conf / hbase-env.sh打开文件并仔细阅读其内容。 每个选项都有相当好的记录。 如果希望在启动时由HBase守护进程读取,请在此处添加您自己的环境变量。

此处的更改将需要重启HBase才能注意到更改.

log4j.properties

编辑此文件以更改HBase文件的滚动速度,并更改HBase记录消息的级别。

这里的变化将需要集群重启以便HBase注意到这个改变,尽管通过HBase UI可以改变特定守护进程的日志级别.

2.3.4 连接Hbase集群客户端配置支持

Shell client configuration

 

如果您在独立模式下运行HBase,则只要它们都在同一台计算机上,就不需要为客户端配置任何内容。

 

由于HBase Master可以移动,客户可以通过向ZooKeeper寻找当前的关键位置来进行引导。 ZooKeeper是保存所有这些值的地方。 因此客户需要ZooKeeper合奏的位置才能做其他事情。 通常这个集合位置被保存在hbase-site.xml中,并由CLASSPATH的客户端拾取。

 

如果你正在配置一个IDE来运行一个HBase客户端,你应该在你的类路径中包含conf/目录,这样可以找到hbase-site.xml设置(或者添加src/test/resources来获取使用的hbase-site.xml文件 通过测试)。

最小的情况是,当连接到集群时,HBase客户端需要依赖关系中的hbase-client模块:

 

 

<dependency>

<groupId>org.apache.hbase</groupId>

<artifactId>hbase-client</artifactId>

<version>1.2.4</version>

</dependency>

 

A basic example hbase-site.xml for client only may look as follows:

<?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>

Java client configuration

The configuration used by a Java client is kept in an HBaseConfiguration

(https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/HBaseConfiguration) instance.

HBaseConfiguration的工厂方法,HBaseConfiguration.create(); 在调用时,将读入在客户端的CLASSPATH上找到的第一个hbase-site.xml的内容(如果存在的话)(调用也将包含在任何发现的hbase-default.xml中; hbase-default.xml在hbase.XXXjar)。 也可以直接指定配置,而无需从hbase-site.xml中读取数据。 例如,要以编程方式设置集群的ZooKeeper集成,请执行以下操作:

 

 

Configuration config = HBaseConfiguration.create();

config.set("hbase.zookeeper.quorum", "localhost"); // Here we are running zookeeper locally


JAV

 

 

如果多个ZooKeeper实例组成ZooKeeper集合,则可以在逗号分隔列表中指定它们(就像在hbase-site.xml文件中一样)。 这个填充的配置实例然后可以被传递给一个表(https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Table.html),依此类推

2.3.5 Example Configurations

Basic Distributed HBase Install

以下是分布式十个节点集群的基本配置示例:*在本例中,节点通过节点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 - 可能看起来像.

 

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>

 

regionservers

In this file you list the nodes that will run RegionServers. In our case, these nodes are example1 - example9 .

 

 

 

example1 example2 example3 example4 example5 example6 example7 example8 example9


JAVA

 

 

hbase-env.sh

The following lines in the hbase-env.sh file show how to set the JAVA_HOME environment variable (required for HBase) and set the heap to 4 GB (rather than the default value of 1 GB). If you copy and paste this example, be sure to adjust the JAVA_HOME to suit your environment.

 

# 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

 

Use rsync to copy the content of the conf directory to all nodes of the cluster.

 

 

本章从需求分析的角度,详细阐述了客运公司信息管理系统的需求分析。在本章中,阐述了客运公司信息管理系统的功能性需求分析、非功能性需求分析和系统业务流程,确定了系统的开发模式。

2.4  The Important Configurations

下面我们列出一些重要的配置。 我们已经将这部分分为必需的配置和值得推荐的配置.

Required Configurations

Review the os and hadoop sections.

Big Cluster Configurations

如果您拥有一个包含大量区域的群集,那么在主服务器启动后,Regionserver可能会暂时检入,而所有剩余的RegionServers落后。 这第一台服务器将被分配到所有不是最优的区域。 为防止发生上述情况,请将hbase.master.wait.on.regionservers.mintostart属性的缺省值设置为1.请参见HBASE-6389修改条件以确保Master等待足够的

开始区域分配(https://issues.apache.org/jira/browse/HBASE-6389)之前的区域服务器数量以获取更多详细信息.

Recommended Configurations(推荐配置)
ZooKeeper Configuration
zookeeper.session.timeout

默认的超时时间是三分钟(以毫秒为单位)。这意味着,如果服务器崩溃,则在主服务器发现崩溃并开始恢复之前三分钟。您可能需要将超时调整到一分钟甚至更短时间,以便主人尽快通知故障。在更改此值之前,请确保您的JVM垃圾收集配置处于受控状态,否则,长时间的垃圾回收会超出ZooKeeper会话超时时间,将取出您的RegionServer。 (你可能没有问题 - 如果RegionServer长时间处于GC状态,可能需要在服务器上启动恢复)。

要更改此配置,请编辑hbase-site.xml,将更改的文件复制到群集中并重新启动。

我们将这个值设置得很高,以免我们不得不在邮件列表上提出问题,询问为什么RegionServer在大量导入期间出现故障。通常的原因是,他们的JVM未被解析,并且正在运行很长的GC暂停。我们的想法是,当用户熟悉HBase的时候,我们会让他们不得不知道所有错综复杂的事情。稍后当他们建立起一些信心的时候,他们就可以玩这样的配置.

Number of ZooKeeper Instances

See zookeeper.

HDFS Configurations
dfs.datanode.failed.volumes.tolerated

这是“... DataNode停止提供服务之前允许失败的卷的数量。默认情况下,任何卷失败都会导致datanode关闭”。 您可能希望将其设置为可用磁盘数量的一半左右.

 

hbase.regionserver.handler.count

此设置定义了保持打开的线程数以回答对用户表的传入请求。 经验法则是当每个请求的有效载荷接近MB(大数据量,使用大缓存扫描)并且当有效载荷小(获取,小投入,ICV,删除)时高。 正在进行的查询的总大小受设置的限制hbase.ipc.server.max.callqueue.size .

 

如果这个数字的有效负载很小,那么将这个数字设置为最大数量的入站客户端是安全的,典型的例子是一个服务于网站的集群,因为put通常不被缓冲,大部分操作都是获取的。

将此设置保持为高度危险的原因是,当前在区域服务器中发生的所有放入的总大小可能对其内存造成太大的压力,甚至会触发OutOfMemoryError。在低内存上运行的RegionServer将触发其JVM的垃圾收集器更频繁地运行,直到GC暂停变得明显(原因是用于保留所有请求的有效载荷的所有内存不能被丢弃,垃圾收集器尝试)。一段时间之后,整个群集吞吐量都会受到影响,因为每个碰到该RegionServer的请求都将花费更长的时间,这更加剧了问题的严重性。

您可以通过rpc.logging查看某个RegionServer上的处理程序是否太少或太多,然后对其日志进行拖尾(排队请求消耗内存).

 

Configuration for large memory machines

HBase提供了一个合理的,保守的配置,可以在几乎所有人们可能想要测试的机器类型上运行。 如果你有更大的机器 - HBase有8G或更大的堆 - 你可能会发现下面的配置选项很有帮助。 去做。

Compression

您应该考虑启用ColumnFamily压缩。 有几个选项几乎是无摩擦的,在大多数情况下都是通过减小StoreFiles的大小来提高性能,从而减少I / O。See compression for more information.

Configuring the size and number of WAL files

在发生RS故障的情况下,HBase使用wal恢复尚未刷新到磁盘的memstore数据。 这些WAL文件应该被配置为略小于HDFS块(默认情况下,HDFS块是64Mb,WAL文件是〜60Mb)。

HBase也对WAL文件的数量有限制,旨在确保在恢复过程中不会有太多的数据需要重放。 这个限制需要根据memstore配置进行设置,以便所有必要的数据都可以适用。 建议分配足够多的WAL文件来存储至少那么多的数据(当所有的存储都接近完整时)。 例如,对于16Gb RS堆,默认的memstore设置(0.4)和默认的WAL文件大小(〜60Mb),16Gb * 0.4 / 60,WAL文件数的起点为〜109。 但是,由于所有的内存不会一直占满,所以可以分配更少的WAL文件.

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时,它是分裂的。对于大多数使用模式,您应该使用自动分割。有关手动区域分割的更多信息,请参阅手动区域分割决定。

不要让HBase自动分割你的区域,你可以选择自己管理分割。 HBase 0.90.0增加了这个功能。如果你知道你的键盘空间,手动管理分割就行,否则让HBase为你分配哪里。手动拆分可以减轻区域创建和负载下的移动。这也使得区域边界是已知的和不变的(如果你禁用区域分割)。如果使用手动分割,则可以更轻松地进行交错式的基于时间的主要压缩来分散网络IO负载.

Disable Automatic Splitting

要禁用自动分割,可以将群集配置或表配置中的区域分割策略设置为org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy

 

Automatic Splitting Is Recommended

 

如果您禁用自动分割来诊断问题或在数据快速增长期间,建议在情况变得更加稳定时重新启用它们。 管理地区的潜在好处不是无可争议的.

 

Determine the Optimal Number of Pre-Split Regions

预分割区域的最佳数量取决于您的应用程序和环境。一个好的经验法则是从每个服务器10个预分割区域开始,随着时间的推移数据不断增长。在地区太少的地方犯错,稍后进行滚动分割更好。区域的最佳数量取决于您所在地区最大的StoreFile。如果数据量增加,最大的StoreFile的大小将随着时间增加。目标是使最大的区域足够大,压缩选择算法仅在定时的主要压缩期间将其压缩。否则,该集群可能会同时出现大量压缩区域的压缩风暴。数据增长导致压缩风暴,而不是人工拆分决策,这一点很重要。

如果区域被分割成太多的大区域,可以通过配置HConstants.MAJOR_COMPACTION_PERIOD来增加主要的压缩时间间隔。 HBase 0.90引入了org.apache.hadoop.hbase.util.RegionSplitter,它提供了所有区域的网络IO安全滚动拆分.

Managed Compactions

默认情况下,主要压缩计划在7天内运行一次。 在HBase 0.96.x之前,默认情况下主要的压缩计划是每天发生一次。

如果您需要精确控制主要压缩的时间和频率,可以禁用托管的主要压缩。 有关详细信息,请参阅compaction.parameters表中的hbase.hregion.majorcompaction条目.

 

Do Not Disable Major Compactions

 

 

对于StoreFile清理来说,重要的压缩是绝对必要的。 不要完全禁用它们。 您可以通过HBase shell或Admin API(https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/Admin.html#majorCompact- org.apache.hadoop)手动运行主要压缩。hbase.TableName-)

.

 

For more information about compactions and the compaction file selection process, see compaction

Speculative Execution

推测执行MapReduce任务是默认开启的,对于HBase集群,通常建议关闭系统级的推测执行,除非您需要特定情况下的配置,可以按每个作业进行配置。 将属性mapreduce.map.speculative和mapreduce.reduce.speculative设置为false.

Other Configurations
Balancer

平衡器是在主站上运行的一个周期性操作,用于重新分配集群上的区域。 它通过hbase.balancer.period进行配置,默认为300000(5分钟)。

有关LoadBalancer的更多信息,请参阅master.processes.loadbalancer.

Disabling Blockcache

不要关闭块缓存(你可以通过设置hfile.block.cache.size为零来实现)。 目前我们做得不好,如果你这样做,因为RegionServer将花费所有的时间一次又一次地加载HFile索引。 如果你的工作集是这样的块缓存你不好,至少调整块缓存的大小,使HFile指数保持在缓存(你可以通过调查RegionServer UI粗略地了解你需要的大小;你会 请参阅占网页顶部附近的索引块大小).

Nagle’s (http://en.wikipedia.org/wiki/Nagle’s_algorithm) or the small package problem

如果在对HBase的操作中出现大约40ms左右的延迟,请尝试Nagles的设置。 例如,请参阅用户邮件列表线程,缓存设置为1的扫描性能不一致

(http:// search-hadoop.com/m/pduLg2fydtE/Inconsistent+scan+performance+with+caching+set+&subj=Re+Inconsistent+scan+performance+with+caching+set+to+1)

以及其中设置notcpdelay改善扫描速度的问题。 您可能还会看到HBASE-7008 Set扫描仪缓存尾部的图形缓存为更好的默认值(https://issues.apache.org/jira/browse/HBASE-7008),我们的Lars Hofhansl尝试使用Nagle的各种数据大小 打开和关闭测量效果.

Better Mean Time to Recover (MTTR)

这部分内容是关于在服务器出现故障后服务器恢复更快的配置。 请参阅Deveraj Das和Nicolas Liochon博客文章HBase平均恢复时间介绍(MTTR)

(http://hortonworks.com/blog/introduction-to-hbase-mean-time-to-recover-mttr/)进行简要介绍。

问题HBASE-8354强制Namenode进入带有租约恢复请求(https://issues.apache.org/jira/browse/HBASE-8389)的循环是混乱的,但在低超时以及如何 导致更快的恢复,包括引入添加到HDFS的修复程序。 阅读Varun Sharma的评论。 下面的建议配置是蒸馏和测试Varun的建议。 确保你在HDFS版本上运行,所以你有他提到的修补程序,他自己添加到HDFS,帮助HBase MTTR(例如HDFS-3703,HDFS-3712和HDFS-4791 -Hadoop 2确实有他们和 后期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>
XML

 

And on the NameNode/DataNode side, set the following to enable 'staleness' introduced in HDFS-3703, HDFS-3912.

 

 

 

<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>


XML

 

 

JMX

JMX(Java Management Extensions,Java管理扩展)提供了内置的工具,使您能够监视和管理Java VM。 要启用远程系统的监视和管理,您需要在启动Java VM时设置系统属性com.sun.management.jmxremote.port(希望启用JMX RMI连接的端口号)。 有关更多信息,请参阅官方文档(http://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html)。 从历史上看,除了上面提到的端口之外,JMX还会打开两个附加的随机TCP侦听端口,这可能会导致端口冲突问题。 (有关详细信息,请参阅HBASE-10289(https://issues.apache.org/jira/browse/HBASE-10289)

作为替代,您可以使用HBase提供的基于协处理器的JMX实现。 要在0.99或更高版本中启用它,请在hbase-site.xml中添加以下属性:

 

 

 

<property>

<name>hbase.coprocessor.regionserver.classes</name>

<value>org.apache.hadoop.hbase.JMXListener</value>

</property>


XML

 

 

   DO NOT set com.sun.management.jmxremote.port for Java VM at the same time.

目前它支持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>


XML

 

 

在大多数情况下,注册表端口可以与连接器端口共享,所以只需要配置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 "


BASH

 

 

See example password/access file under $JRE_HOME/lib/management.

To enable SSL communication with password authentication, follow below steps:

 

 

 

#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


BASH

 

 

And then update hbase-env.sh like below:

 

 

 

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 "


BASH

 

 

Finally start jconsole on the client using the key store:

 

jconsole -J-Djavax.net.ssl.trustStore=/home/tianq/jconsoleKeyStore                                                         BASH

   To enable the HBase JMX implementation on Master, you also need to add below property in hbase-site.xml:

<property>

<name>hbase.coprocessor.master.classes</name>

<value>org.apache.hadoop.hbase.JMXListener</value>

</property>

The corresponding properties for port configuration are master.rmi.registry.port (by default 10101) and

master.rmi.connector.port (by default the same as registry.port)

2.5  Dynamic Configurations

由于HBase 1.0.0,可以更改配置的一个子集,而不需要重新启动服务器。 在HBase shell中,有新的操作符update_config和update_all_config,它们将提示服务器或所有服务器重新加载配置。

在运行的服务器中,当前只能更改所有配置的子集。 这是这些配置

: Table 3. Configurations support dynamically change

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.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.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

以上为可以动态在线更改的参数

转载于:https://www.cnblogs.com/hit-zb/p/8576171.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值