StochasticLoadBalancer

均衡影响的因素
权重 name(xml配置) 默认值
region数量 hbase.master.balancer.stochastic.regionCountCost 500
region迁移的数量 hbase.master.balancer.stochastic.moveCost 100
每个regiion server, region数量的倾斜度 hbase.master.balancer.stochastic.tableSkewCost 35
根据StoreFile的本地程度 hbase.master.balancer.stochastic.localityCost 25
StoreFile的大小 hbase.master.balancer.stochastic.storefileSizeCost 5
memstore的大小 hbase.master.balancer.stochastic.memstoreSizeCost 5
写请求 hbase.master.balancer.stochastic.writeRequestCost 5
读请求 hbase.master.balancer.stochastic.readRequestCost 5

HBase Performance Tuning

关闭swap nohup swapoff -a > /dev/null & echo 0 > /proc/sys/vm/swappiness 修改/etc/sysctl.conf,新增vm.swappiness = 0 减少full gc, 采用BucketCache, 性能测试 name|value :---------------|:--------------- hfile.block.cache.size|0.01 hbase.bucketcache.ioengine|file:/tmp/bucketcachetmpfs/cache.data hbase.bucketcache.percentage.in.combinedcache|0.99 hbase.bucketcache.size|20480 hbase.regionserver.global.memstore.upperLimit|0.60 hbase.regionserver.global.memstore.lowerLimit|0.55 编辑/etc/cron.daily/tmpwatch, 不包含目录/tmp/bucketcachetmpfs 重要配置 name|value|description :---------------|:---------------|:--------------- hbase.master.wait.on.regionservers.mintostart|5|regionserver一半 dfs.datanode.failed.volumes.tolerated|2|挂载6个, 2个坏了可以容忍 启动backup master MTTR配置 name|value|description :---------------|:---------------|:--------------- hbase.lease.recovery.dfs.timeout|23000|recover lease的超时时间, 大于dfs的 如下hdfs配置|| dfs.client.socket-timeout|10000|60s变为10s dfs.datanode.socket.write.timeout|10000|8 * 60变为10s ipc.client.connect.timeout|3000|60s变为3s ipc.client.connect.max.retries.on.timeouts|2| dfs.namenode.avoid.read.stale.datanode|true|...
11 Nov 2014 Comments

hbase create table

HTableDescriptor
方法 作用
setCompactionEnabled Compaction的开关, 默认开启
setDurability 设置wal的存储模型, 默认同SYNC_WAL
setMaxFileSize 设置split触发的最大文件大小, 默认为-1, 采用全局配置
setMemStoreFlushSize 设置memstore的flush大小, 默认为-1, 采用全局配置
setReadOnly 设置该表只读, 默认为false

Hbase Batch Get

实现 描述 分组 运行时间(ms) 丢失率 avg min max stddev qps
AsyncHbaseBatchGetServiceImpl 采用asynchbase和CountDownLatch 1 7070 0.01% 1 0 332 10.66 610
AsyncJdkBatchGetServiceImpl 采用Future, 父子线程处理 5 12055 0% 1 0 277 13.64 594
DeferredBatchGetServiceImpl Deferred和CountDownLatch 5 50096 0% 5 0 505 49.84 410
HystrixBatchGetServiceImpl 采用Hystrix的Request Collapsing 1 154824 0% 15 0 2086 154.34 218
NativeBatchGetServiceImpl 原生batch get, 内部实现采用AsyncProcess 1 386787 0% 41 0 13605 446.93 102
AsyncJdkBatchGetServiceImplV1 采用CountDownLatch 5 49698 0% 5 0 502 49.84 406
AsyncJdkBatchGetServiceImplV2 采用Future, 父子线程处理, 没有分组 1 10075 0% 1 0 330 10.87 605
NativeGetServiceImpl 原生get 1 112326 0% 11 0 2047 111.07 265

Java Microbenchmarking Harness(jmh)

下载源代码,并放到本地库中
hg clone http://hg.openjdk.java.net/code-tools/jmh/ jmh
cd jmh/
mvn clean install -DskipTests
创建项目
mvn archetype:generate \
      -DinteractiveMode=false \
      -DarchetypeGroupId=org.openjdk.jmh \
      -DarchetypeArtifactId=jmh-java-benchmark-archetype \
      -DgroupId=org.sample \
      -DartifactId=test \
      -Dversion=1.0