中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Apache Tez指的是什么

發布時間:2022-01-14 15:04:35 來源:億速云 閱讀:165 作者:柒染 欄目:云計算

本篇文章為大家展示了Apache Tez指的是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

你可能聽說過Apache Tez,它是一個針對Hadoop數據處理應用程序的新分布式執行框架。但是它到底是什么呢?它的工作原理是什么?哪些人應該使用它,為什么?如果你有這些疑問,那么可以看一下Bikas Saha和Arun Murthy提供的呈現“Apache Tez: 加速Hadoop查詢處理”,在這個呈現中他們討論了Tez的設計,它的一些突出亮點,同時還分享了通過讓Hive使用Tez而不是MapReduce而獲得的一些初始成果。

呈現記錄由 Roopesh Shenoy編輯

Tez是Apache最新的支持DAG作業的開源計算框架,它可以將多個有依賴的作業轉換為一個作業從而大幅提升DAG作業的性能。Tez并不直接面向最終用戶——事實上它允許開發者為最終用戶構建性能更快、擴展性更好的應用程序。Hadoop傳統上是一個大量數據批處理平臺。但是,有很多用例需要近乎實時的查詢處理性能。還有一些工作則不太適合MapReduce,例如機器學習。Tez的目的就是幫助Hadoop處理這些用例場景。

Tez項目的目標是支持高度定制化,這樣它就能夠滿足各種用例的需要,讓人們不必借助其他的外部方式就能完成自己的工作,如果 Hive和 Pig 這樣的項目使用Tez而不是MapReduce作為其數據處理的骨干,那么將會顯著提升它們的響應時間。Tez構建在YARN之上,后者是Hadoop所使用的新資源管理框架。

Apache Tez指的是什么

設計哲學

Tez產生的主要原因是繞開MapReduce所施加的限制。除了必須要編寫Mapper和Reducer的限制之外,強制讓所有類型的計算都滿足這一范例還有效率低下的問題——例如使用HDFS存儲多個MR作業之間的臨時數據,這是一個負載。在Hive中,查詢需要對不相關的key進行多次shuffle操作的場景非常普遍,例如join - grp by - window function - order by。

Tez設計哲學里面的關鍵元素包括:

  • 允許開發人員(也包括最終用戶)以最有效的方式做他們想做的事情

  • 更好的執行性能

Tez之所以能夠實現這些目標依賴于以下內容:

  • 具有表現力的數據流API——Tez團隊希望通過一套富有表現力的數據流定義API讓用戶能夠描述他們所要運行計算的有向無環圖 (DAG)。為了達到這個目的,Tez實現了一個結構化類型的API,你可以在其中添加所有的處理器和邊,并可視化實際構建的圖形。

  • 靈活的輸入—處理器—輸出(Input-Processor-Output)運行時模型——可以通過連接不同的輸入、處理器和輸出動態地構建運行時執行器。

  • 數據類型無關性——僅關心數據的移動,不關心數據格式(鍵值對、面向元組的格式等)。

  • 動態圖重新配置

  • 簡單地部署——Tez完全是一個客戶端應用程序,它利用了YARN的本地資源和分布式緩存。就Tez的使用而言,你不需要在自己的集群上部署任何內容,僅需要將相關的Tez類庫上傳到HDFS上,然后使用Tez客戶端提交這些類庫即可。

    你甚至可以在你的集群上放置兩份類庫。一份用于產品環境,它使用穩定版本供所有的生產任務使用;另一份使用最新版本,供用戶體驗。這兩份類庫相互獨立,互不影響。

  • Tez能夠運行任意MR任務,不需要做任何改動。這樣能夠讓那些現在依賴于MR的工具實現分布遷移。

接下來讓我們詳細地探索一下這些表現力豐富的數據流API——看看我們可以使用它們做些什么?例如,你可以使用MRR模式而不是使用多個MapReduce任務,這樣一個單獨的map就可以有多個reduce階段;并且這樣做數據流可以在不同的處理器之間流轉,不需要把任何內容寫入HDFS(將會被寫入磁盤,但這僅僅是為了設置檢查點),與之前相比這種方式性能提升顯著。下面的圖表闡述了這個過程:

Apache Tez指的是什么

Apache Tez指的是什么

第一個圖表展示的流程包含多個MR任務,每個任務都將中間結果存儲到HDFS上——前一個步驟中的reducer為下一個步驟中的mapper提供數據。第二個圖表展示了使用Tez時的流程,僅在一個任務中就能完成同樣的處理過程,任務之間不需要訪問HDFS。

Tez的靈活性意味著你需要付出比MapReduce更多的努力才能使用它,你需要學習更多的API,需要實現更多的處理邏輯。但是這還好,畢竟它和MapReduce一樣并不是一個面向最終用戶的應用程序,其目的是讓開發人員基于它構建供最終用戶使用的應用程序。

以上內容是對Tez的概述及其目標的描述,下面就讓我們看看它實際的API。

Tez API

