Hadoop错误: put: Lease mismatch on ... by DFSClient_NONMAPREDUCE_-499992815_1.... 学习总结

           错误总结分享:  使用了hadoop挺长时间了,多数人应该很熟悉它的特点了吧,但是今天突然遇到个错误,从来没见过,一时自己也想不到是什么原因,就在网上查了一些资料,得到了解决的办法,再次分享一下。

               过程: 使用kettle 数据清洗工具在进行同步任务的过程中,最后数据是被加载到hdfs的,这里用shell脚本实现,hdfs  dfs  -put  -r  /hdfs的目录。 结果程序执行到这一步的时候报错了。错误描述就是文章标题的错误,翻译过来就是租赁不匹配,大概就是这样子,看了别人的 分析就理解了错误。开始还以为是集群中节点挂了呢。

           HDFS(及大多数分布式文件系统)不支持文件并发写,Lease是HDFS用于保证唯一写的手段

Lease可以看做是一把带时间限制的写锁,仅持有写锁的客户端可以写文件。
租约的有效期
HDFS的Lease设定了两个时间限制:softLimit(默认1m),hardLimit(默认1h);

  • Lease持有者在softLimit时限内可以写文件,且不用担心被其它写者抢走Lease;
  • 在超过softLimit仅未及hardLimit时限可以续约,否则Lease可能被其它写者申请走;
  • 在超过hardLimit后,Lease会被释放,写者需要重新申请Lease;对hardLimit的超时检查是由Namenode的lmthread线程执行;

你可能感兴趣的:(ETL技术,Hadoop,hdfs租约,hadoop错误)