Cluster

Hashicorp 的 Nomad 作為 HTCondor 的替代品?

  • October 16, 2018

除了啟動 Nomad 集群並進行試驗之外,我找不到任何關於此的資訊,所以也許這裡有人可以提供幫助。

假設您要執行 100 次批處理 Java 作業迭代,每次迭代都有一組不同的參數並取回生成的輸出文件。

  1. Nomad 是否接受input_files您指向電腦上本地文件的位置並分發此類文件的概念?
# in HTCondor would be something like this
transfer_input_files = MyCalculator.jar,logback.xml
  1. Nomad 是否帶回了這種計算的結果,比如*.csv生成的文件?
# this would do it in HTCondor
should_transfer_files = YES
when_to_transfer_output = ON_EXIT
transfer_output_files = /output_dir
  1. nomad 是否允許像 condor 那樣使用參數,允許您發送帶有n參數的作業,然後將其作為多個作業分發到集群?
# this would do it in HTCondor
Arguments    = x=1
Queue 
(...)
Arguments    = x=100
Queue

容器被認為是無狀態的,這意味著您需要在流程中執行其他步驟才能使其正常工作。Condor 為您添加了此功能,但我從未發現它有用,並且在我使用它時它從未正常工作(上次是 2009 年)。為了解決這個問題,我將數據傳輸從 Condor 中分​​離出來。為此,您需要執行以下操作:

您的輸出數據文件需要儲存在某種持久性數據儲存中,而不是儲存在容器本身中。一些容器允許掛載主機的直接磁碟,甚至可以通過網路掛載遠端磁碟(NFS、Samba、SSHFS 等)。過去,我使用過分佈式文件系統(或網路可掛載),如 AWS-S3,來處理此要求。

當我在 2009 年與 Condor 合作完成我的碩士論文時,我通過為我在批處理作業中執行的 Java 應用程序建構 BASH 包裝腳本來處理這個要求。該腳本將處理髮送適當的輸入差異(從分佈式文件系統資源下載),當作業完成後,該腳本將開始將輸出文件的數據傳輸到相同的分佈式文件資源(具有作業名稱、作業編號、執行作業的主機名以及文件輸出名稱中的日期時間戳)。

HTCondor、Nomad 甚至 Kubernetes 都可以為您處理這個問題集。在啟動和關閉應用程序本身之前,您需要在作業執行器包裝腳本中添加某種邏輯來處理數據傳輸。

我希望這有幫助。

引用自:https://serverfault.com/questions/934400