HDFS 原子重命名文件系统依赖

Posted

技术标签:

【中文标题】HDFS 原子重命名文件系统依赖【英文标题】:HDFS atomic rename file system dependency 【发布时间】:2014-09-04 09:51:16 【问题描述】:

关于堆栈溢出的其他问题以及 hadoop 2.x 文档指出 HDFS 重命名操作是原子操作。但是 hadoop 2.x 文档还声明了以下内容:

注意重命名的原子性取决于文件系统 执行。请参阅文件系统文档以获取 细节 来源:Hadoop 2.x FileContext documentation

这句话也暗示了对底层文件系统的依赖。直到知道我不可能理解或阐述这句话的确切含义。仅仅是文件系统的重命名操作也必须是原子的吗?有哪些常用的文件系统和那句话有冲突?

【问题讨论】:

【参考方案1】:

DistributedFileSystem 的重命名似乎是原子的。 rename(Path src, Path dst, final Options.Rename... options) 方法有一个 Javadoc 注释,它说: /** * This rename operation is guaranteed to be atomic. */ latest documentation 还表示原子重命名是 Hadoop 兼容文件系统的核心期望之一,因此我假设 WebHdfsFileSystem 和 S3FileSystem 等常用文件系统支持原子重命名。源代码有点难以理解,所以我不是 100% 确定。

【讨论】:

以上是关于HDFS 原子重命名文件系统依赖的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop分布式文件系统---HDFS重点

HDFS

HDFS的配额

HDFS中的shell操作

Java API操作HDFS

HDFS中的Pyspark重命名文件