Kylin 在贝壳的性能挑战和 HBase 优化实践( 三 )
2)解决方案
文章插图
我们当时的解决方案是去任务堆积的有队列推积的RegionServer上去看日志 , 通过查询开始时间结束时间做差值 , 找出查询时间最长的Top10的查询 , 通过QureyID匹配出Cube和具体的SQL , 最终我们发现一般这种查询时间特别长都是因为查询方式的变化与原来Cube设置的Rowkey不相符导致了全表扫描 。 最终的方案其实查出来之后Kylin的同学会去调整Cube的Rowkey设置 , 然后重新构建 。
这种离线的定位的方式其实不是特别好 , 一开始我们想基于日志做实时报警 , 这样能帮助我们更快的发现和定位问题 , 但是后来想想这也是比较被动的一种方式 , 这只是发现问题 , 不能彻底解决这个问题 。
我们后来想的一个方案是SQL作执行之前可以为SQL打分 , 评分过低的就拒绝执行 , 这个功能还没有实现 。 有这个想法是因为当我们找到SQL信息后 ,Kylin的同学是可以看出来查询是不是不合理 , 是不是跟Rowkey设置不符 , 我们想以后做这样一个功能 , 把人为判断的经验程序化 , 在SQL没有执行之前就把潜在的风险化解掉 。
慢查询治理 – 主动防御
文章插图
慢查询治理还有一个举措是Kylin的主动防御 。 我们发现有大量的耗时较长的查询会占据请求队列 , 影响其他查询的响应时间 。
解决方案是通过Kafka收集Kylin的日志 , 经过天眼系统实时清洗后写入Druid , 通过Druid做统计分析 , 如果某个业务方/Cube在一定时间内超过3秒的查询到达一定的阀值 , 主动防御系统会把这个业务方/Cube的查询超时时间设置为1s , 让较慢的查询尽快超时 , 避免对正常查询的干扰 。 右边就是我们整个流程的一个架构图 , 主动防御对慢查询治理有一定的作用 , 但全表扫描的情况还是没有办法完全避免 。
重点指标查询性能保障1)现象
文章插图
另外一个举措是对重点指标的查询性能保障 。 早期HBase集群只有HDD一种存储介质 , 重点指标和普通指标都存储在HDD上 , 非常容易受到其他查询和HDD性能的影响 , 重点指标响应时间无法保障 。
2)解决方案我们的解决方案是利用了HDFS的异构存储 , 给一部分DataNode插上SSD , 将重点Cube的数据存储在SSD上 , 提升吞吐的同时与普通指标数据做存储隔离 , 这样就既避免了受到其他查询的影响 , 也可以通过SSD的性能来提升吞吐 。 引入SSD只是做了存储的隔离 , 还可以通过RSGroup做计算隔离 , 但由于重点指标的请求量占到了集群总请求量的90%以上 , 单独隔离出几台机器是不足以支撑这么大请求量的 , 所以最终我们并没有这么做 。
最后是我们得出的一些经验 ,SSD对十万以上扫描量查询性能提升40%左右 , 对百万以上扫描量性能提升20%左右 。
文章插图
这是我们用SSD做的一些改动 , 数据存储在SSD是可针对Cube设置的 。 我们可以指定哪些Cube存在SSD上 , 构建任务建表时会读取Cube的配置 , 按照Cube配置来设置HBase表的属性和该表的HDFS路径存储策略 。 在DistCp拷贝之前也要先读取Cube的配置 , 如果Cube的配置是ALL_SSD , 程序需要设置DistCp的目的路径存储策略为ALL_SSD , 设置完成后再进行数据拷贝 。
这样做的目的是为了避免Bulkload后数据还需要从HDD移动到SSD , 移动数据会带来什么影响呢?我们发现如果不先设置DistCp目的路径存储策略的话 , 数据会被先写到HDD上 , Bulkload后由于表的HDFS存储路径存储策略是ALL_SSD , Hadoop的Mover程序会把数据从HDD移动到SSD , 当一个数据块的三个副本都移动到SSD机器上后 , RegionServer不能从其缓存该数据块的三台DataNode上读取到数据 , 这时RegionServer会随机等待几秒钟后去向NameNode获取该数据块最新的DataNode信息 , 这会导致查询响应时间变长 , 所以需要在DistCp拷贝数据之前先设置目的路径的存储策略 。
JVM GC瓶颈1)现象
文章插图
我们遇到的下一个问题就是RegionServer的JVM GC瓶颈 。 在查询高峰期Kylin HBase JVM Pause报警特别频繁 , 从这张图里面可以看到有一天已经超过1200个 。 Kylin对用户的承诺是三秒内查询占比在99.7% , 当时已经达到了99.8% , 于是我们就想还需要优化哪一块能让3秒内查询占比达到99.9% , 这个JVM Pause明显成为我们需要改进的一个点 , 大家做JAVA基本都知道JVM怎么去优化呢?
- 麒麟|荣耀新款,麒麟810+4800万超清像素,你还在犹豫什么呢?
- 智能手机市场|华为再拿第一!27%的份额领跑全行业,苹果8%排在第四名!
- 行业|现在行业内客服托管费用是怎么算的
- 零部件|马瑞利发力电动产品,全球第七大零部件供应商在转型
- 通气会|12月4~6日,2020中国信息通信大会将在成都举行
- 俄罗斯手机市场|被三星、小米击败,华为手机在俄罗斯排名跌至第三!
- 体验|闭上眼睛点外卖是什么感觉?时隔一年再次体验,进步令人欣慰
- 当初|这是我的第一部华为手机,当初花6799元买的,现在“一文不值”?
- 出海|出海日报丨短视频生产服务商小影科技完成近4亿元 C 轮融资;华为成为俄罗斯在线出售智能手机的第一品牌
- 看过明年的iPhone之后,现在下手的都哭了
