目前hive支援mapreduce、tez和spark 3種計算引擎。
mapreduce計算引擎
在hive 2.0之後不推薦mr作為計算引擎。
map和reduce的工作流程
mr執行的完整過程:
map在讀取資料時,先將資料拆分成若干資料,並讀取到map方法中被處理。資料在輸出的時候,被分成若干分割槽並寫入記憶體快取(buffer)中,記憶體快取被資料填充到一定程度會溢位到磁碟並排序,當map執行完後會將乙個機器上輸出的臨時檔案進行歸併存入到hdfs中。
當reduce啟動時,會啟動乙個執行緒去讀取map輸出的資料,並寫入到啟動reduce機器的記憶體中,在資料溢位到磁碟時會對資料進行再次排序。當讀取資料完成後會將臨時檔案進行合併,作為reduce函式的資料來源。
tez計算引擎
apache tez是進行大規模資料處理且支援dag作業的計算框架,它直接源於mapreduce框架,除了能夠支援mapreduce特性,還支援新的作業形式,並允許不同型別的作業能夠在乙個集群中執行。
tez將原有的map和reduce兩個操作簡化為乙個概念——vertex,並將原有的計算處理節點拆分成多個組成部分:vertex input、vertex output、sorting、shuffling和merging。計算節點之間的資料通訊被統稱為edge,這些分解後的元操作可以任意靈活組合,產生新的操作,這些操作經過一些控制程式組裝後,可形成乙個大的dag作業。
通過允許apache hive執行複雜的dag任務,tez可以用來處理資料,之前需要多個mr jobs,現在乙個tez任務中。
tez和mapreduce作業的比較
tez繞過了mapreduce很多不必要的中間的資料儲存和讀取的過程,直接在乙個作業中表達了mapreduce需要多個作業共同協作才能完成的事情。
tez作業的提交
tez相比於mapreduce有幾點重大改進:
當查詢需要有多個reduce邏輯時,hive的mapreduce引擎會將計畫分解,每個redcue提交乙個mr作業。這個鏈中的所有mr作業都需要逐個排程,每個作業都必須從hdfs中重新讀取上乙個作業的輸出並重新洗牌。而在tez中,幾個reduce接收器可以直接連線,資料可以流水線傳輸,而不需要臨時hdfs檔案,這種模式稱為mrr(map-reduce-reduce*)。
tez還允許一次傳送整個查詢計畫,實現應用程式動態規劃,從而使框架能夠更智慧型地分配資源,並通過各個階段流水線傳輸資料。對於更複雜的查詢來說,這是乙個巨大的改進,因為它消除了io/sync障礙和各個階段之間的排程開銷。
在mapreduce計算引擎中,無論資料大小,在洗牌階段都以相同的方式執行,將資料序列化到磁碟,再由下游的程式去拉取,並反序列化。tez可以允許小資料集完全在記憶體中處理,而mapreduce中沒有這樣的優化。倉庫查詢經常需要在處理完大量的資料後對小型資料集進行排序或聚合,tez的優化也能極大地提公升效率。
spark計算引擎
apache spark是專為大規模資料處理而設計的快速、通用支援dag(有向無環圖)作業的計算引擎,類似於hadoop mapreduce的通用並行框架,可用來構建大型的、低延遲的資料分析應用程式。
spark具有以下幾個特性。
1.高效性
spark會將作業構成乙個dag,優化了大型作業一些重複且浪費資源的操作,對查詢進行了優化,重新編寫了物理執行引擎,如可以實現mrr模式。2.易用性
spark不同於mapreducer只提供兩種簡單的程式設計介面,它提供了多種程式設計介面去運算元據,這些操作介面如果使用mapreduce去實現,需要更多的**。spark的操作介面可以分為兩類:transformation**換)和action(執行)。transformation包含map、flatmap、distinct、reducebykey和join等轉換操作;action包含reduce、collect、count和first等操作。
3.通用性
spark針對實時計算、批處理、互動式查詢,提供了統一的解決方案。但在批處理方面相比於mapreduce處理同樣的資料,spark所要求的硬體設施更高,mapreduce在相同的裝置下所能處理的資料量會比spark多。所以在實際工作中,spark在批處理方面只能算是mapreduce的一種補充。
4.相容性
spark和mapreduce一樣有豐富的產品生態做支撐。例如spark可以使用yarn作為資源管理器,spark也可以處理hbase和hdfs上的資料。
擴充套件:spark on yarn提供了兩種提交作業的模式:yarn client和yarn cluster。兩個模式在執行計算節點,完成資料從讀入、處理、輸出的過程基本一樣。不同的是,yarn client作業的監控管理放在提交作業所在的節點,yarn cluster則是交給yarn去決定,yarn會根據集群各個節點資源的使用情況,選擇最為合適的節點來存放作業監控和管理程序。yarn client一般用於測試,yarn cluster用於實際生產環境。
Hive支援的計算引擎
目前hive支援mapreduce tez和spark 3種計算引擎。mapreduce計算引擎 在hive 2.0之後不推薦mr作為計算引擎。map和reduce的工作流程 mr執行的完整過程 map在讀取資料時,先將資料拆分成若干資料,並讀取到map方法中被處理。資料在輸出的時候,被分成若干分割...
Hive更換Tez計算引擎
centos7 jdk1.8 hive 2.3.6 hadoop 2.7.7 tez 0.9.2 linux下hive的安裝 用hive直接編寫mr程式,假設有4個有依賴關係的mr作業,上圖中,藍色代表maptask,綠色代表reducetask,雲狀表示中間結果持久化到磁碟 tez可以將多個有依賴...
hive安裝Tez計算引擎
centos 7 hive 1.2.1 apache tez 0.9.1 上傳taz到hdfs中 hadoop fs mkdir tez hadoop fs put apache tez 0.9.1 bin.tar.gz tez 解壓縮tar zxvf apache tez 0.9.1 bin.ta...