95
技術社區[雲棲]
Flume-ng出現HDFS IO error,Callable timed out異常
這兩台flume-ng晚上9點~11點flume出現異常:
25 Mar 2014 22:18:25,189 ERROR [hdfs-thrift_hdfsSink-roll-timer-0] (org.apache.flume.sink.hdfs.BucketWriter$2.call:257) - Unexpected error
java.io.IOException: Callable timed out after 10000 ms on file: /logdata/2014/03/25/software_log/197a.1395757003934.tmp
at org.apache.flume.sink.hdfs.BucketWriter.callWithTimeout(BucketWriter.java:550)
at org.apache.flume.sink.hdfs.BucketWriter.doFlush(BucketWriter.java:353)
at org.apache.flume.sink.hdfs.BucketWriter.flush(BucketWriter.java:319)
at org.apache.flume.sink.hdfs.BucketWriter.close(BucketWriter.java:277)
at org.apache.flume.sink.hdfs.BucketWriter$2.call(BucketWriter.java:255)
at org.apache.flume.sink.hdfs.BucketWriter$2.call(BucketWriter.java:250)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
Caused by: java.util.concurrent.TimeoutException
at java.util.concurrent.FutureTask.get(FutureTask.java:201)
at org.apache.flume.sink.hdfs.BucketWriter.callWithTimeout(BucketWriter.java:543)
... 11 more
25 Mar 2014 22:34:17,639 WARN [ResponseProcessor for block BP-928773537-10.31.246.10-1392969615809:blk_-6973900543529394933_175021] (org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer$ResponseProcessor.run:747) - DFSOutputStream ResponseProcessor exception for block BP-928773537-10.31.246.10-1392969615809:blk_-6973900543529394933_175021
java.io.EOFException: Premature EOF: no length prefix available
at org.apache.hadoop.hdfs.protocol.HdfsProtoUtil.vintPrefixed(HdfsProtoUtil.java:171)
at org.apache.hadoop.hdfs.protocol.datatransfer.PipelineAck.readFields(PipelineAck.java:114)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer$ResponseProcessor.run(DFSOutputStream.java:694)
查看日誌高峰期:
可以明顯的看到18點開始,到23點之間是高峰期,hadoop集群百兆帶寬,在日誌寫入高峰期時,達到帶寬上限。hadoop這邊我們還沒有部署監控工具(-。。-)
目前解決方案:
- 根據https://blog.csdn.net/yangbutao/article/details/8845025,修改flume hdfs客戶端超時時間。
- 修改hdfs.callTimeout從默認的10秒改成:40秒
最後更新:2017-04-03 12:55:50