2017-02-17 51 views
1

Я переношу около 31 Тбайта данных, состоящего из 4500 файлов, размер файлов варьируется от 69 МБ до 25 ГБ, от удаленного сервера до ведра s3. Я использую s4cmd put сделать это и поместить его в Баш скрипт upload.sh:Передача большого количества больших файлов на s3

#!/bin/bash 

FILES="/path/to/*.fastq.gz" 
for i in $FILES 
do 
    echo "$i" 
    s4cmd put --sync-check -c 10 $i s3://bucket-name/directory/ 
done 

Затем я использую qsub представить работу:

qsub -cwd -e error.txt -o output.txt -l h_vmem=10G -l mem_free=8G -l m_mem_free=8G -pe smp 10 upload.sh 

Это берет слишком долго - потребовалось 10 часов для загрузки ~ 20 файлов. Может ли кто-нибудь предложить альтернативы или модификации моей команды?

Спасибо!

+0

Использовать ** GNU Parallel ** и сделать некоторые параллельно, возможно? 'parallel --eta -j 8 s4cmd put --sync-check -c 10 {} s3: // bucket-name/directory/:::/path/to/* fastq.gz' –

+1

Перенос с какого места? Если еще одна услуга AWS, может быть, это слишком медленно, но если вы отправляете из своего корпоративного центра обработки данных в AWS, я бы ожидал раз в этом диапазоне (так как у вас есть однопоточный). Даже с GParallel вы можете легко столкнуться с ограничениями пропускной способности между вашей исходной системой и AWS. (Мои мысли могут быть устаревшими, поэтому мне интересно видеть ответы от текущих пользователей (всегда!)). Удачи! – shellter

+1

Как быстро ваше интернет-соединение? Для этого количества данных вы можете быстрее использовать [Snowball] (https://aws.amazon.com/snowball/), хотя на них накладные расходы на доставку. – stdunbar

ответ

2

Ваш случай может принадлежать ситуации, когда копирование данных на физические носители и отправка их обычной почтой происходит быстрее и дешевле, чем передача данных через Интернет. AWS поддерживает такой «протокол» и имеет специальное название для него - AWS Snowball.

Snowball является петабайт масштаб транспортировки данных решения, которое использует безопасные приборов для передачи больших объемов данных в и из AWS облака. Использование проблем с Snowball сопряжено с большими проблемами с крупномасштабными передачами данных, включая высокие сетевые затраты, длительное время передачи и соображения безопасности. Передача данных с помощью Snowball проста, быстро, безопасна и может быть всего лишь на одну пятую стоимость высокоскоростного Интернет.

С Snowball вам не нужно писать код или приобретать оборудование для передачи ваших данных. Просто создайте работу в консоли управления AWS , а устройство Snowball будет автоматически отправлено *. Как только он появится, подключите устройство к локальной сети , загрузите и запустите клиент Snowball, чтобы установить соединение , а затем используйте клиент для выбора файловых каталогов , которые вы хотите перенести на устройство. Затем клиент будет зашифровать и перенести файлы на устройство с высокой скоростью. После передача завершена, и устройство готово к возврату, E-mail для доставки будет автоматически обновляться, и вы можете отслеживать статус задания с помощью простой службы уведомлений Amazon (SNS), текстовых сообщений или непосредственно в консоли ,

* Снежок в настоящее время доступен в некоторых регионах. Ваше местоположение будет проверено после создания задания в консоли управления AWS .

Емкость их меньшего устройства составляет 50 ТБ, подходит для вашего случая.

Существует также аналогичная услуга AWS Import/Export disk, где вы поставляете свои собственные аппаратные (жесткие диски), а не их специальным устройством:

Чтобы использовать AWS Импорт/Экспорт диска:

  • Prepare портативное запоминающее устройство (см. страницу Product Details для поддерживаемых устройств).
  • Отправить заявку на создание задания.Вы получите идентификатор задания с цифровой подписью, используемой для аутентификации вашего устройства.
  • Распечатайте свою предоплаченную этикетку.
  • Надежное определение и аутентификация вашего устройства. Для Amazon S3 поместите файл подписи в корневую директорию вашего устройства. Для Amazon EBS или Amazon Glacier наклейте штрих-код подписи на внешний вид устройства .
  • Прикрепите свою предоплаченную этикетку к транспортировочному контейнеру и отправьте свое устройство вместе с его разъемами интерфейса и электропитанием AWS.

Когда ваш пакет, он будет обработан и надежно переведен в центр обработки данных AWS, где устройство будет прикреплено к/экспорт станции AWS импорта. По завершении загрузки данных устройство будет возвращено вам.

+0

Привет, Леон. Спасибо за ответ. Один вопрос, хотя касается ценообразования - я могу понять, что это решение может помочь ускорить передачу, но вы можете объяснить, как это будет дешевле, чем регулярная передача через Интернет? –

+0

Поскольку входящие данные в AWS S3 бесплатны, преимущество в цене будет присутствовать только в том случае, если вы платите за подключение к Интернету за трафик, а не за пропускную способность. В противном случае (если вам нужно было перевести ** с ** S3, а не на ** на ** S3), это решение, безусловно, будет дешевле, поскольку каждый исходящий туберкулез стоит ~ 85 долларов США, что составляет почти 2,5 доллара США за вашу сумму данных. – Leon

+0

Я правильно понимаю, что вы можете хранить любой объем данных на S3 бесплатно? –