2016-05-15 188 views
0

我有处理日志文件数据的要求。这是相对微不足道的。我有4台服务器,每台服务器上运行2个Web应用程序,共计8个日志文件。这些会定期轮换。我写在下面的格式数据转换成这些日志文件处理日志文件:Apache Storm或Spark

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

当数字是在数据存储的标识符。我想设置一个读取这些日志的进程,并且对于每个id,它将根据其id已经被记录的次数来更新计数。它可以是实时的或批量的。我对数据存储的界面语言是Java。该流程在生产中运行,因此需要具有强大的功能,但也需要具有相对简单的体系结构以便维护。我们也运行zookeeper。

我最初的想法是每当在每个服务器上运行Apache Spark的日志文件旋转时都要这样做。然而,我后来看到了像Apache Flume,Kafka和Storm这样的日志加速器,但是这看起来好像过火了。

鉴于众多的选择,任何人都有什么好的建议,根据经验使用哪些工具来处理这个问题?

+0

也许像[logstash](https://www.elastic.co/products/logstash)这样的解决方案可以被使用吗?一般来说,这些问题都是关于SO的话题。 –

+0

嗨,我看了Logstash,它似乎更倾向于过滤类型的操作。我同意这个问题不适合SO章程。 –

回答

1

8个日志文件似乎不保证任何“大数据”技术。如果你确实想要玩这些技术,我建议你从Spark和/或Flink开始 - 两者都有相对相似的编程模型,两者都可以处理“业务实时”(Flink更擅长于流式传输,但两者似乎都适用于您的情况)。风暴是相对刚性的(难以改变拓扑结构)并且有更复杂的编程模型

+0

我倾向于认同它不是一个“大数据”问题。我想到,即使对于小数据问题,也应该有一些合理简单的工具来处理日志聚合和处理问题。我可能甚至不需要日志聚合,因为数据源可以处理来自潜在应用程序的更新。因此,要么尾日志文件或做周期批处理可能是解决方案。 –

+2

你考虑过ELK还是Fluentd?如果你想要纯JAVA,Flume可能是另一个,但它没有可靠的尾巴。本机尾部可能在1.7版本中可用,但不知道何时。我会建议非常简单的logstash或filebeats配置并转发到Elastic,您可以在术语上进行简单聚合。 – YaRiK

+0

我看着ELK,但可能会再看看你说的话。 –