2017-06-22 69 views
0

我的要求是从多台机器上读取日志数据。LogStash - 据我所知,在所有机器上安装LogStash代理和LogStash可以在数据到达时将数据推送到Kafka,即,即使将新行添加到文件中,LogStash也只读取并非整个文件再次。用Spark Streaming替换LogStash

问题

  1. 现在我可以实现与星火流一样吗?

  2. 如果是这样,使用Spark Streaming优于 LogStash的优势和劣势是什么?要在所有的机器上安装

+0

为什么要使用Spark Streaming? –

回答

1

LogStash代理

是的,你需要在所有的机器一些代理。 ELK堆栈中的解决方案实际上是FileBeat,而不是Logstash代理。在这种情况下,Logstash更多地是服务器/消息总线。

同样,某些Spark作业需要运行才能读取文件。就个人而言,我会有其他任何东西尾随一个日志文件(即使只是从网络套接字管道输出tail -f file.log)。需要编写和分发Spark JAR +配置文件明显是缺点。尤其是当您需要在每台正在收集日志的计算机上安装Java时。

水槽或Fluentd是分布式日志收集其他广泛使用的选项与卡夫卡目的地

LogStash可以把数据卡夫卡

The Beats framework has a Kafka Output,但你也可以先运到Logstash。

目前还不清楚您是否纯粹使用LogStash作为Kafka或在此处使用ElasticSearch,但Kafka Connect提供了文件源(和Elasticsearch输出)。

只读取不再

无论您使用的工具(包括星火流的文件源)通常会看文件的目录(整个文件,因为如果你不旋转的日志文件, '做错了)。当文件进入或写入文件的字节时,该框架将需要在内部提交某种类型的标记以指示到目前为止消耗了哪些元素。要重置代理,此元数据应该能够从头开始删除/重置