【问题标题】:Aggregate separate Flume streams in Spark在 Spark 中聚合单独的 Flume 流
【发布时间】: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


【解决方案1】:

您可以使用带有客户 ID 作为分区键的 Kafka。因此,Kafka 的基本思想是消息可以同时具有键和值。现在 kafka 保证相同键的所有消息都进入同一个分区(Spark 流理解 Kafka 中分区的概念,并让您有单独的节点处理每个分区),如果您愿意,可以使用 Flume 的 kafka sink 将消息写入 Kafka。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 2016-06-21
    • 2019-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多