天天看點

【大資料】-- Spark 建立 tmp 目錄的原因

一、背景

       資料流向:Spark 讀取 ODPS 資料,然後寫入阿裡雲 OSS。

       現象:在使用阿裡雲 dataworks 排程 Spark 任務時,發現Spark task 全部結束5分鐘以後,整體的 job 沒有顯示 SUCCESSED。于是去檢視程式對應的 OSS 輸出目錄,發現 _temporary 目錄下的檔案正在複制到目标目錄,而不是 move 操作,導緻花費時間過多。

二、問題

三、分析

  1. 兩階段過程是在使用檔案系統時確定最終結果的一緻性的最簡單方法之一。
  2. 您必須記住,每個執行器線程都寫出其結果集獨立于其他線程,并且可以在不同的時刻執行寫入,甚至可以重用相同的資源集。在 Spark 寫資料的那一刻,他無法确定所有寫入是否會成功。
  • 如果失敗,可以通過删除臨時目錄來復原更改。
  • 如果成功,可以通過移動臨時目錄來送出更改。
  1. 該模型的另一個好處是在進行中的寫入和最終輸出之間的差別。是以,它可以輕松地與簡單的工作流管理工具內建,而無需具有單獨的狀态管理或其他同步機制。
  2. 此模型簡單,可靠,适用于設計的檔案系統。遺憾的是,它與對象存儲沒有良好的對象存儲,這不支援移動,隻能複制。

繼續閱讀