文档章节

一步一步理解Impala query profile(一)

九州暮云
 九州暮云
发布于 2019/12/08 10:47
字数 1453
阅读 99
收藏 0

很多Impala用户不知道如何阅读Impala query profile来了解一个查询背后正在执行的操作,从而在此基础上对查询进行调优以充分发挥查询的性能。因此我想写一篇简单的文章来分享我的经验,并希望它可以对希望了解更多信息的人有所帮助。

这是本系列的第1部分,我将介绍一些Impala query profile的基础知识和查看Profile时特别要注意的内容。

获取Impala query profile

首先,获取Impala query profile有两种方法,最简单的方法是在impala-shell中运行查询后执行“PROFILE”语句,如下所示:

[impala-daemon-host.com:21000] > SELECT COUNT(*) FROM sample_07;
Query: SELECT COUNT(*) FROM sample_07
Query submitted at: 2018-09-14 15:57:35 (Coordinator: https://impala-daemon-host.com:25000)
dQuery progress can be monitored at: https://impala-daemon-host.com:25000/query_plan?query_id=36433472787e1cab:29c30e7800000000
+----------+
| count(*) |
+----------+
| 823      |
+----------+
Fetched 1 row(s) in 6.68s

[impala-daemon-host.com:21000] > PROFILE; <-- Simply run "PROFILE" as a query
Query Runtime Profile:
Query (id=36433472787e1cab:29c30e7800000000):
Summary:
Session ID: 443110cc7292c92:6e3ff4d76f0c5aaf
Session Type: BEESWAX
.....

也可以在CDHWeb页面(Cloudera Manager Web UI)上点击CM > Impala > Queries,找到刚刚运行的查询,然后点击Query Details

接着向下滚动找到“Download Profile”按钮:

你也可以到执行查询的Impala Daemonimpalad节点,该节点在Impala集群中为coordinator角色)节点的Web界面来下载query profile信息:

https://{impala-daemon-url}:25000/queries

Web界面会展示出在当前Impala Daemon节点执行的SQL列表:

然后点击对应SQL后的“Details”链接转到“Profile” tab页:

获取了Profile之后,接下来我们开始剖析Profile

Profile解析

下面是Query Profile的一段文本,该段文本是Profile最上面的概要(Summary)部分:

Query (id=36433472787e1cab:29c30e7800000000):
Summary:
Session ID: 443110cc7292c92:6e3ff4d76f0c5aaf
Session Type: BEESWAX
Start Time: 2018-09-14 15:57:35.883111000
End Time: 2018-09-14 15:57:42.565042000
Query Type: QUERY
Query State: FINISHED
Query Status: OK
Impala Version: impalad version 2.11.0-cdh5.14.x RELEASE (build 50eddf4550faa6200f51e98413de785bf1bf0de1)
User: hive@VPC.CLOUDERA.COM
Connected User: hive@VPC.CLOUDERA.COM
Delegated User:
Network Address: ::ffff:172.26.26.117:58834
Default Db: default
Sql Statement: SELECT COUNT(*) FROM sample_07
Coordinator: impala-daemon-url.com:22000
Query Options (set by configuration):
Query Options (set by configuration and planner): MT_DOP=0
Plan:
----------------

我们将其分为几个部分来介绍,这里面有一些频繁用到的重要信息:

1、查询ID:

Query (id=36433472787e1cab:29c30e7800000000):

ID唯一标识在Impala中运行过的SQL,这对于从Impala Daemon日志中用ID查询相关的信息很有用,只需搜索此查询ID,就可以了解SQL运行细节和相关的错误信息。

2、Session类型:

Session Type: BEESWAX

这可以告诉我们连接来自哪里。BEESWAX意味着查询是从impala-shell客户端运行的。如果从Hue运行,类型将是HIVESERVER2,因为Hue是通过HIVESERVER2 thrift连接的。

3、查询起止时间:

Start Time: 2018-09-14 15:57:35.883111000
End Time: 2018-09-14 15:57:42.565042000

这可以告诉我们查询运行了多长时间,此时间包括会话空闲时间(session idle time)。因此,如果你看到在Hue运行一个简单的查询用了几秒钟返回结果,是由于Hue会保持会话打开直到会话关闭或用户运行另一个查询,因此此处的时间可能比正常显示的时间更长。如果通过impala-shell运行,则开始时间和结束时间应与运行时间完全匹配,因为impala-shell在查询完成后会立即关闭查询处理程序。

4、查询状态:

Query Status: OK

这表明查询是否成功完成。OK表示查询成功执行完成。如果有错误,通常会在此处显示,例如,被用户取消(cancelled by user)、会话超时(session timeout)、异常(Exceptions)等。

5、Impala版本:

Impala Version: impalad version 2.11.0-cdh5.14.x RELEASE (build 50eddf4550faa6200f51e98413de785bf1bf0de1)

该信息显示运行查询的Impala版本,如果你发现它与你安装的Impala版本不匹配,则说明未正确安装某些部分。

