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

本文涉及的产品
实时计算 Flink 版,5000CU*H 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 风格文件系统中链接文件的一种相对较新的方式。 与硬链接或符号链接不同,它们支持透明的 写入时复制。 这意味着编辑重新链接的文件始终是安全的,因为该文件的所有其他链接都将显示更改。


相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
2月前
|
数据采集 监控 算法
利用大数据和API优化电商决策:商品性能分析实践
在数据驱动的电子商务时代,大数据分析已成为企业提升运营效率、增强市场竞争力的关键工具。通过精确收集和分析商品性能数据,企业能够洞察市场趋势,实现库存优化,提升顾客满意度,并显著增加销售额。本文将探讨如何通过API收集商品数据,并将这些数据转化为对电商平台有价值的洞察。
|
9月前
|
存储 SQL 关系型数据库
大数据量下数据库分页查询优化方案汇总
当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询。对于数据库分页查询,也有很多种方法和优化的点。下面简单说一下我知道的一些方法。
191 2
|
8月前
|
Prometheus 运维 监控
直击运维痛点,大数据计算引擎 EasyMR 的监控告警设计优化之路
监控告警在企业保障系统的稳定性和事故快速恢复的全周期链路中都是至关重要的一环。在新版本的 EasyMR 中袋鼠云开发团队也对监控告警功能进行了全新的优化,通过本文和大家分享监控告警功能的设计思路以及碰到各类问题痛点的解决方法。
106 0
|
1天前
|
分布式计算 监控 调度
给技术新人的ODPS优化建议
数据开发基本都是从陌生到熟悉,但是写多了就会发现各种好用的工具/函数,也会发现各种坑,本文分享了作者从拿到数据到数据开发到数据监控的一些实操经验。
|
2天前
|
SQL 分布式计算 资源调度
一文解析 ODPS SQL 任务优化方法原理
本文重点尝试从ODPS SQL的逻辑执行计划和Logview中的执行计划出发,分析日常数据研发过程中各种优化方法背后的原理,覆盖了部分调优方法的分析,从知道怎么优化,到为什么这样优化,以及还能怎样优化。
|
5月前
|
人工智能 Cloud Native 大数据
构建高性能云原生大数据处理平台:融合人工智能优化数据分析流程
构建高性能云原生大数据处理平台:融合人工智能优化数据分析流程
192 0
|
3月前
|
缓存 Java 大数据
CDH大数据环境参数优化指南
CDH大数据环境参数优化指南
|
4月前
|
大数据
大数据复习课Day02_Mysql优化补充
大数据复习课Day02_Mysql优化补充
18 0
|
6月前
|
存储 缓存 算法
大数据框架中的Java虚拟机优化
大数据框架中的Java虚拟机优化
|
7月前
|
存储 缓存 JavaScript
Vue中如何进行虚拟滚动与大数据优化
Vue中如何进行虚拟滚动与大数据优化