哪些hdfs操作是原子的?

f1tvaqid  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(815)

我正在尝试编写代码,将文件导入hdfs,用作配置单元外部表。我发现使用以下方法:
foo | ssh hostname“hdfs dfs-put-/destination/$filename”
可能会导致创建临时文件并在完成后重命名的错误类型。这可能导致配置单元在目录列表和查询执行之间出现竞争条件。
一种解决方法是将文件复制到临时目录并“hdfs dfs mv”到位。
具体和一般/学术问题包括:
“hdfs dfs-mv”命令是原子的,对吗?
还有哪些hdfs命令或操作是原子的?
几乎同时发出的两个“hdfs-dfs-mkdir”命令能相信它们都成功了吗?
在将文件移动到适当位置时,有没有更好的方法来避免与配置单元的争用情况?

qlzsbp2j

qlzsbp2j1#

在hadoopfs简介中,您可以找到对原子性的需求
以下是hadoop兼容文件系统的核心期望。有些文件系统不能满足所有这些期望;因此,某些程序可能无法按预期工作。
原子性
有些操作必须是原子的。这是因为它们通常用于实现集群中进程之间的锁定/独占访问。
创建文件。如果overwrite参数为false,则检查和创建必须是原子的。
删除文件。
重命名文件。
重命名目录。
使用mkdir()创建单个目录。
...
大多数其他操作都没有原子性的要求或保证。
所以一定要检查底层文件系统。但根据这些要求,答案是:

上面列出的

我认为重命名文件是这项工作的好选择

相关问题