Nomad Hashicorp como uma alternativa HTCondor?

4

Eu não consegui encontrar nenhuma informação sobre isso antes de criar um cluster Nomad e experimentar, então talvez alguém aqui possa ajudar.

Dizer que você deseja executar 100 iterações de um trabalho em java em lote, cada uma com um conjunto diferente de parâmetros e recuperar os arquivos de saída resultantes.

1) Nomad aceita o conceito de input_files onde você aponta para um arquivo local no seu computador e ele distribuirá tal arquivo?

# in HTCondor would be something like this
transfer_input_files = MyCalculator.jar,logback.xml

2) Nomad traz de volta os resultados desse cálculo, digamos *.csv arquivos que foram produzidos?

# this would do it in HTCondor
should_transfer_files = YES
when_to_transfer_output = ON_EXIT
transfer_output_files = /output_dir

3) o nomad permite o uso de parâmetros da mesma forma que o condor, permitindo que você envie um trabalho com n params que será então distribuído como vários trabalhos para o cluster?

# this would do it in HTCondor
Arguments    = x=1
Queue 
(...)
Arguments    = x=100
Queue
    
por Frankie 07.10.2018 / 22:32

1 resposta

2

Os contêineres são considerados sem estado, o que significa que você precisará de etapas adicionais no processo para que isso funcione. A Condor adiciona essa funcionalidade para você, mas nunca achei útil e nunca funcionou corretamente quando a usei (da última vez em 2009). Para contornar isso, separei a transferência de dados da Condor. Para fazer isso, você precisará fazer o seguinte:

Seus arquivos de dados de saída precisam ser armazenados em um armazenamento de dados persistente de algum tipo e não no próprio container. Alguns containers permitem a montagem do disco direto do host ou até a montagem de um disco remoto pela rede (NFS, Samba, SSHFS, etc). No passado, usei um sistema de arquivos distribuído (ou montável em rede), como o AWS-S3, para lidar com esse requisito.

Quando trabalhei com a Condor em 2009 para minha tese de mestrado, lidei com esse requisito criando scripts de wrapper BASH para os aplicativos Java que eu estava executando em tarefas em lote. O script lidaria com o envio de variações de entrada apropriadas (download do recurso do sistema de arquivos distribuídos) e, quando o trabalho fosse concluído, o script lançaria as transferências de dados dos arquivos de saída para o mesmo recurso de arquivo distribuído (com o nome do trabalho, número do trabalho , nome do host que executou o trabalho e o carimbo de data e hora no nome da saída do arquivo).

HTCondor, Nomad ou até mesmo o Kubernetes podem lidar com esse problema para você. Você precisará adicionar algum tipo de lógica nos scripts do wrapper do job runner para manipular a transferência de dados antes de iniciar e encerrar o próprio aplicativo.

Espero que isso ajude.

    
por 16.10.2018 / 02:11