参考官方文档:
7.1 hbase-site.xml和hbase-default.xml
就像在Hadoop中将特定于站点的HDFS配置添加到hdfs-site.xml文件中一样,对于HBase,特定于站点的自定义项也放入conf / hbase-site.xml文件中。 有关可配置属性的列表,请参见下面的hbase默认配置,或在src/main/ resources的HBase源代码中查看原始的hbase-default.xml源文件。
并非所有配置选项都将其显示在hbase-default.xml中。 有些配置只会出现在源代码中。 识别这些更改的唯一方法是通过代码审查。
目前,此处的更改将要求HBase重新启动群集以注意到更改(更改配置需要重启集群)。
7.2 HBase 默认配置
以下文档是使用默认的hbase配置文件hbase-default.xml作为源生成的。
hbase.tmp.dir
本地文件系统上的临时目录。 更改此设置以指向比'/ tmp' 更永久的位置(java.io.tmpdir的通用解析方法),因为在重新启动计算机时会清理'/ tmp'目录。
默认:
${java.io.tmpdir}/hbase-${user.name}
hbase.rootdir
区域服务器共享的目录,HBase保留在该目录中。 URL应该是“完全限定”的,以包括文件系统方案。 例如,要指定HDFS目录“ / hbase”,其中HDFS实例的namenode在端口9000上的http://namenode.example.org上运行,请将此值设置为:hdfs://http://namenode.example.org:9000 / hbase。 默认情况下,我们会写入$ {hbase.tmp.dir}(通常是/ tmp),因此请更改此配置,否则所有数据都会在计算机重新启动时丢失。
默认值:
${hbase.tmp.dir}/hbase
hbase.cluster.distributed
群集将处于的模式。对于独立模式,值为false;对于分布式模式,值为true。 如果为false,则启动将在一个JVM中同时运行所有HBase和ZooKeeper守护程序。
默认值
false
hbase.zookeeper.quorum
ZooKeeper集合中服务器的逗号分隔列表(此配置应已命名为hbase.zookeeper.ensemble)。 例如,“ http://host1.mydomain.com,http://host2.mydomain.com,host3.mydomain.com”。 默认情况下,对于本地和伪分布式操作模式,此选项设置为localhost。 对于完全分布式的设置,应将其设置为ZooKeeper集服务器的完整列表。 如果在hbase-env.sh中设置了HBASE_MANAGES_ZK,则这是hbase在集群启动/停止过程中将启动/停止ZooKeeper的服务器列表。 在客户端,我们将使用此列表,并将其与hbase.zookeeper.property.clientPort配置放在一起。 并将其作为connectString参数传递到zookeeper构造函数中。
默认值 localhost
zookeeper.recovery.retry.maxsleeptime
重试zookeeper 操作之前的最大睡眠时间(以毫秒为单位),此处需要一个最大时间,以使睡眠时间不会无限制地增长
默认值 6000
hbase.local.dir
本地文件系统上用作本地存储的目录
默认值
${hbase.tmp.dir}/local/
hbase.master.port
HBase Master 应该绑定的端口
默认值 16000
hbase.master.info.port
HBase Master Web UI的端口。 如果不希望运行UI实例,则设置为-1。
hbase.master.info.bindAddress
HBase Master Web UI绑定的地址。默认是 0.0.0.0
hbase.regionserver.port
HBase RegionServer 绑定的端口
默认值是 16020
hbase.regionserver.info.port
如果您不希望运行RegionServer UI,请将HBase RegionServer Web UI的端口设置为-1。
默认是 16030
hbase.regionserver.info.bindAddress
HBase RegionServer web UI 的地址
默认是 0.0.0.0
hbase.regionserver.handler.count
在RegionServer上旋转的RPC侦听器实例数。 主机将相同的属性用于主机处理程序的数目。 过多的处理程序可能适得其反。 使它成为CPU数的倍数。 如果大多数情况下是只读的,则处理程序计数接近cpu数的效果很好。 从两倍的CPU数开始调整。
默认是 30
hbase.regionserver.msginterval
从RegionServer到Master的消息之间的时间间隔(以毫秒为单位)。
默认是 3000
hbase.regionserver.logroll.period
无论有多少edits,我们都将滚动提交日志的时间。
默认值 3600000
hbase.regionserver.logroll.errors.tolerated
在触发服务器异常终止之前,我们将允许的连续WAL关闭的错误数。 如果在日志滚动过程中关闭当前WAL编写器失败,则设置为0将导致区域服务器中止。 甚至很小的值(2或3)能使区域服务器克服瞬态HDFS错误。
默认值 2
hbase.regionserver.optionalcacheflushinterval
edit内容在自动刷新之前在内存中保留的最长时间。 默认值1小时。 将其设置为0以禁用自动刷新。
默认值 3600000
hbase.regionserver.regionSplitLimit
区域数量的限制,之后将不再进行区域拆分。 这不是对区域数量的硬限制,但可作为区域服务器在特定限制后停止拆分的准则。
默认设置为1000。
zookeeper.session.timeout
ZooKeeper会话超时(以毫秒为单位)。 它以两种不同的方式使用。 首先,在HBase用于连接到集成体的ZK客户端中使用此值。 HBase在启动ZK服务器时也使用它,并将其作为“ maxSessionTimeout”传递。 例如,如果HBase区域服务器连接到同样由HBase管理的ZK集合,则会话超时将是此配置指定的会话超时时间。 但是,连接到使用其他配置管理的集成服务器的区域服务器将受到该集成服务器的maxSessionTimeout的影响。 因此,即使HBase可能建议使用90秒,该集合的最大超时值也可以低于此值,并且它将具有优先权。 ZK随附的当前默认maxSessionTimeout为40秒,低于HBase的默认值。
默认值 90000
zookeeper.znode.parent
ZooKeeper中用于HBase的根ZNode。所有HBase的ZooKeeper文件都将位于此节点下配置的相对路径中。 默认情况下,所有HBase的ZooKeeper文件路径都配置有相对路径,因此除非更改,否则它们都将位于此目录下。
默认值 /hbase
hbase.balancer.period
区域平衡器在主服务器中运行的时间周期。
默认值 300000
hbase.hstore.flusher.count
刷新线程数。 如果线程较少,则将对MemStore刷新进行排队。 如果线程更多,则刷新将并行执行,从而增加了HDFS的负载,也可能导致更多的压缩。
默认值 2
hfile.block.cache.size
分配给StoreFile使用的块缓存的最大堆的百分比(-Xmx设置)。 默认值为0.4表示分配40%。 设置为0即可禁用,但不建议这样做; 您至少需要足够的缓存来保存存储文件索引。
默认值:0.4
hbase.rest.port
HBase REST 服务器的端口
8080
hbase.http.max.threads
HTTP Server将在其ThreadPool中创建的最大线程数。
默认是16
hbase.replication.source.maxthreads
任何复制源用于将edit并行传送到接收器的最大线程数。 这也限制了每个复制批处理分成的块数。 较大的值可以提高主群集和从群集之间的复制吞吐量。 默认值10几乎不需要更改。
默认:10
log4j.properties
编辑此文件以更改HBase文件的滚动速率并更改HBase日志消息的级别。
尽管可以通过HBase UI更改特定守护程序的日志级别,但此处的更改将要求HBase重新启动集群以注意到更改。
如果您以独立模式运行HBase,则无需配置任何内容即可让客户端正常工作,只要它们都在同一台计算机上即可。
由于HBase Master可能会四处移动,因此客户端可以通过向ZooKeeper查找当前的关键位置来进行引导。 ZooKeeper保留所有这些值的位置。 因此,客户在执行其他任何操作之前,需要先确定ZooKeeper集合的位置。 通常,此集合位置保留在hbase-site.xml中,并由客户端从CLASSPATH中取得。
对于使用Maven的Java应用程序,建议在连接到集群时包括hbase-shaded-client模块依赖项:
org.apache.hbase
hbase-shaded-client
2.0.0
仅用于客户端的基本示例hbase-site.xml可能如下所示:
hbase.zookeeper.quorum
example1,example2,example3
The directory shared by region servers.
java 客户端配置
Java客户端使用的配置保留在HBaseConfiguration实例中。
HBaseConfiguration上的工厂方法HBaseConfiguration.create();在调用时将读取在客户端的CLASSPATH上找到的第一个hbase-site.xml的内容(如果存在的话)(调用还将包括任何找到的hbase-default.xml;在hbase.XXXjar中附带了一个hbase-default.xml。 也可以直接指定配置,而不必从hbase-site.xml中读取。 例如,以编程方式为集群设置ZooKeeper集成,请执行以下操作:
Configuration config = HBaseConfiguration.create();
config.set("hbase.zookeeper.quorum", "localhost"); // Here we are running zookeeper locally
如果多个ZooKeeper实例组成了ZooKeeper集合,则可以在用逗号分隔的列表中指定它们(就像在hbase-site.xml文件中一样)。 然后可以将此填充的Configuration实例传递到表,依此类推。
超时设置
HBase提供了各种各样的超时设置,以限制各种远程操作的执行时间。hbase.rpc.timeout
hbase.rpc.read.timeout
hbase.rpc.write.timeout
hbase.client.operation.timeout
hbase.client.meta.operation.timeout
hbase.client.scanner.timeout.period