[發明專利]一種流水化數據洗牌傳輸的Spark任務調度與執行方法有效
| 申請號: | 201610029211.7 | 申請日: | 2016-01-18 |
| 公開(公告)號: | CN105718244B | 公開(公告)日: | 2018-01-12 |
| 發明(設計)人: | 付周望;張未雨;戚正偉;管海兵 | 申請(專利權)人: | 上海交通大學 |
| 主分類號: | G06F9/38 | 分類號: | G06F9/38 |
| 代理公司: | 上海恒慧知識產權代理事務所(特殊普通合伙)31317 | 代理人: | 張寧展 |
| 地址: | 200240 *** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 流水 數據 洗牌 傳輸 spark 任務 調度 執行 方法 | ||
技術領域
本發明涉及計算機分布式計算框架領域。具體來講,主要是在分布式計算框架Spark的基礎上改變他的任務調度機制,從而提升該計算框架的性能。
背景技術
Spark作為目前應用最廣泛的分布式計算框架,已經被部署在了無數的數據中心中。它提出的分布式回彈數據集(Resilient Distributed Dataset,RDD)使得大數據的計算過程最大可能的在內存中進行。在執行邏輯上,Spark按照用戶程序的邏輯從前向后生成RDD,每個RDD都會有自己的依賴。當用戶的程序需要最終的輸出結果時,Spark就會從最后一個RDD遞歸向前尋找,并且按照其中存在的洗牌傳輸依賴(Shuffle Dependency)來劃分階段(Stage)。在劃分完階段之后,Spark就會從前向后提交階段,先提交沒有缺失依賴的階段,依次向后。這種調度邏輯使得數據自動流向需要計算的位置,并且讓計算中間結果最大可能的保存在內存中。
但是為了保證階段(Stage)之間的分割和本身框架的容錯性,在劃分每個階段的洗牌傳輸依賴(Shuffle Dependency)時,Spark會將前驅階段產生的中間結果存儲到磁盤中,然后開始分配下一個階段的任務,之后再由階段的任務去遠程讀取磁盤上的數據,然后進行計算。
在目前磁盤速度遠遠慢于內存的現實中,這部分的數據讀寫成為了限制Spark性能提升的最大瓶頸。然而礙于階段的劃分的完整性以及容錯性,目前仍然沒有對于優化這部分瓶頸的補丁或者解決方案出現。
發明內容
本發明針對在Spark數據洗牌傳輸時讀寫硬盤的瓶頸,提出了一種流水化數據洗牌傳輸(Shuffle)的Spark任務調度方法,通過改變Spark任務的提交順序,使得一個任務先于他的前驅任務開始被調度分發,同時采用前驅任務發送執行結果到后繼任務的內存中的方法,在不改變用戶接口,不破壞階段的完整性和容錯性的同時,解決了原本Spark在不同階段(Stage)中洗牌數據傳輸(Shuffle)的磁盤讀寫開銷。使得前驅任務在執行完的產生中間結果的同時通過網絡將數據發送給后繼任務,從而避免了磁盤IO的讀寫,提升Spark分布式計算框架的性能。
本發明的技術解決方案如下:
一種流水化數據洗牌傳輸的Spark任務調度與執行方法,包括如下步驟:
步驟1:當Spark提交一個任務且該任務被劃分成多個階段進行提交時,首先找到用戶執行任務生成結果的最后一個階段;
步驟2:從最后一個階段開始,判斷該階段是否包含未完成的前驅階段:
如果這個階段的前驅階段全部執行完成,則提交該階段進行執行;
如果有前驅階段沒有被執行,則將該階段標記為等待,同時提交該階段進行執行,并且遞歸提交該階段的前驅階段;
步驟3:在提交一個階段進行執行之后,調度器將該階段拆分成多個任務,并判斷該階段:是否為等待階段:
如果該階段被標記為等待,則調度器向資源管理器請求與任務個數相同的空閑執行節點,調度器獲取相應執行任務的執行節點之后,根據該階段包含的分布式回彈數據集的依賴關系遞歸向前尋找洗牌傳輸依賴,調度器每找到一個洗牌傳輸依賴就會向的映射輸出追蹤表注冊該次洗牌傳輸流水信息,在注冊完成之后,調度器還會通知每一個即將要運行這個任務的執行節點準備好相應的內存來緩存他們前驅任務發送的中間結果;每個執行節點收到調度器的注冊信息之后,會在本地緩存中新建一個以洗牌傳輸依賴ID為索引,值為規約數據塊總數個的緩存數組的鍵值對,同時還會在本地新建一個以洗牌傳輸依賴ID為索引,值為規約數據塊總數的信號量數據結構的鍵值對,其中每個信號量包含這次洗牌依賴的洗牌任務映射總數,;
否則,直接進入下一步;
步驟4:在調度器封裝階段的任務集合時,判斷該階段是否是一個洗牌映射階段:
如果該階段是一個洗牌映射階段,則對該階段中的每個任務都設置對應的洗牌傳輸依賴ID;
否則,直接進入下一步;
步驟5:調度器將封裝好的任務分發給各個執行節點;
步驟6:當任務被分配到每個執行節點的執行器上進行執行時,執行器會判斷這個任務是否為洗牌映射任務:
如果是,則根據該任務包含的洗牌傳輸依賴ID,向映射輸出追蹤表請求該ID對應的規約任務的執行節點的集合信息,然后,設置洗牌映射任務的對應規約信息,將收到的結合信息中的規約數據塊號和遠程地址封裝成一個哈希表傳給該洗牌映射任務,并進入步驟7;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于上海交通大學,未經上海交通大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201610029211.7/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:礦井采掘吊掛皮帶組合調偏裝置
- 下一篇:剛性散體柔度可調拋光磨頭
- 數據顯示系統、數據中繼設備、數據中繼方法、數據系統、接收設備和數據讀取方法
- 數據記錄方法、數據記錄裝置、數據記錄媒體、數據重播方法和數據重播裝置
- 數據發送方法、數據發送系統、數據發送裝置以及數據結構
- 數據顯示系統、數據中繼設備、數據中繼方法及數據系統
- 數據嵌入裝置、數據嵌入方法、數據提取裝置及數據提取方法
- 數據管理裝置、數據編輯裝置、數據閱覽裝置、數據管理方法、數據編輯方法以及數據閱覽方法
- 數據發送和數據接收設備、數據發送和數據接收方法
- 數據發送裝置、數據接收裝置、數據收發系統、數據發送方法、數據接收方法和數據收發方法
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置





