写在前面
ASYNCHBase是基于HBase相关的一些设置,对于了解内核配置有一定的帮助
原地址https://opentsdb.github.io/asynchbase/docs/build/html/configuration.html
Configuration
AsyncHBase 1.7有一个新的配置类Config
,可以调整客户端的许多参数。为了向后兼容,现有HBaseClient
构造函数将使用默认值实例化新的配置对象。但是,新构造函数将接受配置对象。
要使用默认值创建配置,请通过实例化它。或者从文件加载属性,调用文件是标准Java属性文件的位置,其中的条目由新行分隔。Config config = new Config();``Config config = newConfig(<path_to_file>);``hbase.rpc.timeout = 60000
要修改配置条目的(默认或从文件解析)值,只需调用。确保在将配置传递给构造函数之前修改值。在实例化客户端之后修改配置的值不会产生影响,因为从配置中读取了许多值并将其存储在客户端的内存中,永远不会再次读取。config.overrideConfig(<property>, <value>);``HBaseClient
属性
以下是AsyncHBase的配置选项表。有些值与HBase的配置共有名称,但行为可能略有不同。在继续之前,请务必阅读与配置相关的注释。
属性 | 类型 | 描述 | 默认 |
---|---|---|---|
hbase.client.retries.number | int | 发生可恢复异常时重试RPC的次数,例如移动或拆分的区域。不可恢复的异常将立即使RPC失败。 | 10 |
hbase.increments.buffer_size | int | 使用BufferedIncrement RPC 时要在内存中维护多少个唯一计数器。达到此限制后,新的缓冲增量会立即发送到区域服务器。 | 65,535 |
hbase.increments.durable | bool | 是否为每个原子增量请求写入WAL。 | true |
hbase.ipc.client.connection.idle_timeout | int | 在关闭与区域服务器的空闲连接之前等待的时间(以秒为单位)。空闲意味着没有写入或读取套接字。 | 300 |
hbase.ipc.client.socket.receiveBufferSize | int | 区域服务器套接字的大小以字节为单位接收缓冲区。 | 系统依赖 |
hbase.ipc.client.socket.sendBufferSize | int | 区域服务器套接字的大小以字节为单位发送缓冲区。 | 系统依赖 |
hbase.ipc.client.socket.timeout.connect | int | 等待套接字连接尝试到区域服务器的时间(以毫秒为单位)。 | 5000 |
hbase.ipc.client.tcpkeepalive | bool | 是否在区域服务器的TCP套接字上启用keep-alives。 | true |
hbase.ipc.client.tcpnodelay | bool | 是否绕过TCPfalse脱机并立即将数据包发送到区域服务器。 | true |
hbase.kerberos.regionserver.principal | String | 用作kerberos身份验证主体的名称或模板。字符String的实例_HOST 将替换为客户端的主机名。 | |
hbase.meta.scan | bool | 是否强制扫描Meta中的区域服务器位置,而不是使用较旧的getClosestRowBefore()方法来查找区域。这是HBase 2.0的预发布版本所必需的。对于2.x的更高版本,HBase将抛出AsyncHBase 1.8.2捕获的异常,客户端将自动切换到扫描。 | false |
hbase.meta.split | bool | 是否已在HBase群集上启用实验性split-meta。 | false |
hbase.nsre.high_watermark | int | 在新RPC失败之前,区域的NSRE队列中允许的最大RPC数量请加以限制异常。 | 10000 |
hbase.nsre.low_watermark | int | 在警告开始出现在日志文件中之前,NSRE队列中必须存在的每个区域服务器的RPC数。 | 1000 |
hbase.region_client.check_channel_write_status | bool | 是否在尝试发送RPC之前检查区域服务器连接的套接字的写入状态。如果区域服务器很慢,则客户端可能会在等待服务器使用数据时在内存中缓冲大量数据。这可能导致内存不足或堆非常大。启用此选项并且缓冲区已满时,RPC将失败并请限制异常。 | false |
hbase.region_client.inflight_limit | int | 发送到连接区域服务器并等待响应的最大RPC数。大量的机上RPC可能导致内存不足问题。值为0将禁用此限制。如果达到限制,RPC将失败并请限制异常。 | 0 |
hbase.region_client.pending_limit | int | 在等待区域服务器连接完成时排队的最大RPC数。如果区域服务器响应连接请求的速度很慢,或者身份验证需要很长时间,那么RPC的大型队列可能会在内存中累积。值为0将禁用此限制。如果达到限制,RPC将失败并请限制异常。 | 0 |
hbase.regionserver.kerberos.password | String | 不推荐或测试:通过kerberos进行身份验证时区域服务器的密码。 | |
hbase.rpcs.batch.size | int | 在发送到区域服务器之前可以缓冲的各个RPC的数量。如果在此之前达到此限制,hbase.rpcs.buffered_flush_interval 则立即发送批次并启动新批次。 | 1024 |
hbase.rpcs.buffered_flush_interval | int | 以毫秒为单位将缓冲的RPC(Puts,Appends等)刷新到区域服务器的频率。 | 1000 |
hbase.rpc.protection | String | 是否在遍历网络时加密RPC。可以是authentication (不加密),integrity (不加密)或privacy (加密)。需要启用身份验证。 | |
hbase.rpc.timeout | int | 在使用RPC失败之前,等待来自区域服务器的RPC响应的时间(以毫秒为单位)RpcTimedOutException 。可以基于每个RPC覆盖此值。值为0将不允许RPC超时。 | 0 |
hbase.sasl.clientconfig | String | JAAS配置文件中用于对区域服务器进行身份验证时使用的部分。 | client |
hbase.security.auth.94 | bool | 客户端是否通过身份验证连接到HBase 0.94群集。 | false |
hbase.security.auth.enable | bool | 是否在连接HBase时启用身份验证。有关更多信息,请参阅身份验证 | |
hbase.security.authentication | String | HBase集群所需的身份验证类型。可能是kerberos 或simple 。 | |
hbase.security.simple.username | String | 用于通过简单身份验证对HBase群集进行身份验证的用户名。(不建议) | |
hbase.timer.tick | int | 执行刷新和超时计时器,寻找新任务的频率(以毫秒为单位)。该值不需要修改。 | 20 |
hbase.timer.ticks_per_wheel | int | 在刷新和超时计时器中使用了多少个散列桶来调度任务。该值不需要修改。 | 512 |
hbase.workers.size | int | 要为区域客户端连接实例化的工作线程数。 | 2 * CPU核心 |
hbase.zookeeper.getroot.retry_delay | int | 如果调用失败,在尝试从Zookeeper获取根区域之间等待的时间(以毫秒为单位)。 | 1000 |
hbase.zookeeper.quorum | String | 逗号分隔的ZooKeeper主机列表,用于连接,有或没有端口说明符。例如192.168.1.1:2181,192.168.1.2:2181 | 本地主机 |
hbase.zookeeper.session.timeout | int | 保持Zookeeper连接的时间(以毫秒为单位)。会话超时后,连接将关闭,下次AsyncHBase需要root时将打开一个新连接。 | 5000 |
hbase.zookeeper.znode.parent | String | -ROOT-区域的znode所在的路径 | / HBase |
对于使用Kerberos进行身份验证,必须使用系统参数中的AsyncHBase创建JAAS文件并将其传递给JVM java.security.auth.login.config
。
数据类型
某些配置值需要特别考虑:
-
布尔值 - 以下文字将解析为
True
:任何其他值将导致a
False
。解析不区分大小写-
1
-
true
-
yes
-
字符串 - 字符串,即使是带空格的字符串,也不需要引号,但有些注意事项适用:
-
特殊字符必须用反斜杠转义包括:
#
,!
,=
,和:
例如:my.property = Hello World \!
Unicode字符必须使用十六进制表示进行转义,例如:
my.property = \u0009