Azure DML Data slices?

时间:2017-06-15 09:46:19

标签: azure azure-blob-storage

I have 40 mil blobs of 10 TB in blob storage. I am using DML CopyDirectory to copy these into another storage account for backup purpose. It took nearly 2 weeks to complete. Now i am worried that until which date the blobs are copied to target directory. Is it the date when the job started or the date job finished ?

Does DML uses anything like data slices ?

1 个答案:

答案 0 :(得分:1)

  

现在我担心将blob复制到目标目录的日期。是作业开始的日期还是日期工作完成的日期?

据我所知,当你启动CopyDirectory方法时,它只会发送请求告诉azure存储帐户从另一个存储帐户复制文件。所有复制操作都是天蓝色存储。

如果我们运行方法开始复制目录,azure存储将首先创建0大小的文件,如下所示:

enter image description here

作业完成后,您会发现它的大小已经改变如下:

enter image description here

结果是,如果作业启动,它将在目标目录中创建文件,但文件大小为0.您可以看到image1的文件上次修改时间。

azure存储将继续将文件内容复制到目标目录。

如果作业完成,则会更改文件的上次修改时间。

因此DML SDK只是告诉存储器复制文件,然后它会继续将请求发送到azure存储器以检查每个文件的复制状态。

如下所示:

enter image description here

  

感谢。但是如果在复制操作期间将文件添加到源目录会发生什么?新文件是否也会被复制到目标目录?

简而言之,是的。

DML不会获取整个blob列表并发送请求一次复制所有文件。

首先会获取文件名列表的一部分并发送请求以告知存储副本文件。

列表按文件名排序。

例如。

如果DML已经将文件名复制为0文件,如下所示。

此目标blob文件夹

enter image description here

如果将0开始文件添加到文件夹,则不会复制。

这是来自blob文件夹的副本。

enter image description here

复制完整blob文件夹:

enter image description here

如果您在blob文件夹的末尾添加文件并且DML没有扫描它,它将被复制到新文件夹。

  

所以在这两周内,至少有一百万个blob必须以非常随机的名字添加到容器中。所以我认为DML在大容器的情况下不起作用?

据我所知,DML专为高性能上传,下载和复制Azure存储Blob和文件而设计。

当您使用DML CopyDirectoryAsync复制blob文件时。它将首先发送一个请求以列出文件夹的当前文件,然后它将发送请求以复制该文件。

发送列出文件夹当前文件编号的请求的操作的默认值为250。

获取列表后,它将生成一个标记,这是下一个blob搜索文件名。它将开始列出文件夹中的下一个文件名,然后重新开始复制​​。

默认情况下,.Net HTTP连接限制为2.这意味着只能维护两个并发连接。

这意味着如果您未设置.Net HTTP连接限制,则CopyDirectoryAsync将获得500条记录并开始复制。

完全复制后,操作将开始复制下一个文件。

你可以看到这张图片:

enter image description here

标记:

enter image description here

我建议您首先设置最大http连接以检测更多blob文件。

ServicePointManager.DefaultConnectionLimit = Environment.ProcessorCount * 8;

此外,我建议你可以创建多个文件夹来存储文件。

例如,您可以创建一个存储一周文件的文件夹。

下周,你可以开始一个新的文件夹。

然后你可以备份旧文件夹的文件,而不会将新文件存储到该文件夹​​中。

最后,您还可以编写自己的代码来满足您的要求,首先需要获取文件夹文件的列表。

获取列表的一个请求的最大结果是5000。

然后你可以发送请求告诉存储副本每个文件。

如果文件在获得列表后上传到文件夹,则不会复制到新文件夹。