impala使用及調優

Impala是基於Hive的大數據實時分析查詢引擎,直接使用Hive的元數據庫Metadata,意味着impala元數據都存儲在Hive的metastore中。

Hive適合於長時間的批處理查詢分析,而Impala適合於實時交互式SQL查詢。

在impala中一條SQL語句先後經歷BeeswaxService.Query->TClientRequest->TExecRequest,最後把TExecRequest交由impala-coordinator分發給多個backend處理。

 

查詢語句:

show table status students;

describe students;

 

impala優化:

>explain sql; #查看執行計劃

>profile; #輸出底層信息計劃

>summary;#查看查詢時間及佔用內存

注意項:

1)Join的時候大表一定要放在左邊,因爲impala在廣播右側表,所以右側表會複製到需要右側表進行聯接的所有節點。

2)廣播連接(Broadcast joins) 是默認方式,右側的表被認爲比左側的表小,並且它的內容被髮送到查詢涉及到的其他節點上。替代的技術稱作分割連接(partitioned join) (與分區表無關),更適用於近乎相同大小的大型表的連接。使用這一技術,每一個表的部分內容被髮送到對應的其他節點,然後這些行的子集可以並行處理。廣播和分區連接的選擇仍然依賴於連接中所有表的可用的、使用 COMPUTE STATS 語句的統計信息。

 

impala配置項:

set DISABLE_UNSAFE_SPILLS=0/FALSE; #0(FALSE)內存運算瀕臨溢出時轉爲磁盤運算,1(TRUE)時,當內存溢出時直接報內存溢出“Memory limit exceeded”錯誤

set mem_limit=-1 #取消內存限制;

 

參考資料:

Impala和Hive的關係(詳解):https://www.cnblogs.com/zlslch/p/6785207.html

Impala原理及其調優:https://www.cnblogs.com/chenz/articles/3947147.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章