HDFS - 放置竞争条件

HDFS - put race condition

如果我使用 copyFromLocalFile() 将文件放入 HDFS,并将覆盖设置为 false,如果第二个进程调用 copyFromLocalFile() 写入 HDFS 上的相同位置,将会发生什么在第一次放置完成之前也将覆盖设置为 false?

如果第二次调用将抛出 IOException 有没有办法确定异常是由于当前正在进行的现有放置操作而不是因为网络故障或其他问题?

HDFS 允许原子创建,因此第二次写入将失败。

(来源:作为活跃的 HDFS 开发人员的个人经历)

第二次调用将抛出 FileAlreadyExistsException,如 ClientProtocol in its Javadoc 所述。