使用apache spark streaming进行实时日志处理

Y0g*_*pta 9 flume apache-kafka apache-spark spark-streaming

我想创建一个系统,我可以实时读取日志,并使用apache spark来处理它.如果我应该使用像kafka或flume这样的东西将日志传递给火花流,或者我应该使用套接字传递日志,我感到很困惑.我已经通过火花流文档中的示例程序 - Spark流示例.但如果有人能指导我将日志传递给火花流,我将不胜感激.它对我来说是一种新的草皮.

Vic*_*rov 4

Apache Flume 可能有助于实时读取日志。Flume 提供日志收集并传输到应用程序,其中 Spark Streaming 用于分析所需信息。

1.从官方网站下载 Apache Flume或按照此处的说明进行操作

2.设置并运行 Flume 从 Flume 安装目录(FLUME_INSTALLATION_PATH\conf)修改 Flume-conf.properties.template,这里需要提供日志源、通道和接收器(输出)。有关设置的更多详细信息请参见此处

有一个启动 Flume 的示例,它从 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
Run Code Online (Sandbox Code Playgroud)

要运行示例,请转到 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
Run Code Online (Sandbox Code Playgroud)

或者您可以创建在类路径中具有 Flume 库的 Java 应用程序,并从应用程序中调用 org.apache.flume.node.Application 实例并传递相应的参数。

如何设置Flume来收集和传输日志?

您可以使用一些脚本从指定位置收集日志

agent.sources.seqGenSrc.shell = powershell -Command
agent.sources.seqGenSrc.command = your script here
Run Code Online (Sandbox Code Playgroud)

除了 Windows 脚本,您还可以启动 java 应用程序(将“java path_to_main_class 参数”放入字段中),该应用程序提供智能日志收集。例如,如果文件被实时修改,您可以使用Apache Commons IO 中的Tailer 。要配置 Flume 传输日志信息,请阅读这篇文章

3.从源代码中获取 Flume 流并使用 Spark 进行分析。查看 github 上的代码示例https://github.com/apache/spark/blob/master/examples/src/main/java/org/apache/spark/examples/streaming/JavaFlumeEventCount.java