wget — 클러스터의 여러 노드에서 여러 파일을 다운로드합니다.

wget — 클러스터의 여러 노드에서 여러 파일을 다운로드합니다.

안녕하세요. 정확히는 279개의 많은 파일을 한 번에 다운로드하려고 합니다. 각각은 BAM 크기입니다(~90GB). 제가 작업 중인 클러스터에는 여러 노드가 있으며 운 좋게도 한 번에 여러 인스턴스를 할당할 수 있습니다.

이런 상황에서 wget배치 파일(바라보다아래 예) 독립적인 실행을 위해 각 다운로드를 별도의 노드에 할당합니다.

배치파일.txt

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

원칙적으로 이렇게 하면 속도가 빨라질 뿐만 아니라 실행 실패도 방지할 수 있습니다. 왜냐하면 이 실행의 정지 시간은 24시간이고 모든 파일을 한 컴퓨터에 지속적으로 다운로드할 만큼 길지 않기 때문입니다.

내 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

보시다시피, 저는 array job(작동하는지 확실하지 않음) 사용을 고려하고 있습니다. 또는 279개의 노드를 할당하는 것을 고려하고 있으며 SLURM이 각 다운로드를 별도의 노드로 보낼 만큼 똑똑하기를 바랍니다(확실하지는 않습니다... .. .). 효과적인 방법을 알고 계시다면 어떤 제안이라도 환영합니다. 미리 감사드립니다!

답변1

wgetSLURM에 목록으로 보낼 수 있도록 명령을 여러 명령으로 확장합니다 .

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

또는 처음에 명령이 누락된 목록이 있는 경우(귀하의 예에서 제안한 바와 같음) 다음을 사용하십시오 sgdp-download-list.txt.wgetwget

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

그런 다음 wget.sh과제로 제출하세요.

답변2

프레임워크 챌린지

25TB 다운로드에 대해 이야기하고 있습니다. 노드를 얻는 것이 걱정거리 중 가장 적다는 것을 알게 될 것입니다. 동일한 원격 사이트에 있는 경우 원격 사이트에도 CPU 문제가 있을 수 있습니다. 게다가 네트워크 대역폭도 문제입니다. 파이프라인을 통해 이 다운로드를 가져오려고 하면 가져오는 노드 수는 실제로 중요하지 않습니다. 파이프라인이 한계가 됩니다.

하지만 wget은 특별히 CPU를 많이 사용하지 않습니다. CPU에 관한 한, 하나의 노드에서 10개의 프로그램을 병렬로 실행하는 것은 문제가 되지 않습니다.

이것이 정기적인 활동이라면 델타를 다운로드할 수 있는지 확인하는 것이 좋습니다.

선택하다

유즈넷에 관한 오래된 농담이 있습니다. 누군가 로스앤젤레스에서 샌프란시스코로 매일 대량의 데이터를 보내는 가장 좋은 방법이 무엇인지 물었습니다. 답변:. 네트워크 속도는 증가했지만 볼륨도 증가했습니다. Amazon은 이 점을 명심합니다. 데이터를 로드할 상자를 배송한 다음 다시 배송하여 클라우드에 넣을 수 있습니다.

답변3

@terdon님, @David G님, 안녕하세요.

답변이 너무 늦어서 죄송합니다. 마지막으로 클러스터에 대한 기술 지원에서는 데이터 이동 노드를 사용하여 링크가 만료될 때까지 계속 다운로드할 수 있는 임시 방법을 추천했습니다.

그런 다음 다시 생성하고 프로세스를 다시 시작합니다. 전체적으로 가장 빠른 처리는 아니었지만(1주일 정도 소요), 다운로드되는 데이터의 양이 많아서 나쁘지는 않았습니다!

관련 정보