问题
我正在和凤凰城建立二级指数.索引创建需要几个小时.这似乎是由于缓慢的HBase扫描,因为我注意到以下性能:
>我可能需要2个小时来扫描表格,而其他开发人员报告了几分钟的大桌子(1亿行).
> HBase shell能够计数大约几行.每秒10.000的速度,这意味着计算这个表的所有行的3800s(> 1小时!).
兼容HBase shell和Java扫描器.
注意:GET(by rowkey)操作是以良好的性能(约0.5s)实现的.
上下文
> 38百万行/ 1000列/单列系列/ 96Go与GZ压缩.
> Cluster具有6个节点(126Go RAM,24个核心)和5个区域服务器.
> Hortonworks Data Platform 2.2.0
故障排除
1)硬件
> IO(磁盘)
> NMon说,磁盘从来不会占用80%以上,最常见的是0到20%
> Top表示HBase JVM没有交换(检查2的5 RS)
> IO(网络):每个节点的活动接口站在同一个交换机上(所有第二个被动接口都插在不同的交换机上)
2)JVM
> GC暂停OK(几分钟左右暂停一分钟左右)
堆看起来不错(不接近极限峰值太长)
> CPU是惊人的LOW:永远不会超过10%
>主题:
>活动线程(10“RpServe.reader = N”其他几个)显示没有争用
>很多停放的线程什么都不做(60“DefaultRpcServer.handler = n”,约15个其他)
> IPC客户端列表,无任何线程状态
3)数据
>使用Hive completebulkload批量加载.
>区域数量:
> 13个区域意味着我们每个RS有2到3个大区域,这是预期的.
>强制执行主要压缩后,扫描性能保持不变.
>区域大小相当均匀:11个地区为4,5Go(/0.5),2个地区为2,5Go
4)HBase配置
大多数配置保持不变.
> HBase env仅表示JMX控制台的端口
凤凰城的HBase站点设置很少
>一些对我来说很好的参数
> hbase.hregion.memstore.block.multiplier
> hbase.hregion.memstore.flush.size:134217728 bytes(134Go)
> Xmx的Xmn比例:.2 Xmn最大值:512 Mb Xms:6144m
> hbase.regionserver.global.memstore.lowerLimit:0.38
> hbase.hstore.compactionTreshold:3
> hfile.block.cache.size:0.4(块缓存大小AS%的堆)
>最大HStoreFile(hbase.hregion.max.filesize):10 go(10737418240)
>客户端扫描器缓存:100行zookeeper超时:30s
>客户端最大键值大小:10mo
> hbase.regionserver.global.memstore.lowerLimit:0.38
> hbase.regionserver.global.memstore.upperLimit:0.40
>商店封锁商店:10
> hbase.hregion.memstore.mslab.enabled:
> enabled hbase.hregion.majorcompaction.jitter:0.5
>尝试以下配置更改,而不会对性能造成任何影响
> hbase-env.sh:试图增加HBASE_HEAPSIZE = 6144(因为它默认为1000)
> hbase-site.xml:
> hbase.ipc.server.callqueue.read.ratio:0.9
> hbase.ipc.server.callqueue.scan.ratio:0.9
5)日志说没有用
cat hbase-hbase-master-cox.log | grep“2015-05-11.* ERROR”
cat hbase-hbase-regionserver – *.log | grep“2015-05-11.* ERROR”
打印什么
打印警告显示非相关错误
2015-05-11 17:11:10,544 WARN [B.DefaultRpcServer.handler = 8,queue = 2,port = 60020] shortcircuit.ShortCircuitCache:ShortCircuitCache(0x2aca5fca):无法加载1074749724_BP-2077371184-184.10.17.65-1423758745093到期到InvalidToken异常.
2015-05-11 17:09:12,848 WARN [regionserver60020-smallCompactions-1430754386533] hbase.HBaseConfiguration:配置选项“hbase.regionserver.lease.period”已被弃用.而是使用“hbase.client.scanner.timeout.period”