it-swarm.com.ru

Лучший способ загрузить BLOB-объекты большого размера в ГБ в Azure в кратчайшие сроки

Может, кто-нибудь посоветует лучший способ выгрузить/загрузить видеоблок размером несколько ГБ в кратчайшие сроки в хранилище Azure?

13
Shraddha Bandekar

Я технический евангелист Microsoft и разработал образец и бесплатный инструмент (без поддержки/без гарантии), который поможет в этих сценариях.

Двоичные файлы и исходный код доступны здесь: https://blobtransferutility.codeplex.com/

Blob Transfer Utility - это инструмент с графическим интерфейсом для загрузки и выгрузки тысяч маленьких/больших файлов в/из хранилища BLOB-объектов Windows Azure.

Характеристики:

  • Создание пакетов для загрузки/выгрузки
  • Установите тип контента
  • Передача файлов параллельно
  • Разделите большие файлы на более мелкие части, которые передаются параллельно

Четвертая особенность - это ответ на вашу проблему.

Из примера кода вы можете узнать, как я это сделал, или вы можете просто запустить инструмент и делать то, что вам нужно.

5
Vitor Ciaramella

Лучший способ выгрузить/загрузить большие двоичные объекты из хранилища Windows Azure - это разделить загрузку/выгрузку и правильно использовать многопоточность. Есть несколько вещей, которые вы должны рассмотреть:

  1. Размер куска должен зависеть от вашего интернет-соединения . Например, если у вас очень медленное интернет-соединение, загрузка больших отдельных кусков почти всегда приведет к истечению времени ожидания запроса.
  2. Количество одновременных потоков для загрузки/загрузки должно зависеть от количества ядер процессора на машине, с которой выполняется код вашего приложения . По моему опыту, если вы запускаете свое приложение на 8-ядерном компьютере для лучшей производительности, вы можете создать 8 множественных потоков, где каждый поток загружает/загружает часть данных. Может возникнуть искушение запустить сотни потоков и оставить управление потоками для ОС, но я заметил, что в таких случаях большая часть запросов выполняется по тайм-ауту.
  3. Операция загрузки/выгрузки должна быть асинхронной . Вы не хотите, чтобы ваше приложение блокировало/захватывало ресурсы на вашем компьютере.

Для загрузки большого файла вы можете определить размер чанка (скажем, 1 МБ) и одновременных потоков (скажем, 8), а затем прочитать 8 МБ из файла в массиве с 8 элементами и начать загрузку этих 8 элементов. параллельно с использованием функциональности блока загрузки. Как только 8 элементов загружены, вы повторяете логику для чтения следующих 8 МБ и продолжаете этот процесс до тех пор, пока не будут загружены все байты. После этого вы вызываете функцию фиксации списка блокировки, чтобы зафиксировать большой двоичный объект в хранилище больших двоичных объектов.

Аналогично, для загрузки большого файла вы снова можете определить размер чанка и параллельные потоки, а затем начать чтение частей большого двоичного объекта, указав заголовок «range» в функции Get Blob. После загрузки этих чанков вам нужно будет переставить их в соответствии с их фактическим положением (может случиться так, что вы загрузите чанк 3–4 Мбайт до чанка 0–1 Мб) и начать запись этих чанков в файл. Вам нужно будет повторять процесс до тех пор, пока не будут загружены все байты.

7
Gaurav Mantri

Вы можете использовать утилиту командной строки Microsoft AzCopy , если вы работаете в операционной системе Windows. Для Linux/Mac вы можете использовать Azure CLI .

AzCopy - утилита командной строки Windows, предназначенная для копирования данных в хранилище BLOB-объектов, файлов и таблиц Microsoft Azure и из них с помощью простых команд с оптимальной производительностью.

Загрузить блоб:

AzCopy /Source:https://myaccount.blob.core.windows.net/mycontainer /Dest:C:\myfolder /SourceKey:my_key_here /Pattern:"abc.txt"

Загрузить один файл:

AzCopy /Source:C:\myfolder /Dest:https://myaccount.blob.core.windows.net/mycontainer /DestKey:my_key_here /Pattern:"abc.txt"

Больше примеров и информации о AzCopyздесь .

2
Voicu

Вы можете использовать Windows Azure PowerShell для загрузки/выгрузки огромных файлов из Azure. 

Set-AzureStorageBlobContent предназначен для загрузки.

Set-AzureStorageBlobContent -Container containerName -File .\filename -Blob blobname

http://msdn.Microsoft.com/en-us/library/dn408487.aspx

Get-AzureStorageBlobContent предназначен для загрузки.

Get-AzureStorageBlobContent -Container containername -Blob blob -Destination C:\test\

http://msdn.Microsoft.com/en-us/library/dn408562.aspx

1
Yao

Вы можете использовать Cloud Combine для надежной и быстрой загрузки файлов в хранилище BLOB-объектов Azure. Он поддерживает многопоточную обработку, поэтому файл загружается с максимальной скоростью.

1
ezolotko

Вы можете использовать Службу импорта/экспорта Azure, где вы можете отправить диск со своими данными в Azure DataCenter. 

Проверьте эту ссылку: https://Azure.Microsoft.com/en-us/documentation/articles/storage-import-export-service/

0
user3533790

Я относительно новичок во всех усилиях по переносу данных и пытаюсь максимально использовать преимущества «холодного» хранения по сравнению с «выполнением» хранения с использованием набора бизнес-правил и различных сценариев тестирования BETA.

У меня нет связи с продуктом, но я обнаружил, что за эти деньги продукт GoodSync дает наилучший результат. Позволяет планировать, триггеры изменения файла, тонны параметров фильтрации, поэтому все параметры хранения SMB и/или облака могут быть проанализированы и синхронизированы. Это также позволяет многопоточность. Ни один из них не является «супер быстрым», но GoodSync по крайней мере делает его вполне управляемым для запуска множества заданий с использованием отдельных вкладок.

Проверьте это ...

0
aezerins