<configuration>abse
<property>
<name>hbase.rootdir</name>
<value>hdfs://magic1:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>magic1,magic2,magic3</value>
<description>The directory shared by RegionServers.</description>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/home/mfuser/work/hbase/temp</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
<description>如果要支持二级索引,应该添加配置</description>
</property>
<property>
<name>hbase.hregion.compacting.memstore.type</name>
<value>BASIC</value>
<description>default:NONE,用户表内存压缩方法,可选值:BASIC/EAGER/ADAPTIVE,通过内存压缩机制,可以有效降低写放大、提升GC效率、提升写入吞吐量、降低尾部读取延迟</description>
</property>
<property>
<name>hbase.systemtables.compacting.memstore.type</name>
<value>BASIC</value>
<description>default:NONE,系统表内存压缩方法,可选值:BASIC/EAGER</description>
</property>
<property>
<name>hbase.client.write.buffer</name>
<value>4000000</value>
<description>default:2097152,2M,客户端写请求的缓冲区大小,满了之后会将数据发送到服务端</description>
</property>
<property>
<name>hbase.client.retries.number</name>
<value>15</value>
<description>default:15,所有可重试操作的重试次数</description>
</property>
<property>
<name>hbase.client.pause</name>
<value>100</value>
<description>default:100,重试间隔</description>
</property>
<property>
<name>hbase.client.max.total.tasks</name>
<value>100</value>
<description>default:100,HTable实例发送到集群的并发任务数量</description>
</property>
<property>
<name>hbase.client.max.perserver.tasks</name>
<value>5</value>
<description>default:2,HTable实例发送到单个regionserver的并发任务数量</description>
</property>
<property>
<name>hbase.client.max.perregion.tasks</name>
<value>1</value>
<description>default:1,HTable实例发送到单个region的并发任务数量</description>
</property>
<property>
<name>hbase.rpc.timeout</name>
<value>120000</value>
<description>default:60000,客户端一次rpc请求超时时间</description>
</property>
<property>
<name>hbase.rpc.read.timeout</name>
<value>120000</value>
<description>default:60000,客户端一次读rpc请求超时时间,如果没有则采用hbase.rpc.timeout</description>
</property>
<property>
<name>hbase.rpc.write.timeout</name>
<value>120000</value>
<description>default:60000,客户端一次写rpc请求超时时间如果没有则采用hbase.rpc.timeout</description>
</property>
<property>
<name>hbase.client.operation.timeout</name>
<value>1200000</value>
<description>default:1200000,客户端一次操作超时时间,一次操作内可以retry多次rpc请求</description>
</property>
<property>
<name>hbase.client.meta.operation.timeout</name>
<value>1200000</value>
<description>default:1200000,客户端一次操作超时时间,一次操作内可以retry多次rpc请求</description>
</property>
<property>
<name>hbase.client.scanner.timeout.period</name>
<value>1200000</value>
<description>default:1200000,客户端一次操作超时时间,一次操作内可以retry多次rpc请求</description>
</property>
<property>
<name>hbase.regionserver.handler.count</name>
<value>40</value>
<description>default:30,服务端处理请求的处理器实例数量,即并发处理rpc请求的线程数,io密集型设置为CPU的2倍,以此为基准进行调整</description>
</property>
<property>
<name>hbase.ipc.server.callqueue.handler.factor</name>
<value>0.5</value>
<description>default:0.1,服务端的请求队列因子,0表示所有处理器共享一个队列,队列里包含所有的请求,0.1表示 40*0.1个队列作为请求的队列数,1表示每个处理器一个队列,为了提升并发量,可以适当调大这个比例</description>
</property>
<property>
<name>hbase.ipc.server.callqueue.read.ratio</name>
<value>0.3</value>
<description>default:0.0,请求队列中读请求队列的比例,假设共 40*0.2=8个队列,0.0表示每个队列里都有读请求和写请求,0.3表示8*0.3个队列全是读请求,其他队列全是写请求,1.0表示除了1个写请求队列,其他全是读请求队列,根据实际场景中读写频率调整该值</description>
</property>
<property>
<name>hbase.ipc.server.callqueue.scan.ratio</name>
<value>0.5</value>
<description>default:0,对于读队列,长读和短读队列的比例,0和1表示所有读队列中既包含长读也包含短读,0.8表示80%的读队列只包含长读,另外20%的读队列只包含短读</description>
</property>
<property>
<name>hfile.block.cache.size</name>
<value>0.30</value>
<description>default:0.4,一个regionserver中为读请求设置的内存比例,为heap的40%,读请求 先读memstore 再读 blockcache 再读HFile</description>
</property>
<property>
<name>hbase.regionserver.global.memstore.size</name>
<value>0.5</value>
<description>default:none,等价于hbase.regionserver.global.memstore.upperLimit,upperLimit属于旧参数,如果指定了upperLimit则可以不指定global.memstore.size,regionserver上所有的内存消耗达到40%后阻塞所有的更新,开始将内存flush到磁盘,直到内存占用率降下来之后就可以继续接受新的请求。
个人理解:default 0.4 该值为 head*0.5 整个regionServer中所有memstore总和达到该值时,
会触发整个regionServer级别的flush,所有memstore不管有没有达到128M都会flush产生一个storeFile,所有读写操作将会阻塞,服务不可用
</description>
</property>
<property>
<name>hbase.regionserver.global.memstore.size.lower.limit</name>
<value>0.45</value>
<description>default:none,等价于hbase.regionserver.global.memstore.lowerLimit,lowerLimit属于旧参数,如果指定了lowerLimit则可以不指定.memstore.size.lower.limit,regionserver上所有的内存达到38%后,可以继续接受更新请求,但是此时开始强制将内存flush到磁盘,如果写数据速度超过flush速度,则会触发上面一个限制条件
个人理解:默认0.95 该为 head*hbase.regionserver.global.memstore.size*0.95 = head * 0.4 * 0.95 = head * 0.38
当前regionServer中的所有memstore的总和达到 head*0.38时,会产生flush,此时可写不可读,
如果写入速度大于flush速度,则会触发上面一个限制条件,此值相当于在上一个值触发之前的缓冲
</description>
</property>
<property>
<name>hbase.regionserver.region.split.policy</name>
<value>org.apache.hadoop.hbase.regionserver.SteppingSplitPolicy</value>
<description>default:org.apache.hadoop.hbase.regionserver.SteppingSplitPolicy,region split 策略,可选值为:BusyRegionSplitPolicy, ConstantSizeRegionSplitPolicy, DisabledRegionSplitPolicy, DelimitedKeyPrefixRegionSplitPolicy, KeyPrefixRegionSplitPolicy, and SteppingSplitPolicy.</description>
</property>
<property>
<name>hbase.regionserver.regionSplitLimit</name>
<value>10000</value>
<description>default:1000,限制region个数,默认1000表示1000个region之后不再拆分,只有一个很大的region</description>
</property>
<property>
<name>hbase.hregion.memstore.flush.size</name>
<value>134217728</value>
<description>default:134217728-128M,一个region的所有memstore之和达到该值后就flush到磁盘,一个region中有多少个列簇就有多少个memstore
个人理解 : 单个memstore内存大小默认128M,当达到该值时进行flush
</description>
</property>
<property>
<name>hbase.hregion.percolumnfamilyflush.size.lower.bound.min</name>
<value>134217728</value>
<description>default:16777216-16M,这个参数指定单个memstore flush的下限值,默认值为 hbase.hregion.memstore.flush.size / number of column family,如果这个参数比默认值大就用这个参数,memstore出发下限值就会进行 单个 memstore的flush,如果单个memstore都不超限,但是总内存超限,则该region的所有memstore全部flush,通常是这种情况</description>
</property>
<property>
<name>hbase.hregion.memstore.block.multiplier</name>
<value>8</value>
<description>default:4,内存达到4倍的 hbase.hregion.memstore.flush.size 时,阻塞所有的写请求</description>
</property>
<property>
<name>hbase.hregion.memstore.mslab.enabled</name>
<value>true</value>
<description>default:true ,减少full GC的频率</description>
</property>
<property>
<name>hbase.hregion.max.filesize</name>
<value>10737418240</value>
<description>default:10737418240-10G ,HFile的最大值,超过该值则split新的region</description>
</property>
<property>
<name>hbase.hregion.majorcompaction</name>
<value>604800000</value>
<description>default:604800000-7d ,major compaction周期</description>
</property>
<property>
<name>hbase.hregion.majorcompaction.jitter</name>
<value>0.3</value>
<description>default:0.5,major compaction周期</description>
</property>
<property>
<name>hbase.hstore.compactionThreshold</name>
<value>10</value>
<description>default:3,StoreFile数量超过该值就执行compaction</description>
</property>
<property>
<name>hbase.hstore.flusher.count</name>
<value>8</value>
<description>default:2,memstore flush到disk的并发线程数量</description>
</property>
<property>
<name>hbase.hstore.blockingStoreFiles</name>
<value>30</value>
<description>default:16,StoreFile数量达到该值则阻塞所有的写请求</description>
</property>
<property>
<name>hbase.hstore.blockingWaitTime</name>
<value>180000</value>
<description>default:90000,region阻塞所有写请求的超时设置,超过这个时间则不再阻塞请求,即便上面的StoreFile的compaction没有完成</description>
</property>
</configuration>
hbase.xml
最新推荐文章于 2023-03-03 19:12:50 发布