您可以将Apache Kafka用作日志的队列系统。生成日志的系统(例如websever)会将日志发送到Apache KAFKA。然后,您可以使用Apache Storm或Spark流媒体库从KAFKA主题中读取并实时处理日志。
我想创建一个可以实时读取日志并使用apache spark处理它的系统。如果我应该使用类似kafka或flume的日志将日志传递到Spark流,还是应该使用套接字传递日志,我感到困惑。我查看了Spark Streaming文档Spark stream example中的示例程序。但是,如果有人可以引导我以更好的方式将日志传递到火花流,我将不胜感激。对我来说,这真像是一块新草皮。
Apache Flume可能有助于实时读取日志。Flume提供日志收集并传输到应用程序,在此应用程序中,Spark Streaming用于分析所需的信息。
1。从official site下载Apache Flume或按照here的说明进行操作>
2。
设置并运行Flume 从安装Flume的目录(FLUME_INSTALLATION_PATH \ conf)修改flume-conf.properties.template,在这里您需要提供日志源,通道和接收器(输出)。有关设置here的更多详细信息有一个启动水槽的示例,该水槽从Windows主机上运行的ping命令收集日志信息并将其写入文件:
flume-conf.properties
agent.sources = seqGenSrc agent.channels = memoryChannel agent.sinks = loggerSink agent.sources.seqGenSrc.type = exec agent.sources.seqGenSrc.shell = powershell -Command agent.sources.seqGenSrc.command = for() { ping google.com } agent.sources.seqGenSrc.channels = memoryChannel agent.sinks.loggerSink.type = file_roll agent.sinks.loggerSink.channel = memoryChannel agent.sinks.loggerSink.sink.directory = D:\\TMP\\flu\\ agent.sinks.loggerSink.serializer = text agent.sinks.loggerSink.appendNewline = false agent.sinks.loggerSink.rollInterval = 0 agent.channels.memoryChannel.type = memory agent.channels.memoryChannel.capacity = 100
要运行示例,请转到FLUME_INSTALLATION_PATH并执行
java -Xmx20m -Dlog4j.configuration=file:///%CD%\conf\log4j.properties -cp .\lib\* org.apache.flume.node.Application -f conf\flume-conf.properties -n agent
或者您可以创建在类路径中具有水槽库的Java应用程序,并通过传递相应参数的应用程序调用org.apache.flume.node.Application实例。
如何设置Flume以收集和传输日志?
您可以使用一些脚本从指定位置收集日志
从源代码中获取Flume流,并使用Spark对其进行分析。看一下来自github https://github.com/apache/spark/blob/master/examples/src/main/java/org/apache/spark/examples/streaming/JavaFlumeEventCount.java的代码示例agent.sources.seqGenSrc.shell = powershell -Command agent.sources.seqGenSrc.command = your script here
除了Windows脚本,您还可以启动提供智能日志收集的Java应用程序(在字段中输入“ java path_to_main_class arguments”)。例如,如果文件是实时修改的,则可以使用Apache Commons IO中的Tailer。要配置Flume传输日志信息,请阅读此article
3。
您可以将Apache Kafka用作日志的队列系统。生成日志的系统(例如websever)会将日志发送到Apache KAFKA。然后,您可以使用Apache Storm或Spark流媒体库从KAFKA主题中读取并实时处理日志。
您需要创建日志流,您可以使用Apache Kakfa创建日志流。 kafka集成了风暴和Apache Spark。两者都有其优点和缺点。
对于Storm Kafka集成,请看here
对于Apache Spark Kafka集成,请看here
尽管这是一个古老的问题,但发布了来自Databricks的链接,其中有一篇分步介绍了Spark并涉及许多领域的日志分析的出色文章。
希望这会有所帮助。
您可以将Apache Kafka用作日志的队列系统。生成日志的系统(例如websever)会将日志发送到Apache KAFKA。然后,您可以使用Apache Storm或Spark流媒体库从KAFKA主题中读取并实时处理日志。
尽管这是一个古老的问题,但发布了来自Databricks的链接,其中有一篇分步介绍了Spark并涉及许多领域的日志分析的出色文章。