【发布时间】:2016-09-28 10:20:05
【问题描述】:
我正在研究在我们的设置中进行一些“实时”日志处理的能力,我有一个关于如何继续的问题。
所以当前的设置(或我们打算这样做)如下:
- 服务器 A 通过 Rsyslog 将日志文件生成到每个客户的文件夹中。
- 服务器 B 通过 Rsyslog 将日志文件生成到每个客户的文件夹中。
服务器 A 和 B 在每个客户的文件夹中最多生成 15 个日志文件(每个客户 1 个),结构如下所示:
/var/log/CUSTOMER/logfile.log
在服务器 C 上,我们有一个正在运行的 Flume 接收器,它监听来自服务器 A 和服务器 B 的 Rsyslog tcp 消息。目前为了测试,我们只有 1 个用于 1 个客户的 Flume sink,但我认为每个客户需要 1 个 Flume sink。
此 Flume 接收器然后将这些日志行转发到 Spark 应用程序,该应用程序应汇总每个客户的结果。
现在我的问题是:如何确保 Spark(流式传输)将汇总每个客户的结果?那么假设每个客户都有自己的 Flume 接收器,那么我如何确保 Spark 分别聚合每个 Flume 流并且不会将 2 个或多个 Flume 流混合在一起?
或者说Kafka更适合这种场景?
我们将不胜感激。
【问题讨论】:
-
您计划拥有多少客户?活动可用性有多重要?你用这些数据做什么?为了提出架构建议,您确实需要非常了解工具和您的应用程序。
-
目前大约有 15 个客户,他们可以(并且会增加)。事件可用性:连接丢失后应该能够重新发送。数据将被插入数据库以在应用程序中显示。
-
您需要多快获得结果?你会有多少消费者?
-
如果是我,我会使用 Kafka 来管理事件并使用 Storm 进行实时分析。
-
Kafka 有非常好的排队功能,您可能想研究一下。这是Kafka and Spark Streaming 的一个非常好的演练。
标签: apache-spark flume spark-streaming rsyslog