2013-05-03 3 views
6

Если у меня есть каталог с ~ 5000 небольшими файлами на S3, есть ли способ легко застегнуть весь каталог и оставить полученный zip-файл на S3? Мне нужно сделать это без необходимости вручную вручную обращаться к каждому файлу.Zip весь каталог на S3

Спасибо!

+0

http://www.w2lessons.com/2012/01/fast-zipping-in-amazon-s3.html –

+0

Я видел это, но он по-прежнему требует загрузки каждого файл отдельно на ec2, который в настоящее время является нашим узким местом – Jin

ответ

4

Нет, нет волшебной пули.

(В стороне, вы должны понимать, что в S3 нет такой вещи, как «каталог». Существуют только объекты с путями. Вы можете получить каталогизированные списки, но символ «/» isn ' t magic - вы можете получить префиксы любым персонажем, который вы хотите.)

Как заметил кто-то, «предварительная застежка» может помочь как скорости загрузки, так и скорости добавления. (За счет дублирования хранилища.)

Если загрузка является узким местом, похоже, что вы загружаете серийно. S3 может поддерживать 1000 одновременных подключений к одному и тому же объекту, не нарушая пота. Вам нужно будет запустить тесты, чтобы узнать, сколько соединений лучше, поскольку слишком много соединений из одной коробки могут быть дросселированы S3. И вам может понадобиться сделать TCP tuning при выполнении 1000 соединений в секунду.

«Решение» сильно зависит от ваших шаблонов доступа к данным. Попробуйте переустановить проблему. Если ваши загрузки в одном файле нечасты, возможно, имеет смысл группировать их по 100 за раз в S3, а затем разбить их по мере необходимости. Если они небольшие файлы, может иметь смысл кэшировать их в файловой системе.

Или может иметь смысл хранить все 5000 файлов в виде одного большого zip-файла в S3 и использовать «интеллектуальный клиент», который может загружать определенные диапазоны zip-файла, чтобы обслуживать отдельные файлы. (S3 поддерживает диапазоны байтов, как я помню.)

+0

Я вижу .. Вот что я подумал. Наше узкое место на самом деле EMR обращается к S3 снова и снова для этих файлов. Мы попытались использовать 's3distcp', чтобы скопировать все, но он все еще безумно медленный. Я переосмыслил платформу и, возможно, объединил все файлы вместе, а затем отправлю их на S3 (возможно, улучшит производительность EMR). Спасибо за понимание! – Jin

+0

Это такая общая вещь. Жаль, что никто не публиковал свое решение публично, и все должны изобретать колесо. –

Смежные вопросы