【问题标题】:Error with flume and remote hdfs sink水槽和远程 hdfs 接收器出错
【发布时间】:2017-01-07 07:57:06
【问题描述】:

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

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 扩展名仍然存在)。

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

【问题讨论】:

    标签: hadoop hdfs flume


    【解决方案1】:

    检查 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 的反应时间非常短。

    谢谢, 希尔帕

    【讨论】:

    • 希尔帕您好,感谢您提供的信息。不幸的是,我无法检查,因为自从发布问题以来我已经走了很长一段路。希望它可以对遇到类似问题的其他人有所帮助。
    • 是的..这是我的意图。
    猜你喜欢
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    相关资源
    最近更新 更多