Set*_*jmp 11 hadoop atomic mv hdfs
我正在尝试编写代码以将文件导入HDFS以用作配置单元外部表.我发现使用类似的东西:
foo | ssh hostname"hdfs dfs -put - /destination/$ FILENAME"
可能会导致创建临时文件时出现一种错误,然后在完成时重命名.这可能导致目录列表和查询执行之间的配置单元的竞争条件.
一种解决方法是将文件复制到临时目录并将"hdfs dfs mv"复制到位.
具体和一般/学术问题是:
two*_*rec 14
在Hadoop FS介绍中,您可以找到原子性的要求
以下是与Hadoop兼容的文件系统的核心期望.有些FileSystems 无法满足所有这些期望; 因此,某些程序可能无法按预期工作.
原子性
有一些操作必须是原子的.这是因为它们通常用于在集群中的进程之间实现锁定/独占访问.
- 创建文件.如果overwrite参数为false,则检查和创建必须是原子的.
- 删除文件.
- 重命名文件.
- 重命名目录.
- 使用mkdir()创建单个目录.
...
大多数其他操作没有原子性的要求或保证.
所以要确保你必须检查底层文件系统.但基于这些要求,答案是:
| 归档时间: |
|
| 查看次数: |
4682 次 |
| 最近记录: |