Hadoop 哪些HDFS操作是原子的?

Hadoop 哪些HDFS操作是原子的?,hadoop,hdfs,atomic,mv,Hadoop,Hdfs,Atomic,Mv,我正在尝试编写代码,将文件导入HDFS以用作配置单元外部表。我发现,使用以下方法: foo | ssh主机名“hdfs dfs-put-/destination/$FILENAME” 在创建临时文件并在完成后重命名时,可能会导致一种类型的错误。这可能导致配置单元在目录列表和查询执行之间出现竞争条件 一种解决方法是将文件复制到临时目录并“hdfs dfs mv”到位 具体和一般/学术问题包括: “hdfs dfs-mv”命令是原子的,对吗 还有哪些HDFS命令或操作是原子的 几乎同时发出的两个“h

我正在尝试编写代码,将文件导入HDFS以用作配置单元外部表。我发现,使用以下方法:

foo | ssh主机名“hdfs dfs-put-/destination/$FILENAME”

在创建临时文件并在完成后重命名时,可能会导致一种类型的错误。这可能导致配置单元在目录列表和查询执行之间出现竞争条件

一种解决方法是将文件复制到临时目录并“hdfs dfs mv”到位

具体和一般/学术问题包括:

  • “hdfs dfs-mv”命令是原子的,对吗
  • 还有哪些HDFS命令或操作是原子的
  • 几乎同时发出的两个“hdfs dfs-mkdir”命令是否可以认为它们都成功了
  • 在将文件移动到适当位置时,是否有更好的方法避免配置单元的争用情况
  • 在中可以找到原子性的要求

    以下是Hadoop兼容文件系统的核心期望。一些文件系统无法满足所有这些期望;因此,某些程序可能无法按预期工作

    原子性

    有些操作必须是原子操作。这是因为它们通常用于实现集群中进程之间的锁定/独占访问

  • 创建一个文件。如果overwrite参数为false,则检查和创建必须是原子的
  • 删除文件
  • 重命名文件
  • 重命名目录
  • 使用mkdir()创建单个目录
  • 大多数其他操作都没有原子性要求或保证

    所以,一定要检查底层文件系统。但根据这些要求,答案是:

  • 上列
  • 没有
  • imho重命名文件是这项工作的好选择

  • 这似乎不符合,其中提到默认情况下它不是原子的。取决于文件系统实现,但是的,默认情况下它不是原子的