$30 off During Our Annual Pro Sale. View Details »

SRE CH25 - Data Processing Pipelines (2018/03/08)

SRE CH25 - Data Processing Pipelines (2018/03/08)

Avatar for Rick Hwang

Rick Hwang

March 08, 2018
Tweet

More Decks by Rick Hwang

Other Decks in Education

Transcript

  1. 1

  2. Written by Dan Dennison P311 - P322 (繁中版) Chapter 25

    Data Processing Pipelines 資料處理管線 2
  3. 3

  4. 管線設計模式的起源 (Origin of the PIpeline Design Pattern) • Input ->

    Program -> Output • coroutine (協程) • DTSS 通訊檔案 (Dartmouth Time Sharing System) • UNIX Pipeline • ETL: Extract-Transform-Load • Big Data 5
  5. 8

  6. 簡單管線設計模式與大數據 (Initial Effect of Big Data on the Simple Pipeline

    Pattern) • 簡單,單向管線:Simple, One-Phase Pipeline ◦ 大數據 ◦ 週期性、持續性的操作 • 多相管線 (multiphase pipeline) ◦ 便於理解系統的邏輯 ◦ 但是系統效率不一定最佳 • 深度 (depth) ◦ 一條 Pipeline 只有一個程式,深度為 1 ◦ 很深的 Pipeline 可能有數十個、數百個程式 9
  7. 11 週期性管線模式的挑戰 (Challenges with the Periodic Pipeline Pattern) • 條件:

    ◦ 有足夠的執行容量 ◦ 確保程式之間處理的能力一致 (CH22 處理連鎖故障) • 框架的實作:MapReduce、Flume • 週期性資料管線模式很脆弱 ◦ 相關問題: ▪ 任務執行預期 ▪ 資源耗盡 ▪ 分塊卡住,引響整個系統 ◦ 要調教以下之後才會穩定: ▪ 工作串流 ▪ 執行週期 ▪ 分快處理技術
  8. 13 工作分配不均造成的問題 (Trouble Caused By Unevent Work Distribution) • 大數據的關鍵思維:尷尬平行

    (embarrassingly parallel) 演算法 ◦ 把巨大的工作,切割成可裝載在機器的小區塊 ◦ 要注意區塊的資源分配 ◦ k8s, container • 卡住的工作分塊 (hanging chunk) ◦ 資源分配不足、過量 ◦ 資料流操作困難
  9. 14

  10. 17

  11. 22 分散式環境中 週期性資料管線的缺點 (Drawbacks of Periodic Pipelines in Distributed Environment)

    • 這些工作的特點 ◦ 低優先權 ◦ 高延遲 ◦ 降低成本 ◦ 最大化機器負載 • 造成的問題 ◦ 新的工作累積 (Queue?) 在調度器上 ◦ 為了加速執行,正在執行、快要結束的工作可能被終止 • 解決方案 ◦ 提供足夠的服務容量 ◦ 計算需要的資源與取得的依賴
  12. 23

  13. 監控 週期性管線問題 • 驚群效應 (Thundering Herd Problems) ◦ CH24 分散式任務排程系統

    (Cron) ◦ 每次執行,可能啟動數千個工作流程 ◦ 執行實體過載 ◦ 分散式叢集過載 ◦ 網路基礎設施過載 • 摩爾負載模式 (Moire Load Pattern) ◦ 兩個以上的管線任務執行 ◦ 共享資源消耗問題 24
  14. 驚群效應 (或稱雷鳴群體效應) • 當往一群鴿子中間扔一粒穀子,所有的各自都被驚動前來搶奪這粒食物,但是最 終註定只可能有一個鴿子滿意的搶到食物,沒有搶到的鴿子只好回去繼續睡覺, 等待下一粒穀子的到來。這裡鴿子表示程序(執行緒),那粒穀子就是等待處理的 事件。 • 問題: ◦

    Context Switch: CPU 花很多時間在 Thread 之間切換 ◦ 主程序建立了socket、bind、listen之後,fork()出來多個程序,每個子程序都開始迴圈處理(accept)這 個listen_fd。每個程序都阻塞在accept上,當一個新的連線到來時候,所有的程序都會被喚醒,但是其 中只有一個程序會接受成功,其餘皆失敗,重新休眠。 • 解決 ◦ nginx: epoll 25
  15. 27

  16. Google Workflow 簡介 • 一次性批次處理管線需求越來越多 • Google 2003 年開發的 ◦

    實現超大規模交易性資料流 ◦ 僅執行一次 (exactly-once) 28
  17. Workflow as Model-View-Controller Pattern 30 • Model (模型): 主作業處理程序 ◦

    將任務儲存在記憶體中 ◦ 將每次修改以日誌方式記錄在持久磁碟上 ◦ 只儲存特定工作的指標 • View (視圖): 工作流程 ◦ 視同整個管線子元件 ◦ 不停向 Model 更新他們所見的系統狀況 • Controller (控制器): 輔助活動 ◦ 即時伸縮管線 (runtime scaling of the pipeline) ◦ 執行狀態快照 (snapshotting) ◦ 管理工作週期 (workcycle state control) ◦ 回溯管線狀態 (rolling back pipeline state) ◦ 緊急時刻停止系統一切行為 (performing global interdiction for business continuity)
  18. 31

  19. 36

  20. 39 Questions? • 大家的系統有類似 Pipeline 的 Task? • 這些 Task

    的每個程序可以單獨執行? • Pipeline Input / Output 資料放哪?