5
有没有办法获取HDFS中的目录锁定?这里就是我想要做的事:在HDFS中锁定一个目录
我有一个名为目录../最新/ ...
我每天都需要新的数据添加到这个目录,但在此之前我在这里复制的新数据,我想要获取锁定,这样在我将新数据复制到其中时,没有人正在使用它。
有没有办法在HDFS中做到这一点?
有没有办法获取HDFS中的目录锁定?这里就是我想要做的事:在HDFS中锁定一个目录
我有一个名为目录../最新/ ...
我每天都需要新的数据添加到这个目录,但在此之前我在这里复制的新数据,我想要获取锁定,这样在我将新数据复制到其中时,没有人正在使用它。
有没有办法在HDFS中做到这一点?
不,没有办法通过HDFS来做到这一点。
一般来说,当我遇到这个问题时,我尝试将数据复制到随机临时位置,然后在复制完成后移动文件。这很好,因为mv非常即时,而复制需要更长的时间。这样,如果你检查,看看是否有人正在写,然后MV,时间段和“锁定”保持一段较短的时间
hadoop fs -ls
也许)hadoop fs -mv
数据到latest
目录。有一个渺茫的机会,在3和4之间,你可能会有人砸东西。如果这真的让你感到紧张,也许你可以在ZooKeeper中实现一个简单的锁。 Curator可以帮助你。
对!在'临时'位置创建数据并移动它并不是防弹的,因为某些用户可能正在运行(长时间)MR工作。不知道ZooKeeper中的一个简单的锁如何帮助。不能保证用户在对我的数据运行MR作业之前将首先获得锁定,对吗?我错过了什么吗?不知何故,我认为锁必须位于Namenode级别。请说明ZooKeeper方法。谢谢。 – DilTeam
是的,你是对的。 ZooKeeper方法假设您相信每个人都使用ZK获取锁定。没有什么会阻止用户忽略它。在我看来,你将不得不寻找一种非技术或设计方法来解决你的问题。 –