AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 759637
Accepted
Matteo
Matteo
Asked: 2023-10-23 19:48:52 +0800 CST2023-10-23 19:48:52 +0800 CST 2023-10-23 19:48:52 +0800 CST

wget — baixa vários arquivos em vários nós em um cluster

  • 772

Olá, estou tentando baixar um grande número de arquivos de uma vez; 279 para ser mais preciso. Estes são BAM grandes (~ 90 GB) cada. O cluster onde estou trabalhando possui vários nós e felizmente posso alocar várias instâncias de uma vez.

Dada esta situação, gostaria de saber se posso usar wgetum arquivo em lote ( veja o exemplo abaixo) para atribuir cada download a um nó separado para realizar de forma independente.

arquivo_batch.txt

<https_link_1> -O DNK07.bam
<https_link_2> -O mixe0007.bam
<https_link_3> -O IHW9118.bam
.
.

Em princípio, isso não só irá acelerar as coisas, mas também evitar que a execução falhe, já que o tempo de espera para esta execução é de 24h, e não será suficiente baixar todos esses arquivos em uma única máquina consecutivamente.

Esta é a aparência do meu script BASH:

#!/bin/bash
#
#SBATCH --nodes=279 --ntasks=1 --cpus-per-task=1
#SBATCH --time=24:00:00
#SBATCH --mem=10gb
#
#SBATCH --job-name=download
#SBATCH --output=sgdp.out
##SBATCH --array=[1-279]%279
#
#SBATCH --partition=<partition_name>
#SBATCH --qos=<qos_type>
#
#SBATCH --account=<user_account>

#NAMES=$1
#d=$(sed -n "$SLURM_ARRAY_TASK_ID"p $NAMES)

wget -i sgdp-download-list.txt

Como você pode ver, eu estava pensando em usar um array job(não tenho certeza se funcionará); alternativamente, pensei em alocar 279 nós esperando que o SLURM fosse inteligente o suficiente para enviar cada download para um nó separado (não tenho certeza...). Se você conhece uma maneira de fazer isso de forma eficiente, qualquer sugestão é bem-vinda. Desde já, obrigado!

bash
  • 3 3 respostas
  • 73 Views

3 respostas

  • Voted
  1. Best Answer
    terdon
    2023-10-23T20:07:01+08:002023-10-23T20:07:01+08:00

    Expanda o comando em vários wgetcomandos para poder enviá-los ao SLURM como uma lista:

    while IFS= read -r url; do 
      printf 'wget "%s"\n' "$url"
    done < sgdp-download-list.txt > wget.sh
    

    Ou, se sgdp-download-list.txtfor apenas uma lista de wgetcomandos faltando no wgetinício (que é o que seu exemplo sugere), basta usar:

    sed 's/^/wget /' sgdp-download-list.txt > wget.sh
    

    Em seguida, envie o wget.shcomo o trabalho.

    • 0
  2. David G.
    2023-10-23T20:32:22+08:002023-10-23T20:32:22+08:00

    Desafio de quadro

    Você está falando de 25 Terabytes de download. Acho que você descobrirá que a busca de nós é a menor de suas preocupações. Se eles vierem do mesmo site remoto, o site remoto também poderá ter problemas de CPU. Mais importante ainda, a largura de banda da rede é um problema. Se você está tentando fazer esse download através de um pipe, não importa quantos nós você está puxando - o pipe será o limite.

    Dito isto, o wget não consome muita CPU. Executar 10 em paralelo em um nó não deve ser um problema em termos de CPU.

    Se esta for uma atividade regular, recomendo ver se você pode baixar deltas.

    Alternativa

    Há uma velha piada da Usenet. Alguém perguntou qual a melhor forma de enviar diariamente uma grande quantidade de dados de Los Angeles para São Francisco. A resposta: UPS . As velocidades da rede aumentaram, mas o seu volume também. A Amazon leva isso a sério: ela pode enviar a você uma caixa para carregar os dados e depois devolvê-los para colocá-los na nuvem.

    • 0
  3. Matteo
    2023-12-05T02:36:41+08:002023-12-05T02:36:41+08:00

    Olá @terdon e @David G.,

    Desculpe pelo atraso na resposta. No final, o suporte técnico do cluster me recomendou uma abordagem ad hoc usando nós de movimentação de dados com os quais eu poderia fazer download continuamente até que os links expirassem.

    Então, simplesmente tive que regenerá-los e iniciar o processo novamente. No geral, não foi o processo mais rápido (demorou cerca de uma semana), mas considerando a enorme quantidade de dados baixados, também não foi tão ruim!

    • 0

relate perguntas

  • exportar variáveis ​​​​env programaticamente, via stdout do comando [duplicado]

  • Problema estranho ao passar variáveis ​​do arquivo de texto

  • Enquanto a linha lê mantendo os espaços de escape?

  • ordem de substituição de processos `te` e `bash`

  • Execute um script muito lento até que seja bem-sucedido

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve