问题描述
kudu集群在导入大量历史数据之后,在Impala/kudu上查询变慢,之前集群查询的时间基本上在2秒左右,但是现在查询时间延长到80秒到90秒左右。这个查询时间对于任何应用都是无法忍受的。
问题定位
通过CDH的CM上的Impala组件中的SQL语句统计信息发现,SQL查询时间主要FragmentF00阶段的5号节点KUDU扫表,其余几个节点查询扫描时间正常。
1.首先比较各个节点之间的数据扫描记录,确定是否存在数据倾斜问题。
通过比较几个节点之间的扫描记录的大小,发现各个几点扫描的记录大小基本在同一个级别,因此排除节点之间数据倾斜问题。
2.比较各个节点扫描的速率
通过SQL查询语句的具体统计信息发现,5号节点的KUDU扫描速率为16M/s,这个速率是不正常的,同时对比其他节点的扫描速率,发现其他节点的扫描速率在90M/s ~ 100M/s之间,因此断定5号节点的KUDU存在问题。
3.查看5号节点的存储信息
进一步查看CM,发现整个KUDU集群中占磁盘空间最大的两个Replica均位于5号节点上,分别占8.4G和6.2G的磁盘空间。这两个副本的问题有:
-
磁盘中WAL文件个数明显比其他的Replica多,这两个Replica的文件分别为79个和36个,其他正常副本的个数一般为1~2个。
-
这2个Replica的scan时间偏高很多。5号节点的其他Replica的扫描时间为为几秒,而这个两个Replica的Scan时间为分钟级别。