【问题标题】:Processing log files: Apache Storm or Spark处理日志文件:Apache Storm 或 Spark
【发布时间】:2016-05-15 06:57:55
【问题描述】:

我需要处理日志文件数据。这是相对微不足道的。我有 4 台服务器,每台服务器上运行 2 个 Web 应用程序,总共有 8 个日志文件。这些会定期轮换。我正在将以下格式的数据写入这些日志文件中

源时间戳:9340398;39048039;930483;3940830

其中数字是数据存储中的标识符。我想设置一个进程来读取这些日志,并且对于每个 id,它将根据其 id 被记录的次数更新计数。它可以是实时的或批处理的。我的数据存储界面语言是 Java。该过程在生产中运行,因此需要健壮,但还需要具有相对简单的架构,以便可维护。我们还运行 zookeeper。

我最初的想法是,只要日志文件在每台服务器上运行 Apache spark 旋转,就批量执行此操作。然而,我随后开始研究 Apache Flume、Kafka 和 Storm 等日志聚合器,但这似乎有点矫枉过正。

鉴于有多种选择,有没有人根据经验对使用哪些工具来处理此问题提出任何好的建议?

【问题讨论】:

  • 也许像logstash 这样的解决方案可以使用?一般来说,这类问题在 SO 上是题外话。
  • 您好,我查看了 Logstash,它似乎更倾向于过滤类型的操作。我同意这个问题不适合 SO 章程。

标签: apache-spark apache-storm logfiles


【解决方案1】:

8 个日志文件似乎不支持任何“大数据”技术。如果您确实想要玩/开始使用这些类型的技术,我建议您从 Spark 和/或 Flink 开始 - 两者都有相对相似的编程模型,两者都可以处理“业务实时”(Flink 更擅长于流,但两者似乎都适用于您的情况)。 Storm 相对死板(难以更改拓扑),并且具有更复杂的编程模型

【讨论】:

  • 我倾向于同意这不是“大数据”问题。我突然想到,即使是小数据问题,也应该有一些相当简单的工具来以稳健的方式处理日志聚合和处理问题。我什至可能不需要日志聚合,因为数据源可以处理来自潜水员应用程序的更新。因此,跟踪日志文件或进行周期批处理可能是解决方案。
  • 你考虑过 ELK 还是 Fluentd?如果你想要纯 JAVA,Flume 可能是另一种,但它没有可靠的尾巴。本机尾部可能在 1.7 版本中可用,但不确定何时。我建议非常简单的 logstash 或 filebeats 配置并转发到 Elastic,您可以在其中进行简单的聚合。
  • 我看过 ELK,但考虑到你所说的,可能会再看一遍。
猜你喜欢
  • 2016-08-18
  • 2015-04-23
  • 2017-01-04
  • 1970-01-01
  • 2022-11-07
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
  • 2015-12-25
相关资源
最近更新 更多