spark中的RDD以及DAG

來源:互聯網
上載者:User

標籤:分享   理解   wordcount   tor   img   pen   ast   key   業務   

今天,我們就先聊一下spark中的DAG以及RDD的相關的內容

  1.DAG:有向非循環圖:有方向,無閉環,代表著資料的流向,這個DAG的邊界則是Action方法的執行

  

  2.如何將DAG切分stage,stage切分的依據:有寬依賴的時候要進行切分(shuffle的時候,

  也就是資料有網路的傳遞的時候),則一個wordCount有兩個stage,

  一個是reduceByKey之前的,一個事reduceByKey之後的(圖1),

  則我們可以這樣的理解,當我們要進行提交上遊的資料的時候,

  此時我們可以認為提交的stage,但是嚴格意義上來講,我們提交的是Task

  sets(Task的集合),這些Task可能商務邏輯相同,就是處理的資料不同

 

  3.流程

  構建RDD形成DAG遇到Action的時候,前面的stage先提交,提交完成之後再交給

  下遊的資料,在遇到TaskScheduler,這個時候當我們遇到Action的方法的時候,我們

  就會讓Master決定讓哪些Worker來執行這個調度,但是到了最後我們真正的傳遞的

  時候,我們用的是Driver給Worker傳遞資料(其實是傳遞到Excutor裡面,這個裡面執行

  真正的商務邏輯),Worker中的Excutor只要啟動,則此後就和Master沒有多大關係了

  4.寬窄依賴

  RDD和它依賴的父RDD(s)的關係有兩種不同的類型,即窄依賴(narrow dependency)以及

  寬依賴(wide dependency).

  

    窄分區的劃分依據,如果後面的一個RDD,前面的一個RDD有一個唯一對應的RDD,

    則此時就是窄依賴,就相當於一次函數,y對應於一個x,而寬依賴則是類似於,前面的

    一個RDD,則此時一個RDD對應多個RDD,就相當於二次函數,一個y對應多個x的值

    5.DAG的產生

    DAG(Directed Acyclic Graph)叫做有向非循環圖,原始的RDD通過一系列的轉換就形成

    DAG,根據RDD的之間的依賴關係的不同將DAG劃分為不同的stage,對於窄依賴,

    partition的轉換處理在stage中完成計算,對於寬依賴,由於有shuffle的存在,只能在

    partentRDD處理完成後,才能開始接下來的計算,因此寬依賴是劃分stage的依據

    一般我們認為join是寬依賴,但是對於已經分好區的join來說,我們此時可以認為這個

    時候的join是窄依賴

spark中的RDD以及DAG

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.