Cluster
Hashicorp 的 Nomad 作為 HTCondor 的替代品?
除了啟動 Nomad 集群並進行試驗之外,我找不到任何關於此的資訊,所以也許這裡有人可以提供幫助。
假設您要執行 100 次批處理 Java 作業迭代,每次迭代都有一組不同的參數並取回生成的輸出文件。
- Nomad 是否接受
input_files
您指向電腦上本地文件的位置並分發此類文件的概念?# in HTCondor would be something like this transfer_input_files = MyCalculator.jar,logback.xml
- Nomad 是否帶回了這種計算的結果,比如
*.csv
生成的文件?# this would do it in HTCondor should_transfer_files = YES when_to_transfer_output = ON_EXIT transfer_output_files = /output_dir
- 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 都可以為您處理這個問題集。在啟動和關閉應用程序本身之前,您需要在作業執行器包裝腳本中添加某種邏輯來處理數據傳輸。
我希望這有幫助。