水槽和远程hdfs接收器出错

时间:2013-05-26 14:32:26

标签: hadoop hdfs flume

我正试图用hdfs接收器运行水槽。 hdfs正在另一台机器上正常运行,我甚至可以与水槽机器中的hdfs进行交互,但是当我运行水槽并向其发送事件时,我收到以下错误:

2013-05-26 14:22:11,399 (SinkRunner-PollingRunner-DefaultSinkProcessor) [WARN - org.apache.flume.sink.hdfs.HDFSEventSink.process(HDFSEventSink.java:456)] HDFS IO error
java.io.IOException: Callable timed out after 25000 ms
    at org.apache.flume.sink.hdfs.HDFSEventSink.callWithTimeout(HDFSEventSink.java:352)
    at org.apache.flume.sink.hdfs.HDFSEventSink.append(HDFSEventSink.java:727)
    at org.apache.flume.sink.hdfs.HDFSEventSink.process(HDFSEventSink.java:430)
    at org.apache.flume.sink.DefaultSinkProcessor.process(DefaultSinkProcessor.java:68)
    at org.apache.flume.SinkRunner$PollingRunner.run(SinkRunner.java:147)
    at java.lang.Thread.run(Thread.java:679)
Caused by: java.util.concurrent.TimeoutException
    at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:258)
    at java.util.concurrent.FutureTask.get(FutureTask.java:119)
    at org.apache.flume.sink.hdfs.HDFSEventSink.callWithTimeout(HDFSEventSink.java:345)
    ... 5 more

同样,连通性不是问题,因为我可以使用hadoop命令行与hdfs进行交互(水槽机器不是数据节点)。 杀死水槽之后最奇怪的部分是我可以看到tmp文件是在hdfs中创建的,但它是空的(并且.tmp扩展名仍然存在)。

关于为什么会发生这种情况的任何想法?非常感谢!

1 个答案:

答案 0 :(得分:2)

检查3件事,如果您的防火墙已关闭,则应停止iptables。其次,属性agent.sinks.hdfs-sink.hdfs.path = hdfs://PUBLIC_IP:8020/user/hdfs/flume的值而不是私有IP。 并改变 agent.sinks.hdfs-sink.hdfs.callTimeout = 180000因为默认值是10000毫秒,这是HDFS做出反应的时间非常短。

谢谢, 希尔帕