超越批量處理與MapReduce:如何讓Hadoop走得更遠
譯文
Apache Tez框架開啟了一道大門,引導我們邁向高性能、交互型、分布式數據處理應用程序的全新世代。
數據可以說是現代世界當中的新型貨幣資源。能夠充分發掘數據價值的企業將制定出更有利于自身運營及發展的正確決策,并進一步引導客戶一同邁向勝利的彼岸。作為現實層面上不可替代的大數據平臺,Apache Hadoop允許企業用戶構建起具備高度可擴展性且***成本效益的數據存儲體系。企業能夠借此針對數據運行大規模并行及高性能分析型工作負載,進而解開長久以來受技術或者經濟成本束縛而塵封于深處的指導性結論。Hadoop能夠以***的規模及效率實現數據價值——這在很大程度上要歸功于Apache Tez以及YARN的鼎力協助。
分析型應用程序以目的驅動型導向對數據進行處理,因此不同類型的業務問題或者差異化供應商產品設計都會給處理過程帶來差異化特性。要針對Hadoop數據訪問創建出目的驅動型應用程序,首先需要滿足兩大先決條件。***,用戶的“操作系統”(類似于Windows或者Linux)必須能夠在共享式Hadoop環境當中托管、管理并運行這些應用程序。Apache YARN正是這樣一套面向Hadoop的數據操作系統。第二個先決條件在于,開發人員需要一套能夠編寫出可運行在YARN上的數據訪問應用程序的應用構建框架以及通用型標準。
Apache Tez恰好滿足這兩大決定性因素。Tez是一套可嵌入且具備擴展性的框架,能夠允許與YARN相結合并允許開發人員編寫出足以涵蓋各類交互式批量工作負載的原生YARN應用程序。Tez利用Hadoop那***的強大能力對PB級別的數據集進行處理,從而保證Apache Hadoop生態系統中的各類項目能夠實現與目的相符的數據處理邏輯、迅捷的響應時間以及***化數據吞吐能力。Tez能夠為Hive及Pig等Apache項目帶來史無前例的卓越處理速度及可擴展性,并逐步成為越來越多專門用于同Hadoop內存儲數據進行高速交互的針對性第三方軟件應用實現設計效果的重要前提與依托。
后MapReduce時代下的Hadoop
熟悉MapReduce的朋友們肯定急于了解Tez到底擁有哪些獨特的差異化能力。Tez是一套適用范圍極廣且更為強大的框架,在繼承了MapReduce的優勢之外也修正了后者的一部分固有局限。Tez身上沿襲自MapReduce的優勢包括以下幾點:
• 橫向可擴展能力,包括增加數據規模以及計算容量。
• 具備資源彈性機制,能夠同時在容量充裕或者有限的情況下正常運作。
• 對于分布式系統中的各類不可避免及多發故障擁有理想的容錯效果及恢復能力。
• 利用內置Hadoop安全機制實現數據處理安全保護。
不過Tez本身并不屬于處理引擎。相反,Tez的作用在于通過自身靈活性與可定制性優勢幫助使用者構建應用程序及引擎。開發人員可以利用Tez庫編寫出MapReduce任務,而Tez代碼在內置于MapReduce當中之后能夠將前者的高效特性與后者的現有任務結合起來,最終實現MapReduce處理流程的成效提升。
MapReduce曾經是(當然現在也是)那些單純只打算初步嘗試Hadoop使用體驗的用戶的理想選擇。不過當下企業級Hadoop應用已經逐步成為現實,這套被廣泛接受的平臺開始幫助越來越多用戶利用保存在其內部集群中的數據挖掘出***商業價值,與之相關的投資力度也在持續擴大。有鑒于此,定制化應用程序開始取代以MapReduce為代表的各類通用型引擎,旨在實現更為卓越的資源利用率以及性能表現提升。
Tez框架的設計理念
Apache Tez專門針對這些運行在Hadoop當中的定制化數據處理應用進行了優化。它能夠將數據處理流程整理成一套數據流程圖模型,這樣Apache Hadoop生態系統中的各類項目就能夠借此滿足人機交互時對響應時間以及PB級別極端數據吞吐能力的要求。數據流程圖中的每個節點都代表著一部分業務邏輯,專門負責對應的數據傳輸或者分析工作。不同節點之間的連接則代表著數據在不同傳輸體系間的出入往返。
一旦應用程序邏輯通過這套流程圖被確定下來,Tez就會對該邏輯進行并行化、進而在Hadoop對其加以執行。如果某款數據處理應用程序能夠通過這種方式進行建模,則意味著用戶可以利用Tez對其加以構建。提取、傳輸與載入(簡稱ETL)任務在Hadoop數據處理體系當中隨處可見,而任何一款定制型ETL應用程序都非常適合通過Tez進行打理。其它適合Tez框架的項目還包括查詢處理引擎——例如Apache Hive——以及腳本語言——例如Apache Pig,此外還有Cascadig for Java以及Scalding for Scala等語言集成及數據處理API。
在與其它Apache項目結合加以使用時,Tez框架允許大家執行更多更具成效的處理任務。Apache Hive與Tez相結合能夠為Hadoop帶來極為出色的高性能SQL執行效果,而Apache Pig與Tez聯姻后則可以對Hadoop當中的大規模復雜ETL任務進行優化。Cascading與Scalding遇見Tez框架之后將大大提升Java與Scala代碼的轉譯效率。
Tez框架當中包含有直觀的Java API,能夠幫助開發人員更為輕松地創建出獨特的數據處理流程圖,從而***程度提升應用程序的執行效率。在一套流程被定義完成后,Tez框架能夠將額外API納入到定制化業務邏輯當中,并使其運行在任務流程之內。這些API將與模塊化環境當中的輸入信息(即讀取數據)、輸出信息(即寫入數據)以及處理機制(即處理數據)相結合。大家不妨將此視為在數據分析領域搭建自己的樂高積木。
利用這些API構建而成的應用程序能夠高效運行在Hadoop環境當中,而Tez框架則負責處理其與其它堆棧組件之間的復雜交互任務。這樣一來,我們就獲得了一款定制優化且與YARN實現原生集成的應用程序,其具備出色的執行效率、可擴展性、容錯能力并能夠在多租戶Hadoop環境中保障安全效果。
Tez框架的應用
因此,企業用戶可以利用Tez框架在Hadoop當中創建目的驅動型分析應用程序。當選擇這種實施方式時,大家可以在Tez當中采取兩種不同類型的應用程序定制方式:要么對數據流程加以定義,要么對業務邏輯進行定制。
***步是對數據流程加以定義以解決相關難題。大家可以利用多種數據流程圖實現同樣的解決成效,但從其中選擇最理想的方案則能夠大大改善應用程序的執行性能。舉例來說,Apache Hive的性能表現能夠通過在利用Tez API所構建的***連接圖的支持下得到顯著提升。
接下來,如果數據處理流程已經確定,那么企業用戶還可以對任務執行中的輸入信息、輸出信息以及處理機制作出調整,從而實現業務邏輯的定制化設計。
需要注意的是,除了企業用戶能夠對數據處理應用程序進行定制化設計,互聯網服務供應商及其它廠商也能夠利用Tez框架實現自己的獨特價值主張。舉例來說,存儲服務供應商可以為其存儲服務實現定制化輸入與輸出實施方案。如果一家供應商擁有更為先進的硬件配置——例如RDMA或者InfiniBand連接機制——那么他們將能夠更輕松地將優化方案引入現有業務實施體系。
大數據擁有光明甚至堪稱爆炸性的迅猛發展前景,其中由Apache Hadoop負責實現的數據捕捉、存儲以及處理等任務必然衍生出規模龐大且各類各異的新型表現形式。由于其在成本削減、復雜程度控制以及大數據管理風險緩沖等方面的出色表現,Hadoop已經在現代數據架構當中牢牢占據著舉足輕重的地位——即成為企業級數據倉庫當中的一大主要組成部分。
Apache Tez的出現讓Hadoop在適用性方面得到了進一步提升,并能夠在滿足現有使用需求的同時開拓出更多新型目的驅動型應用程序類別。Tez框架為大數據架開啟了一道通往新世代高度的大門,大家能夠利用它在無需摒棄現有處理流程或者應用程序方案的前提下在Hadoop中打造出性能卓越的交互型應用程序。
原文鏈接:http://www.infoworld.com/article/2690634/hadoop/hadoop-batch-processing-mapreduce.html