1.優點
1.1 快!
主節點生成執行計畫樹並分發執行計畫至各節點並行執行的拉式獲取資料(mr:推式獲取資料)
計算的中間結果不寫入磁碟
1.2 便利
提供sql語義,可以方便的進行複雜的資料分析任務
2.缺點
2.1 啃記憶體
對於記憶體的依賴過於嚴重,記憶體溢位直接導致技術任務的失敗
2.2 sql支援度低
不支援udf,不支援update/delte操作,不支援同一select中多個distinct
3.記憶體優化
3.1 sqloperations that spill to disk
即在記憶體不足時將資料存入磁碟進行計算。這是在impala 1.4 for cdh4、cdh5.1開始支援的功能,以增加了磁碟io,延長了運算時間為代價,避免了記憶體溢位的問題。
開啟方式:
impalashell中執行
setdisable_unsafe_spills=0
或setdisable_unsafe_spills=false
賦值為1或true則是關閉
注意:該功能也是有限制的:
不是所有的sql語句都能觸發,例如union關鍵字還是會觸發記憶體溢位錯誤;
各個節點的記憶體峰值限制不能過低,低於運算所需分配給各個節點的最小記憶體;
運算explain輸出的各個節點預估記憶體不能過分高於各個節點的實際物理記憶體;
當觸發「spill to disk」功能時有其他併發查詢,仍會觸發記憶體溢位錯誤;
對磁碟的空間有一定的要求,磁碟運算的資料會寫入到impala各個節點的臨時目錄下,增加了磁碟i/o,並且會引發不可控制的磁碟占用。
所以,這個功能不是記憶體優化的首選方案
3.2 sql優化
1.compute stats
compute stats 是統計表的結構以及資料資訊(表、分割槽、列的資料量和資料分布資訊)並儲存在到資料庫中,集群根據統計資訊優化資料分析操作。
看似只是impala中一條獲取表的統計資訊的簡單語句,但在整個分析任務排程過程中卻起著相當重要的作用。該語句獲取的統計資訊不僅在impala對join、group by、order by、union、distinct等資源高消耗的查詢進行優化時會使用到,而且對hbase的表也同樣起作用。
使用:compute stats [table_name]
檢視統計結果
show table stats [table_name]
2.執行計畫 (explain)
通過在sql語句前面加上 explain 執行,並就可以檢視到該sql的具體執行計畫情況(實際上並未真正執行)
執行計畫是從底層顯示impala如何讀取資料,如何在各節點之間協調工作,組合並傳輸中間結果,並獲得最終結果集的全過程。
執行計畫可以提供給我們的幫助:
(1)通過讀取的資料量,我們可以判斷分割槽策略是否有效,並結合集群大小預估讀取這些資料需要的實際等。
(2)可以看到執行過程中聚合、排序、統計函式、互動的順序及具體執行細節,可以從更高階別看到中間結果在不同節點間的流向。
(3)我們可以看到操作是否被impala不同的節點並行執行,以及各節點所需記憶體預估值。
(4)通過配置explain_level引數,可以了解到更詳細的輸出資訊。取值從0~3,對應的執行計畫資訊越來越詳細。
Impala技術原理
impala是由cloudera公司開發的新型查詢系統,它提供sql語義,能查詢儲存在hadoop的hdfs和hbase上的pb級大資料,在效能上比hive高出3 30倍。impala的執行需要依賴於hive的元資料。impala是參照 dremel系統進行設計的。impala採用了與商用並行關聯式...
Linux知識點梳理
使用者名稱 主機名 root hostname 使用者名稱 主機名稱 符號含義 當前使用者屬於root使用者 當前使用者屬於普通使用者 注意 對系統進行配置管理時,如要root使用者 檢視主機名稱 hostname設定主機名稱 hostname hadoop senior.com注意 該方式設定,當...
spring 知識點梳理
1.spring預設所有管理的bean都是單例模式 懶載入,所有的bean都是交給spring容器中的map管理,生命週期與spring相同,如果使用多例模式,bean則是交給記憶體管理,生命週期與spring無關 2.ssm分層 控制層 服務層 資料層 對應的註解分別為 controller se...