调整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 *...
Impala 4.x版本开始,支持设置mt_dop查询参数来提升聚合、排序等计算类操作的性能。在本例中,可以将mt_dop调整为8来进行性能加速。 在有数BI场景,NDH Impala还支持根据查询的触发类型来动态设置mt_dop值,如下所示,对于触发类型为User、UserFlush和Integration的查询,将mt_dop从8调整为16。 QUERY_OPTION_COMMENT_R...
(2)设置MT_DOP查询选项,使用更多的线程进行统计信息,注意:对大表收集统计信息时,如果设置较高的MT_DOP值会对同时间运行的其他查询产生负面影响。此特点从2.8开始引入。 (3)通过实验推断或者取样特征进一步提高统计信息的效率。(属于实验) Compute stats需要周期地运行,比如每周,或者当表的内容发生重大改变的时候。取...
对于统计信息计算产生的SQL,Impala自动将MT_DOP设置为4以提升计算性能。相比节点间并行,节点内并行通过query option设置,更加灵活可控。在Impala 3.4及之前版本,MT_DOP不够完善,无法支持分布式Join等操作,从Impala 4.0开始,MT_DOP已支持绝大部分算子。我们在TPCH和TPCDS场景下的测试数据表明,将MT_DOP设置为16的性能明...
对于单条没有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资源被充分利用但又不至于过载。
明智的决定是使新的多线程模型的调整选项保持简单。这就是选择单个mt_dop选项的原因。它确定查询的最大并行度,如果查询较小,Impala将自动降低并行度。可以在服务器、资源池、会话和查询级别设置此选项。除了为用户提供调整节点内并行度级别的旋钮外,这还具有重要的副作用,可以使调度变得更容易,查询延迟也更可预测...
MT_DOP查询选项可以设置多线程执行的并行度。默认情况下一个plan fragment在一台机器上只会有一个实例(线程),设置MT_DOP后可以指定并行的实例数目,以加速cpu-bound的查询。 在4.0之前只有scan和aggregate完全支持,并在执行Parquet表的compute stats时默认设置MT_DOP=4。
QueryOptions (setbyconfigurationandplanner): MT_DOP=0 该信息显示当前查询使用了哪些查询选项(QUERY OPTIONS),这有助于我们判断是否在用户级别(user level)或池级别(pool level)覆盖了查询选项。一个示例是将Impala Daemon的内存设置为120GB,但小查询仍然失败,并抛出OutOfMemory异常,通过该信息可以帮助我们验证用户...
使新的多线程模型的配置项保持简单是一个明智的决定,这就是只设计一个mt_dop选项的原因。它确定查询的最大并行度,如果查询较小,Impala将自动降低并行度。可以在服务器、资源池、会话(session)和查询级别设置此选项。除了为用户提供调整节点内并行度级别的旋钮外,这还具有重要的副作用,可以使调度变得更容易,查询延迟...