Impala调试注意事项

本文介绍了Impala在性能优化方面的一些注意事项,包括选择合适的压缩算法,计算统计信息以优化查询计划,利用HDFS缓存提升数据读取效率,维持特定的JOIN顺序,以及通过SQL Hint指定JOIN方式。同时,还提到了调整Impala并发度以适应不同查询需求的重要性。
摘要由CSDN通过智能技术生成

1、压缩(默认是Snappy)

是否压缩需要根据具体场景而定,如果需要压缩推荐使用Snappy。压缩的好处在于HDFS上存储更少,以及在执行broadcast的时候网络传输更少的数据,但要解压缩需要带来额外的CPU开销。如果执行的SQL本身是CPU密集型的,压缩未必合适。

不使用压缩:

set compression_codec=none;

使用GZIP压缩:

set compression_codec=gzip;

查看参数值:

set;


2、计算统计信息compute stats

计算统计信息后,一些简单的聚合计算,比如max( )、count( ),都可以根据与计算的结果快速响应。另外,Impala在计算Query Plan时也会利用统计信息,比如对join的顺序进行自动优化。需要注意的是这种自动“优化”可能带来性能的下降。

计算统计信息的示例:

compute stats table_name;


3、HDFS 缓存

HDFS允许将常用数据锁(LOCK)在内存中,以提高数据读取的效率。使用HDFS缓存时也要考虑权衡(Tradeoff)。毕竟这部分内存会被锁住,使得这部分内存无法在Impala计算过程中被使用。

使用HDFS Cache示例:

sudo -u hdfs hdfs cacheadmin -addPool impala_pool -owner impala -limit 3000000000


alter table table_name set cached in 'impala_pool';

alter table table_name set uncached;


4、保持join顺序

默认情况下compute stats会对join的顺序进行自动优化,但是这个自动“优化”未必会对所有SQL带来性能的提升。对于那些性能下降的SQL,可以使用straight_join保证Impala在计算Query Plan保持原有的join顺序。

使用straight_join示例:

select straight_join a.cloumn1, b.cloumn2 from table_name a inner join table_name2 b where a.cloumn1 = b.cloumn1;


5、SQL Hint指定join方式

SQL join 过程中涉及到数据的网络传输,Impala支持两种模式:broadcast 和 shuffle。Impala会根据表的大小选择合适的模式。

使用Hint示例:

select a.cloumn1, a.cloumn2 from table_name a join [ shuffle | broadcast ] table_name2 b where a.cloumn1 = b.cloumn1;


6、Impala设置并发度

在Cloudera Manager界面点击“集群”中的资源管理下的“动态资源池”,如下图:


然后点击“配置”可以看到已有的资源池,可以进行编辑,点击“Impala”可以修改“最大运行查询”和“最大队列查询”等。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值