Hive SQL运行变慢阶段如何排查
场景说明
对于一个Hive SQL任务,如果运行时间突然变长,可能有多种原因造成,如HiveServer编译变慢、访问HDFS变慢、访问Yarn变慢或访问元数据变慢。
操作步骤
以下为Hive SQL在哪个阶段执行变慢的排查方法:
- HiveServer编译变慢
查看HiveServer审计日志“/var/log/Bigdata/audit/hive/hiveserver/hive-audit.log”,搜索运行的SQL,如图1的SQL为“show databases”,过滤线程名包含“HiveServer2-Handler-Pool”的两条记录,第一条记录为开始编译时间,第二条记录为结束编译时间。 根据SQL变慢前后的审计记录可判断是否是HiveServer编译变慢。
- 访问HDFS变慢
- 访问Yarn变慢
查看HiveServer运行日志“/var/log/Bigdata/hive/hiveserver/hive.log”,搜索运行的SQL对应的线程日志,再搜索Kill Command日志,如果该日志后面间隔较长时间才打出下一行日志,则表示访问Yarn变慢。
- 访问元数据变慢
在FusionInsight Manager界面,选择“集群 > 服务 > Hive > 实例 > 任一MetaStore实例 > 图表”,在“图表分类”选择“操作统计”,查看“create_table API元数据操作耗时情况”和“add_partitions_req api执行情况”等监控,看SQL运行慢是否是因为MetaStore访问变慢。