HBase是Hadoop的生态系统,是建立在Hadoop文件系统之上的分布式、面向列的数据库,通过利用Hadoop的文件系统提供容错能力。如果你需要进行实时读写或者随机访问大规模的数据集的时候,请考虑使用HBase!
HBase作为GoogleBigtable的开源实现,GoogleBigtable利用GFS作为其文件存储系统类似,则HBase利用HadoopHDFS作为其文件存储系统;Google通过运行MapReduce来处理Bigtable中的海量数据,同样,HBase利用HadoopMapReduce来处理HBase中的海量数据;GoogleBigtable利用Chubby作为协同服务,HBase利用Zookeeper作为对应。
HBase处理数据
虽然Hadoop是一个高容错、高延时的分布式文件系统和高并发的批处理系统,但是它不适用于提供实时计算;HBase是可以提供实时计算的分布式数据库,数据被保存在HDFS分布式文件系统上,由HDFS保证期高容错性,但是再生产环境中,HBase是如何基于hadoop提供实时性呢?HBase上的数据是以StoreFile二进制流的形式存储在HDFS上block块儿中;但是HDFS并不知道的HBase用于存储什么,它只把存储文件认为是二进制文件,也就是说,HBase的存储数据对于HDFS文件系统是透明的。
在下面的表格中,我们对HDFS与HBase进行比较:
HBase数据模型
现在我们来看看HBase的逻辑数据模型与物理数据模型:
逻辑数据模型:
物理数据模型:
HBase架构
下显示了HBase的组成结构:
通过上我们可以得出Hbase中的每张表都按照一定的范围被分割成多个子表,默认一个HRegion超过256M就要被分割成两个,由HRegionServer管理,管理哪些HRegion由HMaster分配。
Client:包含访问HBase的接口,并维护cache来加快对HBase的访问。Zookeeper:HBase依赖Zookeeper,默认情况下HBase管理Zookeeper实例,Master与RegionServers启动时会向Zookeeper注册。Zookeeper的作用如下:保证任何时候,集群中只有一个master存储所有Region的寻址入口实时监控Regionserver的上线和下线信息。并实时通知给master存储HBase的schema和table元数据HRegionServer:用来维护master分配给他的region,处理对这些region的io请求;负责切分正在运行过程中变的过大的region。HRegion:HBase表在行的方向上分隔为多个Region。Region是HBase中分布式存储和负载均衡的最小单元,即不同的region可以分别在不同的RegionServer上,但同一个Region是不会拆分到多个server上。Region按大小分隔,每个表一般是只有一个region,当region的某个列族达到一个阈值时就会分成两个新的region。Store:每一个Region由一个或多个Store组成,至少是一个Store,HBase会把一起访问的数据放在一个Store里面,即为每个ColumnFamily建一个Store,如果有几个ColumnFamily,也就有几个Store。一个Store由一个memStore和0或者多个StoreFile组成。Store的大小被HBase用来判断是否需要切分Region。StoreFile:memStore内存中的数据写到文件后就是StoreFile,StoreFile底层是以HFile的格式保存。HLog:HLog记录数据的所有变更,可以用来恢复文件,一旦regionserver宕机,就可以从log中进行恢复。LogFlusher:一个LogFlusher的类是用来调用HLog.optionalSync的。
HBase的应用
HBase是用来当有需要写重的应用程序。HBase可以帮助快速随机访问数据。HBase被许多公司所采纳,例如,Facebook、Twitter、Yahoo!、Adobe、OpenPlaces、WorldLingo等等。
HBase独立模式
在一个独立的HBase实例中,它具有所有的HBase系统服务程序:Master、RegionServers和ZooKeeper。这是我们最基本的部署配置文件。我们将向您展示如何使用HBaseshellCLI在HBase中创建表,在表中插入行,对表执行放置和扫描操作,启用或禁用表,以及启动和停止HBase。除了下载HBase,只要10分钟就可以完成以下的操作。
以下/etc/hosts文件可以在Ubuntu的HBase0.9x及更早版本上正确运行。如果遇到麻烦,请将其作为模板使用。
127.0.0.1 localhost
ubuntu.ubuntu-domain Ubuntu下的127.0.0.1
这个问题已经在hbase-0.90及更高版本中得到修复。
JDK版本要求:
HBase要求安装JDK。
HBase下载与启动:
$ tar xfz hbase-0.95-SNAPSHOT.tar.gz
$ cd hbase-0.95-SNAPSHOT
JAVA_HOME = / USR
独立HBase的hbase-site.xml:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///home/testuser/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/testuser/zookeeper</value>
</property>
</configuration>
提供了bin/start-hbase.sh脚本来方便的启动HBase。发出命令,如果一切正常,则会将消息记录到标准输出,显示HBase已成功启动。您可以使用该jps命令来验证您是否有一个名为HMaster的正在运行的进程。在独立模式下,HBase在单个JVM中运行所有守护进程,即HMaster,单个HRegionServer和ZooKeeper守护进程。
为此,打开HBase主文件夹,然后运行HBase启动脚本,如下所示:
$cd /usr/local/HBase/bin
$./start-hbase.sh
如果一切顺利,当运行HBase启动脚本,它会提示一条消息:HBase已经启动
starting master, logging to /usr/local/HBase/bin/../logs/hbase-tpmaster-localhost.localdomain.out
提示:Java需要安装并可用。如果您得到一个错误,指示Java未安装,但它位于您的系统上,请编辑conf/hbase-env.sh文件,并将该JAVA_HOME设置修改为指向包含在你的系统上的bin/Java。
shell练习——首次使用HBase:
停止HBase:
与提供bin/start-hbase.sh脚本以便方便地启动所有HBase守护进程相同,你可以使用bin/stop-hbase.sh脚本停止它们。$./bin/stop-hbase.shstoppinghbase....................$发出命令后,进程关闭可能需要几分钟的时间。使用jps要确保HMASTER和HRegionServer进程被关闭。
HBase伪分布式模式
在通过快速启动HBase的独立模式工作之后,您可以重新配置HBase以伪分布式模式运行。伪分布模式意味着HBase仍然在单个主机上完全运行,但是每个HBase守护进程作为一个单独的进程运行:在独立模式下,所有守护进程都运行在一个jvm进程/实例中。默认情况下,除非按照快速启动HBase的独立模式中所述配置hbase.rootdir属性,否则您的数据仍存储在/tmp/中。在本演练中,我们将数据存储在HDFS中,假设您有HDFS可用。您可以跳过HDFS配置,继续将数据存储在本地文件系统中。
Hadoop配置:
此过程假定您已在本地系统或远程系统上配置Hadoop和HDFS,并且它们正在运行且可用。它还假定您正在使用Hadoop
HBase完全分布式模式
实际上,您需要一个完全分布式的配置来全面测试HBase,并将其用于实际场景中。在分布式配置中,集群包含多个节点,每个节点运行一个或多个HBase守护进程。这些包括主要和备份主实例,多个ZooKeeper节点和多个RegionServer节点。
此高级快速入门将两个以上的节点添加到您的群集。架构如下:
node-a.example.com | 是 | 是 | 没有 |
node-b.example.com | 备用 | 是 | 是 |
node-c.example.com | 没有 | 是 | 是 |
这个快速入门假定每个节点都是虚拟机,并且它们都在同一个网络上。它基于之前的快速入门、伪分布式本地安装,假设您在该过程中配置的系统是现在node-a。继续之前,在node-a停止HBase。
提示:请确保所有节点都具有完全的通信访问权限,并且没有任何防火墙规则可以阻止它们相互交谈。如果您看到任何错误,如noroutetohost,请检查您的防火墙。
配置无密码SSH访问
node-a需要能够登录node-b和node-c才能启动守护进程。实现这一点的最简单的方法是在所有主机上使用相同的用户名,并配置无密码的SSH登录,从node-a到其他的。
准备node-a:
node-a将运行您的主要主服务器和ZooKeeper进程,但不运行RegionServers。从node-a停止启动RegionServer。
编辑conf/regionservers并删除包含localhost的行。为node-b和node-c加入具有主机名或IP地址线。即使你想在node-a运行一个RegionServer,你也应该用其他服务器用来与之通信的主机名来引用它。在这种情况下,那将是node-a.example.com。这使您可以将配置分发给群集中的每个节点,而不会造成任何主机名冲突。保存文件。配置HBase以将node-b作为备份主机。在conf/调用backup-masters中创建一个新文件,并添加一个新的行,其中的主机名为node-b。在这个演示中,主机名是node-b.example.com。配置ZooKeeper。实际上,你应该仔细考虑你的ZooKeeper配置。您可以在zookeeper部分找到更多关于配置ZooKeeper的信息。这个配置将指示HBase在集群的每个节点上启动和管理一个ZooKeeper实例。在node-a上,编辑conf/hbase-site.xml并添加下列属性。
准备node-b和node-c:
node-b将运行一个备份主服务器和一个ZooKeeper实例。
启动并测试群集:
HBase配置使用
HBase配置文件
HBase配置文件说明
检查XML有效性
在编辑XML时,最好使用支持XML的编辑器,以确保您的语法正确且XML格式良好。您还可以使用该xmllint实用程序检查您的XML格式是否正确。默认情况下,xmllint重新流动并将XML打印到标准输出。要检查格式是否正确,并且只在存在错误时才打印输出,请使用命令xmllint-nooutfilename.xml。
在群集之间保持同步配置
HBase基础条件
安装Java
Java是Hadoop和HBase主要先决条件。首先应该使用"java-verion"检查java是否存在在您的系统上。java-version命令的语法如下。
$ java -version
如果一切正常,它会得到下面的输出。
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)
如果Java还没有安装在系统中,请你安装Java!
HBase版本与JDK
在下表中你可以看到HBase版本与其对应支持的JDK版本:
2.0 | 支持 | |
1.3 | 支持 | 支持 |
1.2 | 支持 | 支持 |
1.1 | 支持 | 使用JDK 8运行将会正常工作,但是没有得到很好的测试。 |
注意:HBase不会使用Java6构建或编译,并且,您必须在群集的每个节点上设置JAVA_HOME,hbase-env.sh提供了一个方便的机制来做到这一点。
操作系统
HBase使用本地主机名来自行报告其IP地址。正向和反向DNS解析必须在0.90之前的HBase版本中工作。hadoop-dns-checker工具,可以用来验证DNS在集群上是否正常工作。项目README文件提供了有关使用的详细说明。
文件和进程数限制
ApacheHBase是一个数据库。它需要能够一次打开大量的文件。许多Linux发行版限制了允许单个用户打开的文件数量102当以运行HBase的用户身份登录时,您可以通过在服务器上运行ulimit-n命令来检查服务器上的限制。您也可能会注意到以下错误:
2010-04-06 03:04:37,542信息org.apache.hadoop.hdfs.DFSClient:异常increateBlockOutputStream java.io.EOFException
2010-04-06 03:04:37,542 INFO org.apache.hadoop.hdfs.DFSClient:放弃块blk_-6935524980745310745_1391901
建议将ulimit提高到至少10,000,但更可能是10,240,因为该值通常以1024的倍数表示。每个ColumnFamily至少有一个StoreFile,如果该区域处于加载状态,则可能有多于六个的StoreFile。所需的打开文件的数量取决于ColumnFamilies的数量和区域的数量。以下是计算RegionServer上打开的文件的潜在数量的粗略公式。
计算打开文件的潜在数量:
(每个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异常。
为运行HBase进程的用户配置文件描述符和进程的最大数量是操作系统配置,而不是HBase配置。确保为实际运行HBase的用户更改设置也很重要。要查看哪个用户启动了HBase,以及该用户的ulimit配置,请查看该实例的HBase日志的第一行。
示例:ulimit在Ubuntu上的设置
hadoop - nofile 32768
hadoop - nproc 32000
这些设置仅适用于可插入身份验证模块环境指示使用它们的情况。要配置PAM以使用这些限制,请确保/etc/pam.d/common-session文件包含以下行:
session required pam_limits.so
所有HBase附带的shell脚本都依赖于GNUBashshell。
在HBase0.96之前,在MicrosoftWindows上运行HBase仅限于测试目的。不建议在Windows计算机上运行生产系统。
使用以下的注解来解释下面的这个表格:
Hadoop版本支持矩阵:
“S”=支持“X”=不支持“NT”=未测试
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 |
在Kerberos环境中使用pre-1Hadoop版本和JDK8时,HBase服务器可能因Kerberoskeytabrelogin错误而失败并中止。JDK7的后期版本也有问题。在这种情况下考虑升级到Hadoop1+。
如果您计划在HDFS加密区域的顶部运行HBase,则基于x行的Hadoop发行版必须具有HADOOP-11710应用。如果不这样做,将导致群集故障和数据丢失。此修补程序存在于ApacheHadoop1+版本中。
Hadoop0版本未经测试或不受支持,因为HadoopPMC明确将该版本标记为不稳定。
Hadoop0和1版本未经测试或不受支持,因为HadoopPMC明确标记版本不稳定。
更换与HBase捆绑的Hadoop:
HDFSDataNode在任何时候都会有一个文件数上限。在进行任何加载之前,请确保您已经配置了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...
ZooKeeper要求
HBase运行模式
HBase运行模式:独立式和分布式
独立式HBase
独立于HDFS的HBase
有时在独立的hbase上有一个有用的变体,它的所有的守护进程都在一个JVM中运行,而不是持久化到本地文件系统,而是持久化到一个HDFS实例。
当您打算使用简单的部署配置文件时,您可能会考虑使用此配置文件,加载很轻松,但是数据必须在节点的出入之间持续存在。向HDFS写入数据的地方可以确保后者。
<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>
分布式HBase
分布式模式可以细分为分布式、伪分布式、完全分布式。其中,伪分布式模式与完全分布式的命名来自于Hadoop。
伪分布式HBase
伪分布式模式的HBase就是在单个主机上运行的完全分布式模式。使用此HBase配置仅进行测试和原型设计。请勿将此配置用于生产或性能评估。
完全分布式
默认情况下,HBase以独立模式运行,独立模式和伪分布模式用于小规模测试。对于生产环境,建议使用分布式模式。在分布式模式下,HBase守护进程的多个实例在集群中的多个服务器上运行。
就像在伪分布式模式中一样,完全分布式的配置要求您将hbase.cluster.distributed属性设置为true。通常情况下,hbase.rootdir被配置为指向高可用性的HDFS文件系统。
此外,还配置了群集,以便多个群集节点成为RegionServer、ZooKeeperQuorumPeers和备份HMaster服务器。
分布式区域服务器
你的群集将包含多个运行在不同服务器上的RegionServer,以及主要和备份Master和ZooKeeper守护程序。主服务器上的conf/regionservers文件中包含一个主机列表,其RegionServers与该集群相关。每个主机都在一个单独的行上。当主服务器启动或停止时,此文件中列出的所有主机将启动和停止其RegionServer进程。
示例-分布式HBase集群示例
<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>
node-a.example.com
node-b.example.com
node-c.example.com
这是conf/backup-masters文件的示例,其中包含应运行备份主实例的每个节点的列表。除非主主站变为不可用,否则备份主站实例将处于空闲状态。
node-b.example.com
node-c.example.com
分布式HBase快速入门
HDFS客户端配置
值得注意的是,如果您在Hadoop集群上进行了HDFS客户端配置更改,而不是服务器端配置,则必须使用以下方法之一来启用HBase以查看和使用这些配置更改:在hbase-env.sh中添加一个指向你HADOOP_CONF_DIR的HBASE_CLASSPATH环境变量的指针;在${HBASE_HOME}/conf下添加一个hdfs-site.xml或更好的符号链接;如果只有一小部分HDFS客户端配置,请将它们添加到hbase-site.xml。
HBase运行
运行HBase
如果您正在管理您自己的ZooKeeper,请启动它并确认它正在运行,否则HBase将启动ZooKeeper作为其启动过程的一部分。
bin/start-hbase.sh
退出HBaseshell后停止HBase进入:
$ ./bin/stop-hbase.sh
stopping hbase...............
关机可能需要稍等一些时间才能完成。如果您的集群由多台计算机组成,则可能需要更长的时间。如果您正在运行分布式操作,那么在停止Hadoop守护进程之前,一定要等到HBase完全关闭。
使用Shell可以与HBase进行通信。HBase使用Hadoop文件系统来存储数据。它拥有一个主服务器和区域服务器。数据存储将在区域的形式。这些区域被分割并存储在区域服务器。
主服务器管理这些区域服务器,所有这些任务发生在HDFS。下面给出的是一些由HBaseShell支持的命令。
Shell通用命令
status:提供HBase的状态,例如,服务器的数量。version:提供正在使用HBase版本。table_help:表引用命令提供帮助。whoami:提供有关用户的信息。
Shell数据定义语言
下面列举了HBaseShell支持的可以在表中操作的命令。
create:用于创建一个表。list:用于列出HBase的所有表。disable:用于禁用表。is_disabled:用于验证表是否被禁用。enable:用于启用一个表。is_enabled:用于验证表是否已启用。describe:用于提供了一个表的描述。alter:用于改变一个表。exists:用于验证表是否存在。drop:用于从HBase中删除表。drop_all:用于丢弃在命令中给出匹配“regex”的表。JavaAdminAPI:在此之前所有的上述命令,Java提供了一个通过API编程来管理实现DDL功能。在这个org.apache.hadoop.hbase.client包中有HBaseAdmin和HTableDescriptor这两个重要的类提供DDL功能。
Shell数据操作语言
put:用于把指定列在指定的行中单元格的值在一个特定的表。get:用于取行或单元格的内容。delete:用于删除表中的单元格值。deleteall:用于删除给定行的所有单元格。scan:用于扫描并返回表数据。count:用于计数并返回表中的行的数目。truncate:用于禁用、删除和重新创建一个指定的表。JavaclientAPI:在此之前所有上述命令,Java提供了一个客户端API来实现DML功能,CRUD操作更多的是通过编程,在org.apache.hadoop.hbase.client包下。在此包HTable的Put和Get是重要的类。
启动HBaseShell
要访问HBaseshell,你需要进入到HBase的主文件夹中:
cd /usr/localhost/
cd Hbase
然后通过使用“hbaseshell”命令启动HBaseshell:
./bin/hbase shell
如果已成功在系统中安装HBase,那么它会给出HBaseshell提示符,如下所示。
HBase Shell; enter "help<RETURN>" for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.94.23, rf42302b28aceaab773b15f234aa8718fff7eea3c, Wed Aug 27
00:54:09 UTC 2014
hbase(main):001:0>
退出HBaseShell
要退出shell命令,你可以通过键入exit或使用
HBase默认配置
并不是所有的配置选项都会将其发送到hbase-default.xml。一些配置只会出现在源代码中;因此识别这些更改的唯一方法是通过代码审查。
目前,这里的更改将需要为HBase重启集群来注意到这个变化。
HBase默认配置
以下文档是使用默认的HBase配置文件hbase-default.xml作为源生成的。
hbase.tmp.dir
默认为:${java.io.tmpdir}/hbase-${user.name}
hbase.rootdir
默认为:${hbase.tmp.dir}/hbase
hbase.cluster.distributed
群集所处的模式。对于独立模式,可能的值为false,对于分布式模式,可能的值为true。如果为false,启动将在一个JVM中一起运行所有HBase和ZooKeeper守护程序。
默认为:false
hbase.zookeeper.quorum
使用逗号分隔的ZooKeeper集合中的服务器列表。例如,“hostmydomain.com,hostmydomain.com,hostmydomain.com”。默认情况下,对于本地和伪分布式操作模式,将其设置为localhost。对于完全分布式安装,应将其设置为ZooKeeper集成服务器的完整列表。如果在hbase-env.sh中设置HBASE_MANAGES_ZK,这是hbase将作为群集启动/停止的一部分来启动/停止ZooKeeper的服务器列表。客户端,我们将把这个集合成员的列表,并把它与hbase.zookeeper.property.clientPort配置放在一起。并将其作为connectString参数传递给zookeeper构造函数。
默认为:localhost
zookeeper.recovery.retry.maxsleeptime
在重试zookeeper操作之前的最大睡眠时间,这里需要最大时间,以便睡眠时间不会无限增长。
默认为:60000
hbase.local.dir
默认为:${hbase.tmp.dir}/local/
hbase.master.port
HBaseMaster应该绑定的端口。
默认为:16000
hbase.master.info.port
HBaseMasterWebUI的端口。如果您不想运行UI实例,请将其设置为-
默认为:16010
hbase.master.info.bindAddress
HBaseMasterWebUI的绑定地址
默认为: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
默认为:600000
hbase.master.procedurewalcleaner.ttl
默认为:604800000
hbase.master.hfilecleaner.plugins
由HFileCleaner服务调用的BaseHFileCleanerDelegate的逗号分隔列表。这些HFile清理器按顺序调用。要实现您自己的BaseHFileCleanerDelegate,只需将其放入HBase的类路径中,并在此添加完全限定的类名。总是在列表中添加上面的默认日志清除程序,因为它们将被覆盖在hbase-site.xml中。
hbase.master.infoserver.redirect
Master是否监听MasterWebUI端口并将请求重定向到由Master和RegionServer共享的WebUI服务器。配置,当主服务区域时是有意义的。
默认为:true
hbase.master.fileSplitTimeout
分割一个区域,在放弃尝试之前等待文件分割步骤需要多长时间。默认值:600000。这个设置在hbase-x中被称为hbase.regionserver.fileSplitTimeout。Split现在运行主端,因此重命名(如果找到"hbase.master.fileSplitTimeout"设置,将使用它来填充当前"hbase.master.fileSplitTimeout"配置。
默认为:600000
hbase.regionserver.port
HBaseRegionServer绑定的端口。
默认为:16020
hbase.regionserver.info.port
默认为:16030
hbase.regionserver.info.bindAddress
默认为:0.0.0.0
hbase.regionserver.info.port.auto
Master或RegionServerUI是否应搜索要绑定的端口。如果hbase.regionserver.info.port已被使用,则启用自动端口搜索。用于测试,默认关闭。
默认为:false
hbase.regionserver.handler.count
在RegionServers上启动RPCListener实例的计数。Master使用相同的属性来处理主处理程序的数量。太多的处理者可能会适得其反。使其成为CPU数量的倍数。如果主要是只读的,处理程序计数接近CPU计数做得很好。从CPU数量的两倍开始,并从那里调整。
默认为:30
hbase.ipc.server.callqueue.handler.factor
确定呼叫队列数量的因素。值为0表示在所有处理程序之间共享单个队列。值为1意味着每个处理程序都有自己的队列。
默认为:0.1
hbase.ipc.server.callqueue.read.ratio
将调用队列分成读写队列。指定的时间间隔将乘以调用队列的数量。值为0表示不分割调用队列,这意味着读取和写入请求将被推送到相同的一组队列中。低于0.5的值意味着将比写入队列更少的读取队列。值为0.5意味着将有相同数量的读写队列。大于0.5的值意味着将有更多的读队列而不是写入队列。值为0意味着除了一个之外的所有队列都用于发送读取请求。示例:假设调用队列的总数为则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个队列将只包含写入请求。
默认为:0
hbase.ipc.server.callqueue.scan.ratio
考虑到读取的调用队列的数量,scan.ratio属性将把读取的调用队列拆分为小读取和长读取队列。低于0.5的值意味着长读队列比短读队列少。值为0.5意味着将有相同数量的短读取和长读取队列。大于0.5的值意味着将会有比长读取队列更多的长读取队列。值0或1表示使用同一组队列进行获取和扫描。示例:给定读取调用队列的总数为scan.ratio为0或1意味着:8个队列将包含长读请求和短读请求。0.3的scan.ratio表示:2个队列只包含长读请求,6个队列只包含短读请求。0.5的scan.ratio表示:4个队列只包含长读请求,4个队列只包含短读请求。0.8的scan.ratio意味着:6个队列只包含长读请求,2个队列只包含短读请求。
默认为:0
hbase.regionserver.msginterval
从RegionServer到Master的消息间隔。
默认为:3000
hbase.regionserver.logroll.period
无论有多少次编辑,我们将滚动提交日志的时间段。
默认为:3600000
hbase.regionserver.logroll.errors.tolerated
在触发服务器中止之前,我们将允许连续的WAL关闭错误的数量。如果在日志滚动过程中关闭当前WAL书写器失败,则设置为0将导致区域服务器中止。即使是一个很小的值也会让区域服务器承担瞬间的HDFS错误。
默认为:2
hbase.regionserver.hlog.reader.impl
WAL文件读取器的实现。
hbase.regionserver.hlog.writer.impl
WAL文件编写器的实现。
hbase.regionserver.global.memstore.size
在新更新被阻止并刷新之前,区域服务器中所有存储区的最大大小。默认为堆的40%。更新被阻止,强制刷新直到区域服务器中的所有内存大小都达到hbase.regionserver.global.memstore.size.lower.limit。此配置中的默认值已被故意留空,以便兑现旧的hbase.regionserver.global.memstore.upperLimit属性。
没有默认值。
hbase.regionserver.global.memstore.size.lower.limit
强制刷新之前,区域服务器中所有存储区的最大大小。默认为hbase.regionserver.global.memstore.size的95%。当由于内存限制而导致更新被阻塞时,此值的100%会导致最小可能的刷新。此配置中的默认值已被故意留空,以便兑现旧的hbase.regionserver.global.memstore.lowerLimit属性。
没有默认值。
hbase.systemtables.compacting.memstore.type
确定用于系统表的memstore的类型。默认情况下,NONE是类型,因此我们对所有系统表使用默认的memstore。如果我们需要为系统表使用压缩存储器,那么将这个属性设置为:BASIC/EAGER
默认值:NONE
hbase.regionserver.optionalcacheflushinterval
在自动刷新之前,编辑在内存中的最长时间。默认为1小时。将其设置为0将禁用自动刷新。
默认为:3600000
hbase.regionserver.dns.interface
区域服务器应从中报告其IP地址的网络接口的名称。
默认为:default
hbase.regionserver.dns.nameserver
域名服务器应使用的名称服务器的主机名或IP地址,以确定主机用于通信和显示的主机名。
默认为:default
hbase.regionserver.region.split.policy
分割策略决定了一个区域应该何时拆分。当前可用的各种其他拆分策略是:BusyRegionSplitPolicy,ConstantSizeRegionSplitPolicy,DisabledRegionSplitPolicy,DelimitedKeyPrefixRegionSplitPolicy,KeyPrefixRegionSplitPolicy和SteppingSplitPolicy。DisabledRegionSplitPolicy会阻止手动区域分割。
hbase.regionserver.regionSplitLimit
限制区域数量,之后不再发生区域分割。这并不是硬性限制区域数量,而是作为区域服务商在一定限度之后停止分裂的指导方针。默认设置为1000。
默认为:1000
zookeeper.session.timeout
默认为:90000
zookeeper.znode.parent
默认为:/hbase
zookeeper.znode.acl.parent
RootZNode用于访问控制列表。
默认为:acl
hbase.zookeeper.dns.interface
ZooKeeper服务器应从中报告其IP地址的网络接口的名称。
默认为:default
hbase.zookeeper.dns.nameserver
名称服务器的主机名或IP地址,ZooKeeper服务器应使用该名称服务器来确定主机用于通信和显示的主机名。
默认为:default
hbase.zookeeper.peerport
默认为:2888
hbase.zookeeper.leaderport
默认为:3888
hbase.zookeeper.property.initLimit
来自ZooKeeper的配置zoo.cfg的属性。初始同步阶段可以采用的时钟周期数。
默认为:10
hbase.zookeeper.property.syncLimit
来自ZooKeeper的配置zoo.cfg的属性。发送请求和获取确认之间可以传递的时钟数量。
默认为:5
hbase.zookeeper.property.dataDir
默认为:${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
一般客户端pause值。在运行失败的get,regionlookup等的重试之前,主要用作等待的值。
默认为:100
hbase.client.pause.cqtbe
是否为CallQueueTooBigException使用特殊的客户端pause。如果您观察到来自同一个RegionServer的频繁的CQTBE,并且其中的调用队列保持充满,则将此属性设置为比hbase.client.pause更高的值
没有默认值。
hbase.client.retries.number
默认为:15
hbase.client.max.total.tasks
单个HTable实例发送到集群的最大并发突变任务数。
默认为:100
hbase.client.max.perserver.tasks
单个HTable实例将发送到单个区域服务器的并发突变任务的最大数量。
默认为:2
hbase.client.max.perregion.tasks
客户端将维护到单个Region的最大并发突变任务数。也就是说,如果已经有hbase.client.max.perregion.tasks写入这个区域,那么新的放入将不会被发送到这个区域,直到一些写入完成。
默认为:1
hbase.client.perserver.requests.threshold
所有客户端线程中一个服务器的并发未决请求的最大数量。超过请求将立即抛出ServerTooBusyException,以防止用户的线程被占用和只被一个缓慢的区域服务器阻止。如果使用固定数量的线程以同步方式访问HBase,请将此值设置为与线程数量相关的适当值,这些值将对您有所帮助。
默认为:2147483647
hbase.client.scanner.caching
如果从本地,客户端内存中未提供,则在扫描程序上调用next时尝试获取的行数。此配置与hbase.client.scanner.max.result.size一起使用,可以有效地使用网络。缺省值默认为Integer.MAX_VALUE,这样网络将填充由hbase.client.scanner.max.result.size定义的块大小,而不受特定行数的限制,因为行的大小随表格的不同而不同。如果您事先知道扫描中不需要超过一定数量的行,则应通过扫描#setCaching将此配置设置为该行限制。缓存值越高,扫描器的速度越快,但是会占用更多的内存,而当缓存空置时,下一次调用的时间可能会越来越长。请勿设置此值,以便调用之间的时间大于扫描器超时;即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
平衡时转换区域的最大百分比。默认值是0。所以没有平衡器节流。如果将此配置设置为0.0则意味着在平衡时转换中最多有1%的区域。那么当平衡时,集群的可用性至少为99%。
默认为:0
hbase.balancer.period
区域平衡器在主站运行的时间段。
默认为:300000
hbase.normalizer.period
区域标准化程序在主程序中运行的时段。
默认为:300000
hbase.regions.slop
如果任何区域服务器具有平均值+区域,则重新平衡。StochasticLoadBalancer中此参数的默认值为0.00其他负载均衡器中的默认值为0.
默认为:0.001
hbase.server.thread.wakefrequency
在两次搜索之间休息的时间。用作日志滚筒等服务线程的睡眠间隔。
默认为:10000
hbase.server.versionfile.writeattempts
在放弃之前重试尝试写入版本文件的次数。每个尝试都由hbase.server.thread.wake频率毫秒分隔。
默认为:3
hbase.hregion.memstore.flush.size
如果memstore的大小超过此字节数,Memstore将被刷新到磁盘。值由每个hbase.server.thread.wakefrequency运行的线程检查。
默认为:134217728
hbase.hregion.percolumnfamilyflush.size.lower.bound.min
如果使用了FlushLargeStoresPolicy,并且有多个列族,那么每当我们达到完全的memstore限制时,我们就会找出所有memstore超过“下限”的列族,只有在保留其他内存的同时刷新它们。默认情况下,“下限”将是“hbase.hregion.memstore.flush.size/column_family_number”,除非该属性的值大于该值。如果没有一个族的memstore大小超过下限,所有的memstore都将被刷新。
默认为:16777216
hbase.hregion.preclose.flush.size
如果我们关闭时某个区域的存储空间大于或等于这个大小,则可以运行“预先刷新”来清除存储区,然后再放置区域关闭标记并使区域脱机。关闭时,在关闭标志下运行刷新以清空内存。在此期间,该地区处于离线状态,我们没有进行任何写入。如果memstore内容很大,则此刷新可能需要很长时间才能完成。这个预刷新是为了清理大部分的memstore,然后把关闭标志放到离线区域,这样在关闭标志下运行的刷新没有什么用处。
默认为:5242880
hbase.hregion.memstore.block.multiplier
如果memstore具有hbase.hregion.memstore.block.multiplier乘以hbase.hregion.memstore.flush.size个字节,则阻止更新。在更新通信高峰期间有用的防止失控的memstore。如果没有上限,memstore就会填满,当刷新生成的flush文件需要很长时间才能压缩或拆分。
默认为:4
hbase.hregion.memstore.mslab.enabled
启用MemStore-Local分配缓冲区,该功能可用于在繁重的写入负载下防止堆碎片。这可以减少在大堆停止全局GCpause的频率。
默认为:true
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
如果任何一个Store中存在超过此数量的StoreFiles,则会执行压缩以将所有StoreFile重写为单个StoreFile。较大的值会延迟压实,但是当压缩发生时,需要较长时间才能完成。
默认为:3
hbase.hstore.flusher.count
刷新线程的数量。用更少的线程,MemStore刷新将排队。随着线程数量的增加,刷新将并行执行,增加了HDFS的负载,并可能导致更多的压缩。
默认为:2
hbase.hstore.blockingStoreFiles
如果任何一个Store中存在超过此数量的StoreFiles,则会阻止该区域的更新,直到压缩完成或超出hbase.hstore.blockingWaitTime。
默认为:16
hbase.hstore.blockingWaitTime
在达到hbase.hstore.blockingStoreFiles定义的StoreFile限制后,区域将阻止更新的时间。经过这段时间后,即使压缩尚未完成,该地区也将停止阻止更新。
默认为:90000
hbase.hstore.compaction.min
压缩可以运行之前,必须有符合进行压缩条件的最小StoreFiles数量。调整hbase.hstore.compaction.min的目标是避免使用太多的小型StoreFiles来压缩。如果将此值设置为则每次在Store中有两个StoreFiles时会导致轻微的压缩,这可能不合适。如果将此值设置得太高,则需要相应调整所有其他值。对于大多数情况下,默认值是适当的。在以前的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小于此大小将始终有资格进行轻微压缩。这个大小或更大的HFile通过hbase.hstore.compaction.ratio进行计算,以确定它们是否合格。由于此限制表示所有StoreFiles的“自动包含”限制小于此值,因此在需要刷新多个StoreFile的写入繁重环境中可能需要降低此值,因为每个StoreFile都将作为目标,对于压缩而言,所得到的StoreFile可能仍然在最小尺寸下,并且需要进一步的压缩。如果此参数降低,比率检查会更快地触发。这解决了在早期版本的HBase中看到的一些问题,但是在大多数情况下不再需要更改此参数。
默认为:134217728
hbase.hstore.compaction.max.size
StoreFile大于此大小将被排除在压缩之外。提高hbase.hstore.compaction.max.size的效果较少,较大的StoreFiles不经常压缩。如果你觉得压缩过于频繁而没有太多好处,你可以尝试提高这个价值。默认值:LONMAX_VALUE的值,以字节表示。
hbase.hstore.compaction.ratio
默认为:2F
hbase.hstore.compaction.ratio.offpeak
允许您设置不同的比率,以确定在非高峰时段是否包含较大的StoreFiles。以与hbase.hstore.compaction.ratio相同的方式工作。仅当hbase.offpeak.start.hour和hbase.offpeak.end.hour也被启用时才适用。
默认为: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
有两个不同的线程池用于压缩,一个用于大型压缩,另一个用于小型压缩。这有助于保持精简表的快速压缩。如果压缩度大于此阈值,则会进入大型压缩池。在大多数情况下,默认值是适当的。默认值:2xhbase.hstore.compaction.maxxhbase.hregion.memstore.flush.size。值字段假定hbase.hregion.memstore.flush.size的值与默认值相同。
默认为:2684354560
hbase.regionserver.majorcompaction.pagecache.drop
指定是否通过主要压缩删除读取/写入系统页面缓存的页面。将其设置为true有助于防止重大压缩污染页面缓存,这几乎总是要求的,特别是对于具有低/中等内存与存储率的群集。
默认为:true
hbase.regionserver.minorcompaction.pagecache.drop
默认为:true
hbase.hstore.compaction.kv.max
刷新或压缩时要读取并批量写入的KeyValues的最大数量。如果你有较大的KeyValues,并且OutOfMemoryExceptions有问题,请将它设置得更低。
默认为:10
hbase.storescanner.parallel.seek.enable
在StoreScanner中启用StoreFileScanner并行搜索功能,该功能可以在特殊情况下减少响应延迟。
默认为:false
hbase.storescanner.parallel.seek.threads
如果启用了并行查找功能,则默认线程池大小。
默认为:10
hfile.block.cache.size
StoreFile使用的最大堆分配给块缓存的百分比。默认值为0.4意味着分配40%。设置为0禁用,但不建议;您至少需要足够的缓存来保存存储文件索引。
默认为:0.4
hfile.block.index.cacheonwrite
这允许在索引被写入时将非根多级索引块放入块高速缓存中。
默认为:false
hfile.index.block.max.size
当多级块索引中叶级,中级或根级索引块的大小增长到这个大小时,块将被写出并启动一个新块。
默认为:131072
hbase.bucketcache.ioengine
在哪里存储bucketcache的内容。其中之offheap、文件或mmap。如果有文件,则将其设置为file:PATH_TO_FILE。mmap意味着内容将在一个mmaped文件中。使用mmap:PATH_TO_FILE。
没有默认值。
hbase.bucketcache.size
EITHER表示缓存的总堆内存大小的百分比,则表示BucketCache的总容量。默认值:0.0
hbase.bucketcache.bucket.sizes
用于bucketcache的存储区大小的逗号分隔列表。可以是多种尺寸。列出从最小到最大的块大小。您使用的大小取决于您的数据访问模式。必须是256的倍数,否则当你从缓存中读取时,你会遇到“java.io.IOException:InvalidHFileblockmagic”。如果您在此处未指定任何值,那么您可以选取代码中设置的默认bucketsizes。
没有默认值。
hfile.format.version
默认为:3
hfile.block.bloom.cacheonwrite
为复合Bloom过滤器的内联块启用写入缓存。
默认为:false
io.storefile.bloom.block.size
复合Bloom过滤器的单个块的字节大小。这个大小是近似的,因为Bloom块只能被插入到数据块的边界处,而每个数据块的key的个数也不相同。
默认为:131072
hbase.rs.cacheblocksonwrite
块完成后,是否应将HFile块添加到块缓存中。
默认为:false
hbase.rpc.timeout
这是为了让RPC层定义一个远程调用超时HBase客户端应用程序超时。它使用ping来检查连接,但最终会抛出TimeoutException。
默认为:60000
hbase.client.operation.timeout
操作超时是一个顶级的限制,确保表格中的阻止操作不会被阻止超过这个限制。在每个操作中,如果rpc请求由于超时或其他原因而失败,则将重试直到成功或抛出RetriesExhaustedException。如果总的阻塞时间在重试耗尽之前达到操作超时,则会提前中断并抛出SocketTimeoutException。
默认为:1200000
hbase.cells.scanned.per.heartbeat.check
在heartbeat检查之间扫描的单元格的数量。在扫描处理过程中会发生heartbeat检查,以确定服务器是否应该停止扫描,以便将heartbeat消息发送回客户端。heartbeat消息用于在长时间运行扫描期间保持客户端-服务器连接的活动。较小的值意味着heartbeat检查将更频繁地发生,因此将对扫描的执行时间提供更严格的界限。数值越大意味着heartbeat检查发生的频率越低。
默认为:10000
hbase.rpc.shortoperation.timeout
这是“hbase.rpc.timeout”的另一个版本。对于集群内的RPC操作,我们依靠此配置为短操作设置短超时限制。例如,区域服务器试向活动主服务器报告的短rpc超时可以更快地进行主站故障转移过程。
默认为:10000
hbase.ipc.client.tcpnodelay
在rpc套接字连接上设置没有延迟。
默认为:true
hbase.regionserver.hostname
这个配置适用于对HBase很熟悉的人:除非你真的知道你在做什么,否则不要设定它的价值。当设置为非空值时,这表示底层服务器的主机名。
没有默认值。
hbase.regionserver.hostname.disable.master.reversedns
这个配置适用于对HBase很熟练的人:除非你真的知道你在做什么,否则不要设定它的价值。当设置为true时,regionserver将使用当前节点主机名作为服务器名称,HMaster将跳过反向DNS查找并使用regionserver发送的主机名。请注意,此配置和hbase.regionserver.hostname是互斥的。
默认为:false
hbase.master.keytab.file
用于登录配置的HMaster服务器主体的kerberos密钥表文件的完整路径。
没有默认值。
hbase.master.kerberos.principal
“hbase/_HOST@EXAMPLCOM”,应该用来运行HMaster进程的Kerberos主体名称。主体名称的格式应为:user/hostname@DOMAIN。如果使用“_HOST”作为主机名部分,它将被替换为正在运行的实例的实际主机名。
没有默认值。
hbase.regionserver.keytab.file
用于登录配置的HRegionServer服务器主体的kerberos密钥表文件的完整路径。
没有默认值。
hbase.regionserver.kerberos.principal
“hbase/_HOST@EXAMPLCOM”。应该用来运行HRegionServer进程的kerberos主体名称。主体名称的格式应为:user/hostname@DOMAIN。如果使用“_HOST”作为主机名部分,它将被替换为正在运行的实例的实际主机名。此主体的条目必须存在于hbase.regionserver.keytab.file中指定的文件中
没有默认值。
hadoop.policy.file
RPC服务器使用策略配置文件对客户端请求进行授权决策。仅在启用HBase安全性时使用。
默认为:hbase-policy.xml
hbase.superuser
用户或组列表,允许在整个集群中拥有完全权限。仅在启用HBase安全性时使用。
没有默认值。
hbase.auth.key.update.interval
服务器中认证令牌的主密钥的更新间隔。仅在启用HBase安全性时使用。
默认为:86400000
hbase.auth.token.max.lifetime
验证令牌过期的最长生存时间。仅在启用HBase安全性时使用。
默认为:604800000
hbase.ipc.client.fallback-to-simple-auth-allowed
当客户端配置为尝试安全连接,但尝试连接到不安全的服务器时,该服务器可能会指示客户端切换到SASLSIMPLE身份验证。此设置控制客户端是否接受来自服务器的此指令。如果为false,则客户端将不允许回退到SIMPLE身份验证,并会中止连接。
默认为:false
hbase.ipc.server.fallback-to-simple-auth-allowed
当服务器配置为需要安全连接时,它将拒绝来自使用SASLSIMPLE身份验证的客户端的连接尝试。此设置允许安全服务器在客户端请求时接受来自客户端的SASLSIMPLE连接。如果为false,服务器将不允许回退到SIMPLE身份验证,并将拒绝连接。警告:只有在将客户端转换为安全身份验证时,才应将此设置用作临时措施。必须禁止它才能进行安全操作。
默认为:false
hbase.display.keys
当它被设置为true时,webUI等将显示所有开始/结束键作为表格细节,区域名称等的一部分。当这被设置为假时,键被隐藏。
默认为:true
hbase.coprocessor.enabled
启用或禁用协处理器加载。如果"false",任何其他协处理器相关的配置将被忽略。
默认为:true
hbase.coprocessor.user.enabled
启用或禁用用户协处理器加载。如果"false",则表格描述符中的任何表协处理器属性将被忽略。如果“hbase.coprocessor.enabled”为“false”,则此设置无效。
默认为:true
hbase.coprocessor.region.classes
在所有表上默认加载的区域观察者或端点协处理器的逗号分隔列表。对于任何覆盖协处理器方法,这些类将按顺序调用。在实现自己的协处理器之后,将其添加到HBase的类路径中,并在此处添加完全限定的类名称。协处理器也可以通过设置HTableDescriptor或者HBaseshell来按需加载。
没有默认值。
hbase.coprocessor.master.classes
在活动的HMaster进程中默认加载的org.apache.hadoop.hbase.coprocessor.MasterObserver协处理器的逗号分隔列表。对于任何实施的协处理器方法,列出的类将按顺序调用。在实现你自己的MasterObserver之后,把它放在HBase的类路径中,并在这里添加完全限定的类名称。
没有默认值。
hbase.coprocessor.abortonerror
如果协处理器加载失败,初始化失败或引发意外的Throwable对象,则设置为true将导致托管服务器中止。将其设置为false将允许服务器继续执行,但所涉及的协处理器的系统范围状态将变得不一致,因为它只能在一部分服务器中正确执行,所以这对于仅调试是非常有用的。
默认为:true
hbase.rest.port
HBaseREST服务器的端口。
默认为: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的旧版本,这个版本是XXX-SNAPSHOT”
默认为:false
hbase.table.lock.enable
设置为true以启用锁定zookeeper中的表以进行模式更改操作。从主服务器锁定表可以防止并发的模式修改损坏表状态。
默认为:true
hbase.table.max.rowsize
单行字节的最大大小,用于Get-ing或Scan"ning,不设置行内扫描标志。如果行大小超过此限制RowTooBigException被抛出到客户端。
默认为:1073741824
hbase.thrift.minWorkerThreads
线程池的“核心大小”。在每个连接上创建新线程,直到创建了许多线程。
默认为:16
hbase.thrift.maxWorkerThreads
线程池的最大大小。待处理的请求队列溢出时,将创建新线程,直到其号码达到此数字。之后,服务器开始丢弃连接。
默认为:1000
hbase.thrift.maxQueuedRequests
在队列中等待的最大等待节点连接数。如果池中没有空闲线程,则服务器将请求排队。只有当队列溢出时,才会添加新的线程,直到hbase.thrift.maxQueuedRequests线程。
默认为:1000
hbase.regionserver.thrift.framed
在服务器端使用ThriftTFramedTransport。对于thrift服务器,这是推荐的传输方式,需要在客户端进行类似的设置。将其更改为false将选择默认传输,当由于THRIFT-601发出格式错误的请求时,容易受到DoS的影响。
默认为:false
hbase.regionserver.thrift.framed.max_frame_size_in_mb
使用成帧传输时的默认帧大小,以MB为单位。
默认为:2
hbase.regionserver.thrift.compact
使用ThriftTCompactProtocol二进制序列化协议。
默认为:false
hbase.rootdir.perms
默认为:700
hbase.wal.dir.perms
默认为:700
hbase.data.umask.enable
如果启用,则启用该文件权限应分配给区域服务器写入的文件
默认为:false
hbase.data.umask
当hbase.data.umask.enable为true时,应该用来写入数据文件的文件权限
默认为:000
hbase.snapshot.enabled
设置为true以允许taken/restored/cloned。
默认为:true
hbase.snapshot.restore.take.failsafe.snapshot
设置为true以在还原操作之前得到快照。所得到的快照将在失败的情况下使用,以恢复以前的状态。在还原操作结束时,此快照将被删除
默认为:true
hbase.snapshot.restore.failsafe.name
restore操作所采用的故障安全快照的名称。您可以使用{snapshot.name},{table.name}和{restore.timestamp}变量根据要恢复的内容创建一个名称。
默认为:hbase-failsafe-{snapshot.name}-{restore.timestamp}
hbase.server.compactchecker.interval.multiplier
这个数字决定了我们扫描的频率,看是否需要压缩。通常情况下,压缩是在某些事件之后完成的,但是如果区域在一段时间内没有收到大量的写入,或者由于不同的压缩策略,则可能需要定期检查。检查之间的时间间隔是hbase.server.compactchecker.interval.multiplier乘以hbase.server.thread.wakefrequency。
默认为:1000
hbase.lease.recovery.timeout
在放弃之前,我们等待dfslease的总恢复时间。
默认为:900000
hbase.lease.recovery.dfs.timeout
dfs恢复lease调用之间的时间间隔。应该大于namenode为datanode的一部分发出块恢复命令所需的时间总和;dfs.heartbeat.interval和主数据节点所花费的时间,在死数据节点上执行数据块恢复到超时;通常是dfs.client.socket-timeout。
默认为:64000
hbase.column.max.version
新的列族描述符将使用此值作为要保留的默认版本数。
默认为:1
dfs.client.read.shortcircuit
如果设置为true,则此配置参数启用short-circuit本地读取。
默认为:false
dfs.domain.socket.path
默认为:none
hbase.dfs.client.read.shortcircuit.buffer.size
如果未设置DFSClient配置dfs.client.read.shortcircuit.buffer.size,我们将使用此处配置的内容作为short-circuit读取默认直接字节缓冲区大小。DFSClient本机默认值是1MB;HBase保持HDFS文件的打开状态,所以文件块*1MB的数量很快就开始累积起来,并由
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点