我想创建一个系统,我可以实时读取日志,并使用apache spark来处理它。如果我应该使用像kafka或flume这样的东西将日志传递给火花流,或者我应该使用套接字传递日志,我感到很困惑。我已经在火花流文档中找到了一个示例程序 - Spark stream example。但如果有人能指导我将日志传递给火花流,我将不胜感激。它对我来说是一种新的草皮。
答案 0 :(得分:4)
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
或者您可以在类路径中创建具有flume库的Java应用程序,并从应用程序中调用org.apache.flume.node.Application实例传递相应的参数。
如何设置Flume来收集和运输日志?
您可以使用某些脚本从指定位置收集日志
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。从源代码中获取Flume流并使用Spark进行分析。 看看来自github https://github.com/apache/spark/blob/master/examples/src/main/java/org/apache/spark/examples/streaming/JavaFlumeEventCount.java
的代码示例答案 1 :(得分:2)
您可以将Apache Kafka用作日志的队列系统。生成日志的系统,例如websever,会将日志发送到Apache KAFKA。然后你可以使用apache storm或spark streaming library来实时读取KAFKA主题和进程日志。
您需要创建日志流,您可以使用Apache Kakfa创建日志流。 kafka可以集成风暴和apache火花。两者都有其优点和缺点。
对于Storm Kafka Integration,请查看here
对于Apache Spark Kafka Integration,请查看here
答案 2 :(得分:-1)
虽然这是一个老问题,但是发布了来自Databricks的链接,该链接有一个很好的分步文章,用于Spark的日志分析考虑了很多方面。
希望这有帮助。