【问题标题】:Which HDFS operations are atomic?哪些 HDFS 操作是原子的?
【发布时间】:2013-09-06 06:14:16
【问题描述】:

我正在尝试编写代码以将文件导入 HDFS 以用作配置单元外部表。我发现使用类似的东西:

富 | ssh 主机名 "hdfs dfs -put - /destination/$FILENAME"

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

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

具体和一般/学术问题是:

  1. “hdfs dfs -mv”命令是原子的,对吧?
  2. 还有哪些其他 HDFS 命令或操作是原子的?
  3. 两个几乎同时发出的“hdfs dfs -mkdir”命令能否相信它们都成功了?
  4. 在将文件移动到适当位置时,是否有更好的方法来避免 Hive 的竞争条件?

【问题讨论】:

    标签: hadoop hdfs atomic mv


    【解决方案1】:

    Hadoop FS introduction 你可以找到对原子性的要求

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

    原子性

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

    1. 创建文件。如果覆盖参数为 false,则检查和创建必须是原子的。
    2. 删除文件。
    3. 重命名文件。
    4. 重命名目录。
    5. 使用 mkdir() 创建单个目录。

    ...

    大多数其他操作没有原子性要求或保证。

    所以为了确保你必须检查底层文件系统。但根据这些要求,答案是:

    1. 是的
    2. 上面列出的
    3. 没有
    4. 恕我直言,重命名文件是这项工作的不错选择

    【讨论】:

    猜你喜欢
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多