hbase.xml

<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>
23/07/23 16:19:48 ERROR AsyncProcess: Failed to get region location org.apache.hadoop.hbase.DoNotRetryIOException: java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.util.ByteStringer at org.apache.hadoop.hbase.client.RpcRetryingCaller.translateException(RpcRetryingCaller.java:241) at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:214) at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas$RetryingRPC.call(ScannerCallableWithReplicas.java:364) at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas$RetryingRPC.call(ScannerCallableWithReplicas.java:338) at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:137) at org.apache.hadoop.hbase.client.ResultBoundedCompletionService$QueueingFuture.run(ResultBoundedCompletionService.java:65) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.util.ByteStringer at org.apache.hadoop.hbase.protobuf.RequestConverter.buildRegionSpecifier(RequestConverter.java:1041) at org.apache.hadoop.hbase.protobuf.RequestConverter.buildScanRequest(RequestConverter.java:492) at org.apache.hadoop.hbase.client.ClientSmallReversedScanner$SmallReversedScannerCallable.call(ClientSmallReversedScanner.java:291) at org.apache.hadoop.hbase.client.ClientSmallReversedScanner$SmallReversedScannerCallable.call(ClientSmallReversedScanner.java:276) at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:212) ... 7 more
最新发布
07-24
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值