代码之家  ›  专栏  ›  技术社区  ›  DilTeam

锁定HDFS中的目录

  •  7
  • DilTeam  · 技术社区  · 12 年前

    在HDFS中是否有获取目录锁的方法?以下是我要做的:

    我有一个名为..的目录/最新/。。。

    每天我都需要将新数据添加到这个目录中,但在我将新数据复制到这里之前,我想获取锁,这样当我将新的数据复制到其中时,没有人使用它。

    在HDFS中有这样的方法吗?

    1 回复  |  直到 12 年前
        1
  •  7
  •   Donald Miner    12 年前

    不,没有办法通过HDFS实现这一点。

    通常,当我遇到这个问题时,我会尝试将数据复制到一个随机的临时位置,然后在复制完成后移动文件。这很好,因为mv非常即时,而复制需要更长的时间。这样,如果你检查是否有其他人在写mv,那么时间段和“锁定”将保持较短的时间

    1. 生成随机数
    2. 将数据放入中的新文件夹hdfs://tmp/$随机数
    3. 检查目的地是否正常( hadoop fs -ls 也许)
    4. hadoop fs -mv 将数据发送到 latest 目录

    在3岁到4岁之间,你很可能会有人砸东西。如果这真的让你紧张,也许你可以在ZooKeeper中实现一个简单的锁。 Curator 可以帮你。