我们通常向hdfs写入数据时,会以写入的方式打开文件,打开文件的客户端会被授予一个独占的写租约,用于保护该文件。
这意味着在该客户端完成操作之前,没有其他客户端能够写入该文件。
为确保没有“不辞而别的”客户端占用租约,租约会周期性的过期。
租约的使用有效地确保了两个应用程序不会同时写入一个给定文件(与数据库中的写锁相似)。
租约的生命周期由软限制和硬限制来限定。
在软限制期间,写入者可以独占地访问文件。
如果软限制过期且客户端没能关闭文件或者更新租约(通过向namenode发送心跳),那么其他客户端可以抢占该租约。
如果硬限制(一小时)过期且客户端没能更新租约,那么HDFS认为客户端已经退出,并自动替写入者关闭文件,然后恢复租约。
写入者的租约并不会阻止其他客户端读取该文件。
一个文件可能有多个并发的读取者。
以上所述如有不妥,恳请大家指正。
(如果对您有所帮助话,那就点个赞点个关注吧,嘻嘻~~)
安利一个特别热心的编程乐园群:624108656
超级热心的群
网友评论