Impala调试注意事项

来源:互联网 发布:超市收银软件多少钱 编辑:程序博客网 时间:2024/05/21 22:46

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';

altertable 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 bwhere a.cloumn1 = b.cloumn1;


6、Impala设置并发度

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


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




0 0