Hive和Impala的區別

2021-10-06 04:22:47 字數 2213 閱讀 2000

hive和impala的區別

資料儲存:使用相同的儲存資料池都支援把資料儲存於hdfs, hbase。

元資料:兩者使用相同的元資料。

sql解釋處理:比較相似都是通過詞法分析生成執行計畫。

執行計畫:

hive: 依賴於mapreduce執行框架,執行計畫分成 map->shuffle->reduce->map->shuffle->reduce…的模型。如果乙個query會 被編譯成多輪mapreduce,則會有更多的寫中間結果。由於mapreduce執行框架本身的特點,過多的中間過程會增加整個query的執行時間。

impala: 把執行計畫表現為一棵完整的執行計畫樹,可以更自然地分發執行計畫到各個impalad執行查詢,而不用像hive那樣把它組合成管道型的 map->reduce模式,以此保證impala有更好的併發性和避免不必要的中間sort與shuffle。

資料流:

hive: 採用推的方式,每乙個計算節點計算完成後將資料主動推給後續節點。

impala: 採用拉的方式,後續節點通過getnext主動向前面節點要資料,以此方式資料可以流式的返回給客戶端,且只要有1條資料被處理完,就可以立即展現出來,而不用等到全部處理完成,更符合sql互動式查詢使用。

記憶體使用:

•hive: 在執行過程中如果記憶體放不下所有資料,則會使用外存,以保證query能順序執行完。每一輪mapreduce結束,中間結果也會寫入hdfs中,同樣由於mapreduce執行架構的特性,shuffle過程也會有寫本地磁碟的操作。

•impala: 在遇到記憶體放不下資料時,當前版本1.0.1是直接返回錯誤,而不會利用外存,以後版本應該會進行改進。這使用得impala目前處理query會受到一 定的限制,最好還是與hive配合使用。impala在多個階段之間利用網路傳輸資料,在執行過程不會有寫磁碟的操作(insert除外)。

排程:

•hive: 任務排程依賴於hadoop的排程策略。

•impala: 排程由自己完成,目前只有一種排程器******-schedule,它會盡量滿足資料的區域性性,掃瞄資料的程序盡量靠近資料本身所在的物理機器。排程器 目前還比較簡單,在******scheduler::getbackend中可以看到,現在還沒有考慮負載,網路io狀況等因素進行排程。但目前 impala已經有對執行過程的效能統計分析,應該以後版本會利用這些統計資訊進行排程吧。

容錯:

•hive: 依賴於hadoop的容錯能力。

•impala: 在查詢過程中,沒有容錯邏輯,如果在執行過程中發生故障,則直接返回錯誤(這與impala的設計有關,因為impala定位於實時查詢,一次查詢失敗, 再查一次就好了,再查一次的成本很低)。但從整體來看,impala是能很好的容錯,所有的impalad是對等的結構,使用者可以向任何乙個 impalad提交查詢,如果乙個impalad失效,其上正在執行的所有query都將失敗,但使用者可以重新提交查詢由其它impalad代替執行,不 會影響服務。對於state store目前只有乙個,但當state store失效,也不會影響服務,每個impalad都快取了state store的資訊,只是不能再更新集群狀態,有可能會把執行任務分配給已經失效的impalad執行,導致本次query失敗。

適用面:

•hive: 複雜的批處理查詢任務,資料轉換任務。

•impala:實時資料分析,因為不支援udf,能處理的問題域有一定的限制,與hive配合使用,對hive的結果資料集進行實時分析。

(1)hive有很多的特性:

1、對複雜資料型別(比如arrays和maps)和視窗分析更廣泛的支援

2、高擴充套件性

3、通常用於批處理

(2)impala更快

1、專業的sql引擎,提供了5x到50x更好的效能

2、理想的互動式查詢和資料分析工具

3、更多的特性正在新增進來

hive和hbase的區別

hive是基於hadoop基礎設施之上的資料倉儲。hql是一種類sql語言,使用mapreduce來執行。

hbase是一種適合於非結構化資料儲存的資料庫。儲存key/value。

Impala重新整理Hive源資料

方式一 hue使用perform incremental metadata update,不要用invalidate all metadata and rebuild index,如果是invalidate metadata什麼都不加,寧願重新啟動catalogd。方式二 如果涉及到表的schema...

impala如何出現hive表的資料

對應的操作為 invalidate metadata t system cpumemory refresh t system cpumemory 深入學習impala的最主要乙個原因就是目前在使用impala的時候遇到了各種了效能問題,之前定位過一次問題,猜測其效能損耗的乙個主要原因在invalid...

impala查詢語句 Impala的元件和架構介紹

impala是由cloudera公司開發的新型查詢系統,能夠對儲存在hdfs hbase以及s3上的資料進行快速的互動式sql查詢。另外,impala與hive使用了統一的儲存系統 同樣的元資料庫 sql語法 hive sql odbc驅動和使用者互動介面 hue impala對實時的或者面向批處理...