分布式并行計算調度和管理系統Summoner

jopen 8年前發布 | 16K 次閱讀 并行計算 分布式系統

  1. 為什么要做“數據”并行計算調度?
  2. 他山之玉:azkaban2/oozie/mesos
  3. Summoner的特性
  4. </ol>

    Summoner 是國璽部門推出的基于 MySQL+Redis+Zookeeper 的分布式并行計算調度和管理系統,李紅紅主設。

    0x00,為什么要做“數據”并行計算調度?

    大家都可能做過 基于 MySQL 數據庫的,大規模的、有步驟的、步驟與步驟之間有依賴關系的數據計算 。你可能定義了一堆彼此依賴的定時任務,也可能寫成一個大進程跑。

    舉一個實際場景吧,在我們 O2O 業務體系下,我要做人員規模三四千人、有多條業務線、組織結構為大區-區域-城市-銷售組的銷售團隊的昨日傭金和當月傭金,這里的挑戰是:

    • 涉及到商戶、門店、交易、折扣、核銷物料等等,數據量很大,至少每天都要算一次,要算得快,
    • 激勵政策和傭金計算公式隨著競爭態勢變化,一般一兩個月變一次,
    • 數據抽取盡可能少影響正常業務,
    • 計算邏輯調整后要能快速部署和運行。

    那么,以前可能會定義一些定時任務,每天凌晨從各個業務數據庫(畢竟全都拆庫分表了)里抽取:

    1. 人員組織架構
    2. 大區、區域和城市的對照關系
    3. 合同以及合同擁有者
    4. 商戶和門店
    5. 門店下的收單交易
    6. 傭金計算公式、規則以及各種權重因子
    7. ……

    既有全量數據,也有增量數據,所以數據量是很大的。

    先算簽約數、開店數、交易量等,再把業績歸結在 BD 身上,根據不同業務線的傭金計算公式依次對 BD、BD主管、城市經理等展開各種計算。

    雖然我們的 JobCenter 是很優秀的定時任務調度和管理平臺, 但它沒有步驟(即定時任務之間的依賴關系)的概念 ,所以以前我們只好拍腦袋定 Job1 凌晨1點執行,Job2 凌晨2點執行,Job3和Job4放在3點執行,顯然這只是無奈之舉, 萬一 Job1 跑到凌晨3點才算完怎么辦?萬一 Job1 執行失敗了怎么辦?

    什么是步驟?我們可以用下圖來理解一個大計算任務下步驟之間的依賴關系:

    圖1

    為了應對這種數據量很大的抽取和一環套一環的計算,我們需要 另行發展一個界面友好的、有步驟概念的、有集群調度的數據計算系統 ,以充分利用機器資源。

    0x01,他山之玉:azkaban2/oozie/mesos

    計算資源的調度,好學生有不少,如針對 hadoop 集群調度和管理的 azkaban2 和 oozie,抽象能力更高的分布式資源管理框架 apache mesos。

    項目開始之初,我希望借鑒 oozie 和 azkaban2 的一些優秀設計思路,我們其實也是做調度和管理,只不過它們基于 hadoop,我們基于 mysql 而已。

來自: http://www.cnblogs.com/zhengyun_ustc/p/Summoner.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!