最近在使用hadoop的过程中,发现了一个情况。
当我使用c 
api向hdfs联邦模式router节点rpc端口发送请求时,比如说写文件,客户端发送完成请求后,hadoop端需要20分钟延时文件才有字节大小,延时期间不能对文件进行操作。

客户端这边运行结束之后,hadoop端日志大致过程:
1.namenode接收到客户端的请求,FSEditLog打印日志。
2.blockmanager.BlockPlacementPolicy: 提示没有足够的副本可供选择. 
Reason:{NO_REQUIRED_STORAGE_TYPE=1}
3.StateChange: 分配block
4.StateChange: 为hadoop目录文件获取租约
5.ipc.Server: 检查租约的方法抛了个异常 LeaseExpiredExcepion: INode is not a regular file: /
6.(开始等待)
7.20分钟后,达到hard limit最大值限制。强制关闭租约。
8.触发 Lease recovery
9.然后才可执行成功。

我也怀疑过是客户端的问题。但是我做了几组测试,(都是用c api向hadoop发送写请求,以下简写)
3.3.1版本、router、rpc端口。  --> 有20分钟延时
3.3.1版本、namenode、rpc端口。 --> 无问题
3.3.1版本、router、http端口。 --> 无问题
3.3.1版本、namenode、http端口。--> 无问题

3.1.1版本、router、rpc端口。 --> 无问题
3.1.1版本、namenode、rpc端口。 --> 无问题
3.1.1版本、router、rpc端口。 --> 无问题
3.1.1版本、namenode、rpc端口。 --> 无问题

以下是我的猜测:
从hadoop日志中看,猜测是3.3.1版本、router、rpc端口一开始未获取到租约,所以导致无法正常关闭租约,直到hard 
limit触发,才能退出。但是我无法解释为什么相同的客户端,3.1.1版本就无该现象。我怀疑是版本的变化改动与libhdfs3.so的某个部分不适配导致这一现象。


如果有人发现类似的情况,我希望得到回复,为我指明这个问题的方向。,



| |
王继泽
|
|
y98d...@163.com
|

Reply via email to