[轉] DAG演算法在hadoop中的應用

來源:互聯網
上載者:User

標籤:

http://jiezhu2007.iteye.com/blog/2041422

大學裡面資料結構裡面有專門的一章圖論,可惜當年沒有認真學習,現在不得不再次撿 起來。真是少壯不努力,老大徒傷悲呀!什麼是DAG(Directed Acyclical Graphs),先來看下教科書上的定義吧:如果一個有向圖無法從某個頂點出發經過若干條邊回到該點。讓我們再來看看DAG演算法現在都應用在哪些 hadoop引擎中。

Tez:

Hortonworks開發的DAG計算架構,是從MapReduce計算架構演 化而來的通用DAG計算架構,核心思想是將Map和Reduce兩個操作進一步拆分,即Map被拆分成Input、Processor、Sort、 Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等,這樣,這些分解後的元操作可以任意靈活組 合,產生新的操作,這些操作經過一些控製程序組裝後,可形成一個大的DAG作業,可以用來替換Hive/Pig等。



 

 

Oozie:

Oozie工作流程是放置在控制依賴DAG(有向非循環圖 Direct Acyclic Graph)中的一組動作(例如,Hadoop的Map/Reduce作業、Pig作業等),其中指定了動作執行的順序。我們會使用hPDL(一種XML流程定義語言)來描述這個圖。

hPDL是一種很簡潔的語言,只會使用少數流程式控制制和動作節點。控制節點會定義執行的流程,並包含工作流程的起點和終點(start、end和fail節點)以及控制工作流程執行路徑的機制(decision、fork和join節點)。動作節點是一些機制,通過它們工作流程會觸發執行計算或者處理任務。Oozie為以下類型的動作提供支援: Hadoop map-reduce、Hadoop檔案系統、Pig、Java和Oozie的子工作流程。

 

Spark:

Resilient Distributed Dataset (RDD)彈性分布資料集 是Spark的最基本抽象,是對分布式記憶體的抽象使用,實現了以操作本地集合的方式來操作分布式資料集的抽象實現。RDD是Spark最核心的東西,它表示已被分區,不可變的並能夠被並行操作的資料集合,不同的資料集格式對應不同的RDD實現。RDD必須是可序列化的。RDD可以cache到記憶體中,每次對RDD資料集的操作之後的結果,都可以存放到記憶體中,下一個操作可以直接從記憶體中輸入,省去了MapReduce大量的磁碟IO操作。

中繼資料的結構是DAG(有向非循環圖),其中每一個“頂點”是RDD(包括生產該RDD的運算元),從父RDD到子RDD有“邊”,表示RDD間的依賴性。Spark給中繼資料DAG取了個很酷的名字,Lineage(世系)。

Spark程式的運行情境。它由用戶端啟動,分兩個階段:第一階段記錄變換運算元序列、增量構建DAG圖;第二階段由行動運算元觸 發,DAGScheduler把DAG圖轉化為作業及其任務集。Spark支援本地單節點運行(開發調試有用)或叢集運行。


[轉] DAG演算法在hadoop中的應用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.