调整MT_DOP 通过Profile,我们看到,读取HDFS的instance数量和HOST数量是一致的。我们尝试设置MT_DOP参数来提高每个host上启动的instance数量。它应该被设置为0-64之间。 set MT_DOP=15; -- 重新执行SQL 调整后,立竿见影。速度从6m到了53s。最大的HDFS读取时间为51s。我们看到SCAN HDFS的INST数量变成了195=15 *...
Hosts和Inst表示进程数和执行计划片段数,由于图中查询是在单个impalad进程上执行,因此Hosts和Inst均为1。若开启MT_DOP,则某些节点的Inst会高于Hosts。如下图所示,F00片段的执行并发数变为16,由于多线程并发执行,因此查询耗时也从19.65s减少为3.56s。 PROFILE PROFILE提供了最为详细的执行信息,包括每个节点的物理细节...
明智的决定是使新的多线程模型的调整选项保持简单。这就是选择单个mt_dop选项的原因。它确定查询的最大并行度,如果查询较小,Impala将自动降低并行度。可以在服务器、资源池、会话和查询级别设置此选项。除了为用户提供调整节点内并行度级别的旋钮外,这还具有重要的副作用,可以使调度变得更容易,查询延迟也更可预测...
Impala还可以通过MT_DOP参数配置查询在executor节点内的执行并发线程数。对于统计信息计算产生的SQL,Impala自动将MT_DOP设置为4以提升计算性能。相比节点间并行,节点内并行通过query option设置,更加灵活可控。在Impala 3.4及之前版本,MT_DOP不够完善,无法支持分布式Join等操作,从Impala 4.0开始,MT_DOP已支持绝大部分算子。
图1.使用Apache Impala的新多线程模型的性能提升(20个Executor,mt_dop = 12) 新的多线程模型的目的 在第一篇文章中,我们将重点介绍在查询执行方面最近完成的工作,就是扩展查询执行里的多线程模型。首先交代一些相关的上下文,Impala的设计理念的两个主要原则是: ...
对于单条没有JOIN的查询语句,您可以在Impala控制台通过命令设置mt_dop参数为n以提升并发度,其中n为每台机器的并发度。 Ranger开启Impala后,新扩容的Impala节点无法正常工作,该怎么办? 问题现象:EMR-5.6.0及之前的版本,在EMR控制台上Ranger开启Impala并扩容节点后,新扩容的Impala节点无法正常工作。 问题分析:开启Ranger...
所以我们引入了一个基于CPU负载的MT_DOP自适应的能力,它会监测Impalad当前CPU负载情况,如果CPU的负载超过某个阈值,就会对应地把 MT_DOP值调小,如果负载处于比较低的水平,查询就可以设置更高的线程并发度,利用更多的计算资源,让它更快地执行完,确保CPU资源被充分利用但又不至于过载。
(2)设置MT_DOP查询选项,使用更多的线程进行统计信息,注意:对大表收集统计信息时,如果设置较高的MT_DOP值会对同时间运行的其他查询产生负面影响。此特点从2.8开始引入。 (3)通过实验推断或者取样特征进一步提高统计信息的效率。(属于实验) Compute stats需要周期地运行,比如每周,或者当表的内容发生重大改变的时候。取...
其中,size_rhs为根据右表基数和每行数据序列化后的预估大小计算得到,意为右表在网络中传输的数据大小;instNum_lhs为左表所在impalad的个数,由MT_DOP(多线程处理参数,线程个数)和扫描左表的impalad的个数确定,意为所有参与左表扫描的impalad总个数;两者相乘为一次网络传输中右表需要传输的数据量;内存代价与网络...
QueryOptions (setbyconfigurationandplanner): MT_DOP=0 Plan: --- 我们将其分为几个部分来介绍,这里面有一些频繁用到的重要信息: 1、查询ID: Query(id=36433472787e1cab:29c30e7800000000): 该ID唯一标识在Impala中运行过的SQL,这对于从Impala Daemon日志中用ID查询相关的信息很有用,只需搜索此查询ID,就可...