gpt4 book ai didi

azure - 备份 ADLS gen2

转载 作者:行者123 更新时间:2023-12-02 23:39:24 25 4
gpt4 key购买 nike

我的数据湖和数据仓库包含大约 5-10 TB 的 Azure ADLS gen2、CSV 和 Delta 格式的数据。 ADLS 的性能/层=标准/热,复制=GRS,类型=StorageV2。

备份 ADLS gen2 数据的最佳方法是什么?

  • 从数据损坏的角度来看,我想备份原始提取的数据。这可以定期以增量方式、少量数据完成。
  • 从 PROD 可用性的角度来看,我希望在复杂的 PROD 迁移之前很少备份所有 5-10 TB。是的,数据可以从原始数据中得出,但这可能需要几天甚至一周的时间(包括核对、测试甚至更多)。

注意事项:

  • Azure 备份 doesn't support ADLS
  • 借助 Azure 存储资源管理器复制数据的速度很慢,因为速度在 50 到 1000 Mbps 之间不稳定。我的数据量可能需要几天或几周的时间。 我说得对吗 Azure 存储资源管理器速度不取决于我的本地互联网速度?
  • 我尚未尝试过 AzCopy,但预计它具有与 Azure 存储资源管理器相同的速度
  • data_container 安装到 DBFS 中的 archive_container,并尝试使用 Databrick 的 dbutils.fs.cp 复制数据,速度比 Azure 存储资源管理器还要慢:在大 10 个音符 30 个 DBU 集群上 3GB/10 分钟。 为什么?
  • ADF 尚未尝试过,但我不喜欢 Copy activity需要表格/格式级别的详细信息。我想备份整个容器,而不实现逻辑并取决于文件夹数量和命名。

最佳答案

对于原始数据/文件夹备份,我使用 Microsoft 数据移动服务将 blob 目录从 ADLS Gen2 复制到存储帐户中。

为此,创建一个每日触发函数来执行 blob 目录的增量复制。您可以配置类似这样的内容。

创建一个新文件夹,每周一(日期)进行完整备份,并将增量更改保留到周日。一个月后删除旧的备份文件夹。

这是我的实现。

  public async Task<string> CopyBlobDirectoryAsync(BlobConfiguration sourceBlobConfiguration, BlobConfiguration destBlobConfiguration, string blobDirectoryName)
{
CloudBlobDirectory sourceBlobDir = await GetCloudBlobDirectoryAsync(sourceBlobConfiguration.ConnectionString, sourceBlobConfiguration.ContainerName, blobDirectoryName);

CloudBlobDirectory destBlobDir = await GetCloudBlobDirectoryAsync(destBlobConfiguration.ConnectionString, destBlobConfiguration.ContainerName, destBlobConfiguration.BlobDirectoryPath + "/" + blobDirectoryName);

// You can also replace the source directory with a CloudFileDirectory instance to copy data from Azure File Storage. If so:
// 1. If recursive is set to true, SearchPattern is not supported. Data movement library simply transfer all azure files
// under the source CloudFileDirectory and its sub-directories.
CopyDirectoryOptions options = new CopyDirectoryOptions()
{
Recursive = true
};

DirectoryTransferContext context = new DirectoryTransferContext();
context.FileTransferred += FileTransferredCallback;
context.FileFailed += FileFailedCallback;
context.FileSkipped += FileSkippedCallback;

// Create CancellationTokenSource used to cancel the transfer
CancellationTokenSource cancellationSource = new CancellationTokenSource();

TransferStatus trasferStatus = await TransferManager.CopyDirectoryAsync(sourceBlobDir, destBlobDir, CopyMethod.ServiceSideAsyncCopy, options, context, cancellationSource.Token);

return TransferStatusToString(blobDirectoryName, trasferStatus);
}

关于azure - 备份 ADLS gen2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64693799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com