gpt4 book ai didi

apache-spark - 使用 apache Spark Streaming 进行实时日志处理

转载 作者:行者123 更新时间:2023-12-01 22:54:42 26 4
gpt4 key购买 nike

我想创建一个可以实时读取日志的系统,并使用apache Spark来处理它。我很困惑是否应该使用 kafka 或 Flume 之类的东西将日志传递到 Spark Stream,或者应该使用套接字传递日志。我已经浏览了 Spark Streaming 文档中的示例程序 - Spark stream example 。但如果有人能指导我更好的方法将日志传递到 Spark Stream,我将不胜感激。这对我来说是一个新地盘。

最佳答案

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

1.official site 下载 Apache Flume或按照 here 的说明进行操作

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

有一个启动 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

要运行示例,请转到 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 参数”放入字段中)。例如,如果文件被实时修改,您可以使用 Tailer来自 Apache Commons IO。要配置 Flume 传输日志信息,请阅读此 article

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

关于apache-spark - 使用 apache Spark Streaming 进行实时日志处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28655403/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com