6、运行查询的用户信息:

User: hive@XXX.XXXXXX.COM
Connected User: hive@XXX.XXXXXX.COM
Delegated User:

该信息表示运行查询的用户。

7、查询所用的数据库:

Default Db: default

该信息表示查询所使用的数据库。

8、查询语句:

Sql Statement: SELECT COUNT(*) FROM sample_07

如果你帮助其他人排查问题,则需要此信息,因为需要了解查询的构造方式以及涉及的表,在许多情况下,对查询的简单重写将有助于解决问题或提高查询性能。

9、执行查询的impalad节点:

Coordinator: impala-daemon-host.com:22000

该信息显示运行查询的Impala daemon服务的主机,通常被称为Coordinator,这有助于我们选择从哪个主机查找INFOWARNINGERROR级别的日志。

10、查询选项:

Query Options (set by configuration):
Query Options (set by configuration and planner): MT_DOP=0

该信息显示当前查询使用了哪些查询选项(QUERY OPTIONS),这有助于我们判断是否在用户级别(user level)或池级别(pool level)覆盖了查询选项。一个示例是将Impala Daemon的内存设置为120GB,但小查询仍然失败,并抛出OutOfMemory异常,通过该信息可以帮助我们验证用户是否在会话中将MEM_LIMIT参数设置了太小的值(可能导致OutOfMemory异常)。

总结

本系列的第1部分介绍了查询的摘要(Summary)部分以帮助我们了解Query Profile的基本信息,在本系列的下一部分,将详细介绍查询计划以及Profile的执行摘要(Execution Summary)部分。

编译自:IMPALA QUERY PROFILE EXPLAINED – PART 1

© 著作权归作者所有

九州暮云
粉丝 73
博文 166
码字总数 129370
作品 0
海淀
高级程序员
私信 提问
管理 Impala(部分翻译)

管理 Impala 作为管理员,你应监视 Impala 的资源使用情况,必要时采取行动以保证 Impala 平衡运行,避免与统一集群里的其他 Haoopd 组件冲突。当检测到已发生或将发生的问题时,你应重新配置...

weiqingbin
2013/12/17
1.4K
0
Impala 性能调整(翻译)

Impala 性能调整 下面的章节介绍影响 Impala 功能性能的各种因素,并对 Impala 查询和其他 SQL 操作进行性能调整、监控和基准测试。 这一章节同样描述了最大化 Impala 可扩展性的技术。可扩展...

weiqingbin
2014/01/13
1.5W
0
Impala(多图手机用户慎入,理论+实践)

Impala 是参照google 的新三篇论文Dremel(大批量数据查询工具)的开源实现,功能类似shark(依赖于hive)和Drill(apache),impala 是clouder 公司主导开发并开源,基于hive 并使用内存进行计...

SET
2016/09/21
1.6K
1
大数据时代快速SQL引擎-Impala

随着大数据时代的到来,Hadoop在过去几年以接近统治性的方式包揽的ETL和数据分析查询的工作,大家也无意间的想往大数据方向靠拢,即使每天数据也就几十、几百M也要放到Hadoop上作分析,只会适...

Linux就该这么学
2019/01/08
47
0
coreseek 问题

按照我的理解,索引会根据 sql_query 的sql 语句生成索引 sql_attr_uint = * 的不会被编入索引 sql_query_info 不知道是干嘛用的 我按照官方文档一步一步的配置完成并成功生成了索引,把测试...

foxidea
2013/08/06
644
3

没有更多内容

加载失败,请刷新页面

加载更多

每天AC系列(六):有效的括号

1 题目 LeetCode第20题,这题比较简单,匹配括号. 2 栈 这是栈的典型应用,括号匹配,当然不需要直接使用栈,使用一个StringBuilder即可: if(s.isEmpty()) return true;char a = s.charAt(0);...

Blueeeeeee
今天
27
0
Spring AOP-06-切入点类型

切入点是匹配连接点的拦截规则。之前使用的是注解@Pointcut,该注解是AspectJ中的。除了这个注解之外,Spring也提供了其他一些切入点类型: • 静态方法切入点StaticMethodMatcherPointcut •...

moon888
昨天
90
0
Class Loaders in Java

1. Introduction to Class Loaders Class loaders are responsible for loading Java classes during runtime dynamically to the JVM (Java Virtual Machine). Also, they are part of the ......

Ciet
昨天
96
0
以Lazada为例,看电商系统架构演进

什么是Lazada? Lazada 2012年成立于新加坡,是东南亚第一电商,2016年阿里投资10亿美金,2017年完成对lazada的收购。 业务模式上Lazada更偏重自营,类似于亚马逊,自建仓储和为商家提供服务...

春哥大魔王的博客
昨天
62
0
【自用】 Flutter Timer 简单用法

dart: void _startTime() async { _timer = Timer(Duration(seconds: sec), () { fun(xxx,yyy,zzz); }); } @override void dispose() { _timer.cancel()......

Tensor丨思悟
昨天
65
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部