换下风格^_^

flume向hdfs传输数据,出现Lease mismatch

Flume admin 5320℃ 0评论

使用flume向做hdfs实时传送数据过程中的异常。

环境

  • hadoop:做了高可用的CDH4.4.0
  • flume:做了负载的flume,版本flume-ng 1.4.0。source是:exce tail;channel是:memory;sink是:hdfs

flume里的异常日志是:

13 Jan 2014 10:34:23,488 WARN  [SinkRunner-PollingRunner-DefaultSinkProcessor] (org.apache.flume.sink.hdfs.HDFSEventSink.process:418)  - HDFS
 IO error
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException): Lease mismatch on /logdata/ttpod_client/
2014-01-13/ttpod_client_01.1389546000007.gz.tmp owned by DFSClient_NONMAPREDUCE_-762335964_48 but is accessed by DFSClient_NONMAPREDUCE_10004
23230_48
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkLease(FSNamesystem.java:2459)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.analyzeFileState(FSNamesystem.java:2262)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:2175)
	at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:501)
	at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslator
PB.java:299)
	at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProto
colProtos.java:44954)
	at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:453)
	at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1002)
	at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1751)
	at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1747)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:415)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
	at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1745)

	at org.apache.hadoop.ipc.Client.call(Client.java:1237)
	at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:202)
	at com.sun.proxy.$Proxy14.addBlock(Unknown Source)
	at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.addBlock(ClientNamenodeProtocolTranslatorPB.java:291)
	at sun.reflect.GeneratedMethodAccessor11.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:164)
	at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:83)
	at com.sun.proxy.$Proxy15.addBlock(Unknown Source)
	at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.locateFollowingBlock(DFSOutputStream.java:1177)
	at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.nextBlockOutputStream(DFSOutputStream.java:1030)
	at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:488)

从上面错误日志看出应该是hadoop的lease丢失的问题,也就是hdfs读写问题。
google了很久,也没找到什么好的答案,或者需要修改的配置。
下面的这篇文章(Hadoop 2.0 NameNode HA和Federation实践)有提到过,但是任然不知道怎么据解决。

未解决,希望有知道的不吝赐教

转载请注明:极豆技术博客 » flume向hdfs传输数据,出现Lease mismatch

喜欢 (0)
捐助本站极豆博客全站无广告。如果您觉得本博客的内容对您小有帮助,可以对我小额赞助,您的赞助将用于维持博客运营。

极豆博客

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(4)个小伙伴在吐槽
  1. 这个是由于配置了多个Flume agent做HA,每个agent都有多个HDFS客户端。多个HDFS客户端同时向一个HDFS文件写数据的时候造成Lease租约问题,Lease可以认为是一个文件写锁。解决方法是配置每个Agent的HDFS文件前缀后者后缀
    小豆2014-03-11 13:06 回复
    • 是的,如你所说。原因找到了,我们的flume写的时候有文件冲突的问题,后来加了host
      admin2014-03-14 16:19 回复
      • 怎么配置,请指教
        qin an2014-08-15 16:50 回复
        • http://www.geedoo.info/flume-ng1-3%E5%A4%B1%E8%B4%A5%E9%85%8D%E7%BD%AE.html
          admin2014-08-18 09:35 回复