DVC 使用指南:大数据集优化

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 为了跟踪使用 dvc add、dvc repro 等添加的数据文件和目录,DVC 将所有这些文件移动到项目的缓存中。

为了跟踪使用 dvc adddvc repro 等添加的数据文件和目录,DVC 将所有这些文件移动到项目的缓存中。

但是,工作空间中还需要与当前代码匹配的跟踪文件的版本,因此可以将缓存文件的子集保留在工作目录中。 这是否意味着某些文件将在工作区和缓存之间重复? 那将没有效率!特别是对于大文件(几千兆字节或更大)。

为了使两个目录中的文件不重复,DVC 可以自动创建文件链接来指向工作空间中的缓存数据。 事实上,在默认情况下,如果文件系统支持,它将尝试使用 reflinks*


DVC 缓存支持的文件链接类型


文件链接是文件系统中的轻量级条目,不保存文件内容,而是作为原始数据实际存储位置的快捷方式。 它们在与类 UNIX 操作系统一起使用的文件系统中更为常见,并且有不同的种类,它们在将文件名连接到系统中的 inode 时有所不同。

Inodes 是元数据文件的记录,用于定位和存储对实际文件内容的权限。 有关技术详情 (Linux),请参阅 此文档 中的链接文件。 使用 ls -i 列出 Linux 上的 inode。

几种受支持的链接类型各有利弊:硬链接、软链接或符号链接,以及较新系统中的 Reflink。 虽然 reflinks 带来了所有的好处,而且没有任何顾虑,但大多数平台还没有普遍支持它们。 硬/软链接优化了文件系统中的速度空间,但可能会破坏您的工作流程,因为更新工作空间中 DVC 跟踪的硬/符号链接文件会导致缓存损坏。 为了防止这种情况,DVC 通过将硬链接和符号链接设为只读来保护它们,需要使用 dvc unprotect 才能安全地修改它们。

最后,第四种“链接”方法是从缓存中复制文件,这是安全但低效的 - 特别是对于大文件(几 GB 或更多)。

某些版本的 Windows(例如:Windows Server 2012+ 和 Windows 10 Enterprise)在NTFSReFS 文件系统上支持硬链接或软链接。

文件链接类型的好处总结:

cache.type 速度 空间 可编辑的
reflink x x x
hardlink x x
symlink x x
copy x

下面根据其效率进一步详细说明每种文件链接方法:

  1. reflink:Copy-on-write* 链接或reflinks是最好的链接类型,如果可用的话。 它们与硬/符号链接一样高效,但不会带来任何缓存损坏的风险,因为如果您尝试在适当的位置编辑文件,文件系统会负责复制文件,从而保持链接的缓存文件完好无损。


不幸的是,目前仅在有限数量的文件系统(Linux:Btrfs、XFS、OCFS2;macOS:APFS)上支持 reflink,但将来大多数文件系统都将支持它们。

  1. hardlink:如果您的 repo 和缓存目录位于同一分区或存储设备上,硬链接是将数据链接到缓存的最有效方式。 一个文件的硬链接数可能受文件系统限制(NTFS:1024,EXT4:65,000)。 当链接数量超过此限制时,DVC 将回退到下一个可用的链接策略,这可能发生在具有很多相同文件的 repos 中。

请注意,硬链接的数据文件无法就地编辑,因此 DVC 默认避免使用这些文件。 但是,可以取消链接或删除它们,然后用新文件替换它们

  1. symlink:如果repo和缓存目录位于不同的文件系统/驱动器上(库(repo)位于SSD上是为了提高性能,而缓存(cache dir)位于HDD上是为了更大的存储空间),符号链接(又名“软”)是将数据链接到缓存的最有效方式。

请注意,符号链接的数据文件不能就地编辑,因此 DVC 默认避免这些。 但是,可以取消链接或删除它们,然后用新文件替换它们

  1. copy:一种低效的“链接”策略,但在所有文件系统上都受支持。 使用“复制”意味着没有文件链接,但跟踪的文件将被复制为缓存和工作区中存在的副本。 适用于数据文件相对较小的场景(复制它们不是存储性能问题)。

配置 DVC 缓存文件链接类型

默认情况下,如果您的系统上可用,DVC 会尝试对缓存使用 reflink,但这不是目前最常见的情况,因此它回退到复制策略。 如果您希望启用硬链接或软链接,您可以像这样配置 DVC:

$ dvc config cache.type hardlink,symlink
复制代码


请参阅 dvc config cache,查看详细信息。

请注意,使用此cache.type,您的工作区文件将处于只读模式,以保护缓存免受损坏。 请参阅更新跟踪文件了解如何在这些缓存配置下管理跟踪的文件。

为确保工作区中的数据文件与项目的cache.type配置值一致,您可以使用dvc checkout --relink。请参阅 dvc checkout, 查看详细信息。


  • copy-on-write 链接或"reflinks" 是在 UNIX 风格文件系统中链接文件的一种相对较新的方式。 与硬链接或符号链接不同,它们支持透明的 写入时复制。 这意味着编辑重新链接的文件始终是安全的,因为该文件的所有其他链接都将显示更改。


相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
2月前
|
SQL 分布式计算 运维
如何对付一个耗时6h+的ODPS任务:慢节点优化实践
本文描述了大数据处理任务(特别是涉及大量JOIN操作的任务)中遇到的性能瓶颈问题及其优化过程。
|
3天前
|
存储 分布式计算 大数据
大数据 优化数据读取
【11月更文挑战第4天】
14 2
|
13天前
|
存储 NoSQL 大数据
大数据 数据存储优化
【10月更文挑战第25天】
46 2
|
1月前
|
SQL 分布式计算 NoSQL
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
28 1
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
|
1月前
|
存储 大数据 分布式数据库
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
33 1
|
1月前
|
分布式计算 Java 大数据
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
38 0
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
|
1月前
|
SQL 存储 监控
大数据-161 Apache Kylin 构建Cube 按照日期、区域、产品、渠道 与 Cube 优化
大数据-161 Apache Kylin 构建Cube 按照日期、区域、产品、渠道 与 Cube 优化
49 0
|
1月前
|
SQL 分布式计算 大数据
大数据-91 Spark 集群 RDD 编程-高阶 RDD广播变量 RDD累加器 Spark程序优化
大数据-91 Spark 集群 RDD 编程-高阶 RDD广播变量 RDD累加器 Spark程序优化
37 0
|
3月前
|
存储 SQL JSON
一些MaxCompute日常优化案例分享
MaxCompute优化是一个多样而又重要的过程,优化过程需要能够深入理解ODPS的工作原理和内部机制,本文总结了以下几个日常优化案例,最终优化手段可能非常简单,但其中的分析过程较为重要,希望对大家有所启发。
|
3月前
|
存储 分布式计算 数据处理
MaxCompute 的成本效益分析与优化策略
【8月更文第31天】随着云计算技术的发展,越来越多的企业选择将数据处理和分析任务迁移到云端。阿里云的 MaxCompute 是一款专为海量数据设计的大规模数据仓库平台,它不仅提供了强大的数据处理能力,还简化了数据管理的工作流程。然而,在享受这些便利的同时,企业也需要考虑如何有效地控制成本,确保资源得到最优利用。本文将探讨如何评估 MaxCompute 的使用成本,并提出一些优化策略以降低费用,提高资源利用率。
206 0