impala是由cloudera公司開發的新型查詢系統,它提供sql語義,能查詢儲存在hadoop的hdfs和hbase上的pb級大資料,在效能上比hive高出3~30倍。
impala的執行需要依賴於hive的元資料。
impala是參照 dremel系統進行設計的。
impala採用了與商用並行關聯式資料庫類似的分布式查詢引擎,可以直接與hdfs和hbase進行互動查詢。
impala和hive採用相同的sql語法、odbc驅動程式和使用者介面。
圖:impala與其他元件的關係
圖:impala系統架構圖
impala和hive、hdfs、hbase等工具是統一部署在乙個hadoop平台上的。impala主要由impalad,state store和cli三部分組成。
(1)impalad
(2)state store
(3)cli
說明:impala中的元資料直接儲存在hive中。impala採用與hive相同的元資料、sql語法、odbc驅動程式和使用者介面,從而使得在乙個hadoop平台上,可以統一部署hive和impala等分析工具,同時支援批處理和實時查詢。圖:impala查詢執行過程圖
impala執行查詢的具體過程:
第0步,當使用者提交查詢前,impala先建立乙個負責協調客戶端提交的查詢的impalad程序,該程序會向impala state store提交註冊訂閱資訊,state store會建立乙個statestored程序,statestored程序通過建立多個執行緒來處理impalad的註冊訂閱資訊。
第1步,使用者通過cli客戶端提交乙個查詢到impalad程序,impalad的query planner對sql語句進行解析,生成解析樹;然後,planner把這個查詢的解析樹變成若干planfragment,傳送到query coordinator.
第3步,coordinator初始化相應impalad上的任務執行,即把查詢任務分配給所有儲存這個查詢相關資料的資料節點。
第4步,query executor通過流式交換中間輸出,並由query coordinator匯聚來自各個impalad的結果。
第5步,coordinator把彙總後的結果返回給cli客戶端。
圖:impala與hive的對比
hive與impala的不同點總結如下:
hive適合於長時間的批處理查詢分析,而impala適合於實時互動式sql查詢。hive依賴於mapreduce計算框架,impala把執行計畫表現為一棵完整的執行計畫樹,直接分發執行計畫到各個impalad執行查詢。hive在執行過程中,如果記憶體放不下所有資料,則會使用外存,以保證查詢能順序執行完成,而impala在遇到記憶體放不下資料時,不會利用外存,所以impala目前處理查詢時會受到一定的限制。
hive與impala的相同點總結如下:
hive與impala使用相同的儲存資料池,都支援把資料儲存於hdfs和hbase中。hive與impala使用相同的元資料。hive與impala中對sql的解釋處理比較相似,都是通過詞法分析生成執行計畫。
總結:
以上內容為聽華為大資料培訓課程和大學mooc上廈門大學 林子雨的《大資料技術原理與應用》課程而整理的筆記。大資料技術原理與應用:
Impala 技術點梳理
1.優點 1.1 快!主節點生成執行計畫樹並分發執行計畫至各節點並行執行的拉式獲取資料 mr 推式獲取資料 計算的中間結果不寫入磁碟 1.2 便利 提供sql語義,可以方便的進行複雜的資料分析任務 2.缺點 2.1 啃記憶體 對於記憶體的依賴過於嚴重,記憶體溢位直接導致技術任務的失敗 2.2 sql...
Impala實踐之十五 Impala使用文件
由於前期大家使用impala的時候都比較隨意,再加上對impala的原理不清楚,因此在使用的過程中對impala帶來了很大的壓力。經過前段時間的研究和實驗。我整理了乙份impala使用文件,供組內小夥伴使用。只有通過hdfs增加或刪除分割槽中檔案後,才需要人為更新元資料,其餘情況依賴impala自帶...
impala查詢語句 Impala的元件和架構介紹
impala是由cloudera公司開發的新型查詢系統,能夠對儲存在hdfs hbase以及s3上的資料進行快速的互動式sql查詢。另外,impala與hive使用了統一的儲存系統 同樣的元資料庫 sql語法 hive sql odbc驅動和使用者互動介面 hue impala對實時的或者面向批處理...