1

我在使用 Azure 数据工厂 V2 时遇到问题,其中没有复制具有大量 blob 的容器。一条管道运行了将近 75 小时,最终因错误而失败。

Activity Copy1 failed: ErrorCode=FailedStorageOperation,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=A storage operation failed with the following error
 'Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.'.,Source=,''Type=Microsoft.WindowsAzure.Storage.StorageException,Message=Unable to read data from the transport connection:
 An existing connection was forcibly closed by the remote host.,Source=Microsoft.WindowsAzure.Storage,''Type=System.IO.IOException,Message=Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.,Source=System,''Type=System.Net.Sockets.SocketException,Message=An
 existing connection was forcibly closed by the remote host,Source=System,'

额外细节

  • 5 个管道,每个管道都有 1 个复制活动(3 个成功,2 个失败)。
    • 将 auto 用于并行复制和 DMU
    • 跳过不兼容的行
    • 没有分期
  • 源数据集使用 Azure 存储帐户的 SAS 密钥。
    • 存储帐户配置为 RA-GRS,我正在尝试从辅助(读取访问)位置读取。
    • 使用递归和二进制文件选项。
  • 目标数据集使用 Azure 存储帐户的 SAS 密钥。
    • 存储帐户与源数据集位于同一数据中心(存储帐户的 RA 辅助)。
    • 使用保留层次结构选项
  • 来源和目的地都是美国中南部

我尝试了 5 个不同的源容器,3 个成功,2 个失败。失败的两个之间的共同点似乎是容器中的 blob 数量。一个容器的根中有超过 3000 万个 Blob。我不知道另一个容器中的数字,但它超过 1 TB,由小文件(每个 15 KB)组成,组织成 2 级深的子文件夹。我试图尽我所能重现文件夹结构。

  • 容器 1(成功)
    • {Guid-文件夹名称}/Blob.jpg
    • 65GB,复制了 63,555 个文件
  • 容器 2(成功)
    • 文件夹/guid 文件名
    • 209GB,复制了 2,724,023 个文件
  • 容器 3(成功)
    • 文件夹/{文件夹}/blob.txt
    • 过滤到 *.txt
    • 606MB,复制了 687,559 个文件
  • 容器 4(失败)
    • 文件夹/{IntId-FolderName}/blob
    • 过滤为 *.json
    • 超过 62,500,000 个文件,过滤到 *.json 将是其中的 10%
  • 容器 5(失败)
    • 文件夹/guid 文件名
    • 超过 3000 万个 Blob

使用容器 4,我尝试了带过滤器和不带过滤器的源,但都没有工作。然后,我将源更改为更具体的路径 (Folder/1234),该路径具有约 100,000 个 blob,并且它在指定过滤器的情况下复制得很好。由于我已经使用过滤和未过滤的源以及不同的路径结构(容器 1-3)成功复制,因此问题似乎在于 blob 的数量。

4

0 回答 0