flume使用python socket或teln时无法正确获取事件

2024-10-07 00:24:07 发布

您现在位置:Python中文网/ 问答频道 /正文

{neti}要使用flui-net中的脚本进行测试,那么就可以使用fluinet中的脚本来进行测试了。在

我的配置代码:

a1.sources = r1
a1.sinks = k1
a1.channels = c1
Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444
a1.sinks.k1.type = logger
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

然后我用Python连接Flume,并向它发送一些单词,如下所示:

^{pr2}$

出现问题,水槽只能接收2行。 水槽日志:

2016-12-28 16:44:32,248 (lifecycleSupervisor-1-0) [INFO - org.apache.flume.source.NetcatSource.start(NetcatSource.java:169)] Created serverSocket:sun.nio.ch.ServerSocketChannelImpl[/127.0.0.1:44444] 2016-12-28 16:44:41,814 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:95)] Event: { headers:{} body: 74 65 73 74 20 77 6F 72 64 73 20 31 test words 1 } 2016-12-28 16:44:41,815 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:95)] Event: { headers:{} body: 74 65 73 74 20 77 6F 72 64 73 20 32 test words 2 }

我在Ubuntu&Java1.8和Centos&Java1.7上得到了相同的结果,在Python中使用telnet模型得到了相同的结果。在

config或Python脚本有什么问题吗?或者有人对这个案子有什么建议吗?在


Tags: orginfo脚本apachea1typek1java
1条回答
网友
1楼 · 发布于 2024-10-07 00:24:07

发生这种情况的原因是你没有等待回复。默认情况下,Flume的netcat源将为每个事件发送一个“OK”消息。在发送响应之前,您正在终止连接,这将导致进一步消息的处理失败(因为管道已从客户端断开)。在

要解决此问题,需要对水槽.conf公司名称:

a1.sources.r1.ack-every-event=false

这就消除了发送“OK”的要求,从而停止了故障。在

或者,您可以将Python更改为每次在关闭连接之前等待“OK”消息被发送。人为地,在中添加一个sleep语句应该也能解决这个问题,尽管您会假设处理消息可能需要多长时间。正常情况下没问题,但可能有其他情况导致处理延迟。在

相关问题 更多 >