Tez API包括以下幾個組件:

  • 有向無環圖(DAG)——定義整體任務。一個DAG對象對應一個任務。

  • 節點(Vertex)——定義用戶邏輯以及執行用戶邏輯所需的資源和環境。一個節點對應任務中的一個步驟。

  • 邊(Edge)——定義生產者和消費者節點之間的連接。

    邊需要分配屬性,對Tez而言這些屬性是必須的,有了它們才能在運行時將邏輯圖展開為能夠在集群上并行執行的物理任務集合。下面是一些這樣的屬性:

    • 數據移動屬性,定義了數據如何從一個生產者移動到一個消費者。

    • 調度(Scheduling)屬性(順序或者并行),幫助我們定義生產者和消費者任務之間應該在什么時候進行調度。

    • 數據源屬性(持久的,可靠的或者暫時的),定義任務輸出內容的生命周期或者持久性,讓我們能夠決定何時終止。

如果你想查看一個API的使用示例,對這些屬性的詳細介紹,以及運行時如何展開邏輯圖,那么可以看看Hortonworks提供的這篇文章。

運行時API基于輸入—處理器—輸出模型,借助于該模型所有的輸入和輸出都是可插拔的。為了方便,Tez使用了一個基于事件的模型,目的是為了讓任務和系統之間、組件和組件之間能夠通信。事件用于將信息(例如任務失敗信息)傳遞給所需的組件,將輸出的數據流(例如生成的數據位置信息)傳送給輸入,以及在運行時對DAG執行計劃做出改變等。

Tez還提供了各種開箱即用的輸入和輸出處理器。

這些富有表現力的API能夠讓更高級語言(例如Hive)的編寫者很優雅地將自己的查詢轉換成Tez任務。

Tez調度程序

在決定如何分配任務的時候,Tez調度程序考慮了很多方面,包括:任務位置需求、容器的兼容性、集群可利用資源的總量、等待任務請求的優先級、自動并行化、釋放應用程序不再使用的資源(因為對它而言數據并不是本地的)等。它還維護著一個使用共享注冊對象的預熱JVM連接池。應用程序可以選擇使用這些共享注冊對象存儲不同類型的預計算信息,這樣之后再進行處理的時候就能重用它們而不需要重新計算了,同時這些共享的連接集合及容器池資源也能非常快地運行任務。

如果你想了解更多與容器重利用相關的信息,那么可以查看這里。

擴展性

總體來看,Tez為開發人員提供了豐富的擴展性以便于讓他們能夠應對復雜的處理邏輯。這可以通過示例“Hive是如何使用Tez的”來說明。

Apache Tez指的是什么

讓我們看看這個經典的TPC-DS查詢模式,在該模式中你需要將多個維度表與一個事實表連接到一起。大部分優化器和查詢系統都能完成該圖右上角部分所描述的場景:如果維度表較小,那么可以將所有的維度表與較大的事實表進行廣播連接,這種情況下你可以在Tez上完成同樣的事情。

但是如果這些廣播包含用戶自定義的、計算成本高昂的函數呢?此時,你不可能都用這種方式實現。這就需要你將自己的任務分割成不同的階段,正如該圖左邊的拓撲圖所展示的方法。第一個維度表與事實表進行廣播連接,連接的結果再與第二個維度表進行廣播連接。

第三個維度表不再進行廣播連接,因為它太大了。你可以選擇使用shuffle連接,Tez能夠非常有效地導航拓撲。

使用Tez完成這種類型的Hive查詢的好處包括:

  • 它為你提供了全面的DAG支持,同時會自動地在集群上完成大量的工作,因而它能夠充分利用集群的并行能力;正如上面所介紹的,這意味著在多個MR任務之間不需要從HDFS上讀/寫數據,通過一個單獨的Tez任務就能完成所有的計算。

  • 它提供了會話和可重用的容器,因此延遲低,能夠盡可能地避免重組。

使用新的Tez引擎執行這個特殊的Hive查詢性能提升將超過100%。

路線圖

  • 更加豐富的DAG支持。例如,Samza是否能夠使用Tez作為其底層支撐然后在這上面構建應用程序?為了讓Tez能夠處理Samza的核心調度和流式需求開發團隊需要做一些支持。Tez團隊將探索如何在我們的DAG中使用這些類型的連接模式。他們還想提供更好的容錯支持,更加有效地數據傳輸,從而進一步優化性能,并且改善會話性能。

  • 考慮到這些DAG的復雜度無法確定,需要提供很多自動化的工具來幫助用戶理解他們的性能瓶頸。

Tez是一個支持DAG作業的分布式執行框架。它能夠輕而易舉地映射到更高級的聲明式語言,例如Hive、Pig、Cascading等。它擁有一個高度可定制的執行架構,因而我們能夠在運行時根據與數據和資源相關的實時信息完成動態性能優化。框架本身會自動地決定很多棘手問題,讓它能夠順利地正確運行。

使用Tez,你能夠得到良好的性能和開箱即用的效率。Tez的目標是解決Hadoop數據處理領域所面對的一些問題,包括延遲以及執行的復雜性等。Tez是一個開源的項目,并且已經被Hive和Pig使用。

上述內容就是Apache Tez指的是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

tez
AI

和顺县| 鸡泽县| 三门县| 江孜县| 东兴市| 宿州市| 合水县| 正镶白旗| 广河县| 桂东县| 宣武区| 平邑县| 河北省| 阿拉善盟| 揭西县| 仁寿县| 南郑县| 滦平县| 保德县| 搜索| 九台市| 鄂托克前旗| 锡林郭勒盟| 密山市| 望都县| 措勤县| 巫山县| 岗巴县| 连江县| 昌吉市| 清新县| 河津市| 甘孜县| 余江县| 千阳县| 全椒县| 武定县| 双鸭山市| 昆明市| 高阳县| 库伦旗|