【发布时间】:2016-02-09 18:10:45
【问题描述】:
我有一个 spark-streaming 服务,我正在根据一些离线生成的模型处理和检测异常。我从一个日志文件中将数据输入该服务,该文件使用以下命令进行流式传输
tail -f <logfile>| nc -lk 9999
这里的 spark 流服务正在从端口 9999 获取数据。但是,我观察到最后几行被删除了,即 spark 流没有接收到这些日志行或者它们没有被处理。
但是,我也观察到,如果我只是将日志文件作为标准输入而不是拖尾,则不会删除任何行:
nc -q 10 -lk 9999 < logfile
谁能解释为什么会发生这种行为?还有什么可以更好地解决流式传输日志数据以触发流式传输实例的问题?
【问题讨论】:
-
我用过同样的,但没有遇到任何问题。虽然正确的架构将使用一些可实现的机制来捕获日志,例如 Flume 或 Apache Nifi 将是捕获流数据然后将其提交给 Spark Streaming 作业的更好选择。 Fume 与 Spark Streaming 很好地集成在一起。见here
-
感谢您的建议,但我也想弄清楚这里的行为。您是否在设置中使用了 tail -f
|nc -lk 9999 选项,它似乎适用于流式传输,但是当我进行归档日志重播时.. 它通常无法处理最后一个日志或最后一对日志? -
我使用
tail -f <logfile>来获取 Web 应用程序生成的新日志。没有尝试重播归档日志,但从逻辑上看我没有看到任何区别。
标签: apache-spark spark-streaming netcat