目录
1 版本信息
2 hbase-site.xml 配置文件详解
<configuration xmlns:xi="http://www.w3.org/2001/XInclude">
<!-- Unix Socker 文件路径 -->
<property>
<name>dfs.domain.socket.path</name>
<value>/var/lib/hadoop-hdfs/dn_socket</value>
</property>
<!-- HDFS 批量装载的目录 -->
<property>
<name>hbase.bulkload.staging.dir</name>
<value>/apps/hbase/staging</value>
</property>
<!-- 一个KeyValue实例的最大尺寸,这是存储文件中一个 entity 的容量上限,因为一个KeyValue 是不能分割的, 所以可以避免数据过大导致 Region 不可分割 ,默认为 10M-->
<property>
<name>hbase.client.keyvalue.maxsize</name>
<value>1048576</value>
</property>
<!-- 最大重试次数,用作所有可重试的最大值 -->
<property>
<name>hbase.client.retries.number</name>
<value>35</value>
</property>
<!-- 在调用 next 时尝试获取的行数,客户端缓存的行数,设置小意味着更多的RPC 次数,设置大比较吃内存 -->
<property>
<name>hbase.client.scanner.caching</name>
<value>100</value>
</property>
<!-- hbase 集群模式,false表示 hbase单机,true表示分布式模式 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 协处理器,默认加载在活动的 HMaster进程上,对于任何实施协处理器的方法,列出的类将按顺序调用 -->
<property>
<name>hbase.coprocessor.master.classes</name>
<value>org.apache.atlas.hbase.hook.HBaseAtlasCoprocessor,org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor</value>
</property>
<!-- 协处理器列表 -->
<property>
<name>hbase.coprocessor.region.classes</name>
<value>org.apache.hadoop.hbase.security.token.TokenProvider,org.apache.hadoop.hbase.security.access.SecureBulkLoadEndpoint,org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor</value>
</property>
<!-- 协处理器列表 -->
<property>
<name>hbase.coprocessor.regionserver.classes</name>
<value>org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor</value>
</property>
<!-- 忽略默认版本的检查 -->
<property>
<name>hbase.defaults.for.version.skip</name>
<value>true</value>
</property>
<!-- 一个Region进行 major compaction 合并的周期,在这个时候此 Region 下的所有 HFile 进行合并,默认是 7天,major compaction非常号资源,建议生产关闭(设置为0),在应用空闲时手动触发 下面是毫秒-->
<property>
<name>hbase.hregion.majorcompaction</name>
<value>604800000</value>
</property>
<!-- majorcompaction抖动边界值,意思上一个参数设置是7天进行一次,可以有50%的抖动比例 -->
<property>
<name>hbase.hregion.majorcompaction.jitter</name>
<value>0.50</value>
</property>
<!-- HStoreFile最大的尺寸,当某个 Region 的某个列族超过这个大小会进行 Region拆分,hfile存储数据是按column family存储的,也就是任何一个列蔟存储值大于这个参数,都会发生hbase的split 默认 10G -->
<property>
<name>hbase.hregion.max.filesize</name>
<value>10737418240</value>
</property>
<!-- 当一个Hregion 的 memstore 的大小满足 hbase.hregion.memstore.block.multiplier * hbase.hregion.memstore.flush.size ,这个 HRegion 会执行 flush 操作 并阻塞 对该 Region 的写入 -->
<property>
<name>hbase.hregion.memstore.block.multiplier</name>
<value>4</value>
</property>
<!-- 单个region里 memstore 的缓存大小,超过 HRegion就会flush,默认 128M -->
<property>
<name>hbase.hregion.memstore.flush.size</name>
<value>134217728</value>
</property>
<!-- 启动 MemStore-Local 分配缓冲区,该功能可防止在大量写入负载下出现堆碎片,可以减少 stop-the-world GC 在大堆上的停顿>
<property>
<name>hbase.hregion.memstore.mslab.enabled</name>
<value>true</value>
</property>
<!-- 每个 store阻塞更新请求的阈值,表示如果当前 HStore中文件数大于该值,系统将会强制执行 compaction 操作进行文件合并,合并的过程会阻塞 HStore的写入, 这样的好处是避免 compaction 操作赶不上HFile 文件的生成速率 -->
<property>
<name>hbase.hstore.blockingStoreFiles</name>
<value>100</value>
</property>
<!-- 每个minor compaction 操作允许的最大 HFile文件数上限 -->
<property>
<name>hbase.hstore.compaction.max</name>
<value>10</value>
</property>
<!-- 一个store 里面允许存的 HFile 个数,超过这个个数会被刷新到一个 HFile 里面,也即是每个 Region的每个列族对应的 memstore 在 flush为 HFile 的时候,默认情况下当超过 3 个HFile的时候就会对这些文件合并并重新写为一个新文件,设置个数越大可以减少触发合并的时间,但是每次合并的时间就会越长 -->
<property>
<name>hbase.hstore.compactionThreshold</name>
<value>3</value>
</property>
<!-- 如果是本地存储,位于本地文件系统的路径 -->
<property>
<name>hbase.local.dir</name>
<value>${hbase.tmp.dir}/local</value>
</property>
<!-- hbase master 的 web ui 页面绑定的页面 -->
<property>
<name>hbase.master.info.bindAddress</name>
<value>0.0.0.0</value>
</property>
<!-- hbase master的web ui页面的端口 -->
<property>
<name>hbase.master.info.port</name>
<value>16010</value>
</property>
<!-- master 命名空间初始化超时时间 -->
<property>
<name>hbase.master.namespace.init.timeout</name>
<value>2400000</value>
</property>
<!-- hbase master 节点端口 -->
<property>
<name>hbase.master.port</name>
<value>16000</value>
</property>
<!-- master 的等待 RegionServer 报告 的超时时间 -->
<property>
<name>hbase.master.wait.on.regionservers.timeout</name>
<value>30000</value>
</property>
<!-- 创建 Phoenix RPC 调度程序的工厂,该调度程序使用单独的队列进行索引和元数据更新 -->
<property>
<name>hbase.region.server.rpc.scheduler.factory.class</name>
<value>org.apache.hadoop.hbase.ipc.PhoenixRpcSchedulerFactory</value>
</property>
<!-- RegionServer 操作线程数量 -->
<property>
<name>hbase.regionserver.executor.openregion.threads</name>
<value>20</value>
</property>
<!-- RegionServer全局 memstore的大小,超过该大小会触发 flush到磁盘的操作,默认为堆大小的 40%, RegionServer级别的flush会阻塞客户端的读写 -->
<property>
<name>hbase.regionserver.global.memstore.size</name>
<value>0.4</value>
</property>
<!-- RegionServer端默认开启的RPC监控实例数,也即 RegionServer 能够处理的 IO请求数 -->
<property>
<name>hbase.regionserver.handler.count</name>
<value>50</value>
</property>
<!-- RegionServer web 界面绑定的端口 -->
<property>
<name>hbase.regionserver.info.port</name>
<value>16030</value>
</property>
<!-- RegionServer 绑定的端口 默认 16020 -->
<property>
<name>hbase.regionserver.port</name>
<value>16020</value>
</property>
<!-- 线程池负责处理 CompactionRequest,hbase.regionserver.thread.compaction.throttle的设置值(一般在hbase-site.xml没有该值的设置),而是采用默认值2 * minFilesToCompact * memstoreFlushSize,如果CR需要处理的storefile文件的大小总和,大于throttle的值,则会提交到largeCompactions线程池进行处理 -->
<property>
<name>hbase.regionserver.thread.compaction.small</name>
<value>3</value>
</property>
<!-- hbase可变索引 -->
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>
<!-- 每个RegionServer共享目录,用来持久化HBase,HDP默认的HDFS路径 /apps/hbase -->
<property>
<name>hbase.rootdir</name>
<value>/apps/hbase/data</value>
</property>
<!-- 单次 rpc 请求的超时时间,如果某次RPC时间超过该值,客户端就会去主动关闭 socket -->
<property>
<name>hbase.rpc.timeout</name>
<value>90000</value>
</property>
<!-- 配置 kerberos 认证 -->
<property>
<name>hbase.security.authentication</name>
<value>kerberos</value>
</property>
<!-- hbase 安全认真开启 -->
<property>
<name>hbase.security.authorization</name>
<value>true</value>
</property>
<!-- hbase 超级管理员 -->
<property>
<name>hbase.superuser</name>
<value>hbase</value>
</property>
<!-- 如果是本地存储,位于本地系统的路径 -->
<property>
<name>hbase.tmp.dir</name>
<value>/tmp/hbase-${user.name}</value>
</property>
<!-- zk 端口 -->
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
<!-- hbase 依赖 zk的地址 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>c2-kl-client,c2-kl-namenode,c2-kl-snamenode</value>
</property>
<!-- zk是否支持多重更新 -->
<property>
<name>hbase.zookeeper.useMulti</name>
<value>true</value>
</property>
<!-- LRUBlockCache块缓存的大小,默认为堆大小的 40% -->
<property>
<name>hfile.block.cache.size</name>
<value>0.4</value>
</property>
<!-- phoenix 允许客户自定义函数 -->
<property>
<name>phoenix.functions.allowUserDefinedFunctions</name>
<value>true</value>
</property>
<!-- phoenix 查询超时时间 -->
<property>
<name>phoenix.query.timeoutMs</name>
<value>60000</value>
</property>
<!-- 全局索引维护提供索引写入请求时要使用的线程数 -->
<property>
<name>phoenix.rpc.index.handler.count</name>
<value>15</value>
</property>
<!-- zk 恢复重试次数 -->
<property>
<name>zookeeper.recovery.retry</name>
<value>6</value>
</property>
<!-- zk session超时时间 -->
<property>
<name>zookeeper.session.timeout</name>
<value>90000</value>
</property>
<!-- hbase 在zk上默认的根目录 -->
<property>
<name>zookeeper.znode.parent</name>
<value>/hbase-secure</value>
</property>
</configuration>