日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

大数据计算引擎:impala对比hive

發布時間:2024/7/23 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大数据计算引擎:impala对比hive 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

Impala與Hive的異同

數據存儲

元數據

SQL解釋處理

執行計劃:

數據流:

內存使用:

調度:

容錯:

適用面:

Impala相對于Hive所使用的優化技術

Impala的優缺點


Impala與Hive的異同

數據存儲

使用相同的存儲數據池都支持把數據儲于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: 調度由自己完成,目前只有一種調度器simple-schedule,它會盡量滿足數據的局部性,掃描數據的進程盡量靠近數據本身所在的物理機器。調度器目前還比較簡單,在SimpleScheduler::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的結果數據集進行實時分析。

?

Impala相對于Hive所使用的優化技術

1、沒有使用MapReduce進行并行計算,雖然MapReduce是非常好的并行計算框架,但它更多的面向批處理模式,而不是面向交互式的SQL執行。與MapReduce相比:Impala把整個查詢分成一執行計劃樹,而不是一連串的MapReduce任務,在分發執行計劃后,Impala使用拉式獲取數據的方式獲取結果,把結果數據組成按執行樹流式傳遞匯集,減少的了把中間結果寫入磁盤的步驟,再從磁盤讀取數據的開銷。Impala使用服務的方式避免每次執行查詢都需要啟動的開銷,即相比Hive沒了MapReduce啟動時間。

2、使用LLVM產生運行代碼,針對特定查詢生成特定代碼,同時使用Inline的方式減少函數調用的開銷,加快執行效率。

3、充分利用可用的硬件指令(SSE4.2)。

4、更好的IO調度,Impala知道數據塊所在的磁盤位置能夠更好的利用多磁盤的優勢,同時Impala支持直接數據塊讀取和本地代碼計算checksum。

5、通過選擇合適的數據存儲格式可以得到最好的性能(Impala支持多種存儲格式)。

6、最大使用內存,中間結果不寫磁盤,及時通過網絡以stream的方式傳遞。

?

Impala的優缺點

優點:

  • 支持SQL查詢,快速查詢大數據。
  • 可以對已有數據進行查詢,減少數據的加載,轉換。
  • 多種存儲格式可以選擇(Parquet, Text, Avro, RCFile, SequeenceFile)。
  • 可以與Hive配合使用。

缺點:

  • 不支持用戶定義函數UDF。
  • 不支持text域的全文搜索。
  • 不支持Transforms。
  • ?不支持查詢期的容錯。
  • 對內存要求高。

?

傳送門:?大數據生態圈常用組件(一):數據庫、查詢引擎、ETL工具、調度工具等

?

?

總結

以上是生活随笔為你收集整理的大数据计算引擎:impala对比hive的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。