簡體   English   中英

用於編排的 AWS Step Functions 與 Luigi

[英]AWS Step Functions vs Luigi for orchestration

我的團隊為小規模項目提供單一服務,但為了重新架構和擴展,我們計划遷移到 Amazon AWS 的雲服務並評估編排是將 Luigi 作為容器任務運行還是使用 AWS Step Functions? 我對他們中的任何一個都沒有任何經驗,尤其是路易吉。 誰能指出他們在 Luigi 上看到的任何問題,或者如果有的話,它如何證明比 AWS 更好? 任何其他相同的建議。

提前致謝。

我不知道 AWS 如何進行編排,但如果您計划在任何時候擴展到至少數千個工作崗位,我不建議投資 Luigi。 Luigi 對於中小型(ish)項目非常有用。 它提供了一個出色的界面,用於定義作業並通過原子文件系統操作確保作業完成。 然而,Luigi 的問題在於運行作業的框架。 Luigi 需要與工作人員持續通信才能運行,以我自己的經驗,當我嘗試擴展時,這會破壞網絡帶寬。

對於我的研究,我將使用我所在大學運行 SLURM 的集群計算網格,在輕到中型工作流程上生成一個包含 10,000 個任務的網絡。 我所有的任務都不需要那么長的時間來完成,每個最多可能需要 5 分鍾。 我嘗試了以下三種方法來有效地使用 Luigi。

  1. SciLuigi 的 slurm 任務從中央 luigi 工作人員(不使用中央調度程序)向 SLURM 提交作業。 如果您的工作將被快速接受並運行,則此方法效果很好。 但是,它在調度節點上使用了不合理數量的資源,因為每個工作人員都是一個新進程。 此外,它會破壞您在系統中擁有的任何優先級。 更好的方法是首先分配許多工人,然后讓他們繼續工作。

  2. 我嘗試的第二種方法就是這樣。 我在我的家庭服務器上啟動了 Luigi 中央調度程序(因為否則我無法監控 state 的工作,就像在上面的工作流程中一樣)並在 SLURM 集群上啟動了所有具有相同配置的工作人員,因此他們每個人都可以運行實驗的任何部分。 問題是,即使有 500Mbps 的互聯網,超過 50 名員工 Luigi 也會停止運行,我與服務器的互聯網連接也會停止。 因此,我開始運行只有 50 名工人的工作,這大大減慢了我的工作流程。 此外,每個工人都必須向中央調度程序注冊每項工作(另一個巨大的痛點),這可能需要數小時,而只有 50 名工人。

  3. 為了減少啟動時間,我決定按參數對根任務子樹進行分區,並將每個子樹提交給 SLURM。 所以現在啟動時間相當短,但我失去了任何工人運行任何工作的能力,這仍然非常重要。 此外,我仍然只能與約 50 名工人一起工作。 完成子樹后,我運行了最后一項作業來完成實驗。

總之,Luigi 非常適合中小型工作流程,但是一旦您開始處理 1,000 多個任務和工作人員,該框架很快就會跟不上。 我希望我的經驗能夠對框架提供一些見解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM