Apache spark 在Spark中聚合单独的水槽水流

Apache spark 在Spark中聚合单独的水槽水流,apache-spark,flume,spark-streaming,rsyslog,Apache Spark,Flume,Spark Streaming,Rsyslog,我正在研究在我们的设置中进行实时日志处理的能力,我有一个关于如何进行的问题 因此,当前设置或我们打算执行的设置如下: 服务器A通过Rsyslog将日志文件生成到每个客户的文件夹中。 服务器B通过Rsyslog将日志文件生成到每个客户的文件夹中。 服务器A和B都会在每个客户的文件夹中为每个客户生成多达15个日志文件,结构如下所示: /var/log/CUSTOMER/logfile.log 在服务器C上,我们有一个正在运行的Flume接收器,用于侦听来自服务器a和服务器B的Rsyslog tcp

我正在研究在我们的设置中进行实时日志处理的能力,我有一个关于如何进行的问题

因此,当前设置或我们打算执行的设置如下:

服务器A通过Rsyslog将日志文件生成到每个客户的文件夹中。 服务器B通过Rsyslog将日志文件生成到每个客户的文件夹中。 服务器A和B都会在每个客户的文件夹中为每个客户生成多达15个日志文件,结构如下所示:

/var/log/CUSTOMER/logfile.log
在服务器C上,我们有一个正在运行的Flume接收器,用于侦听来自服务器a和服务器B的Rsyslog tcp消息。目前,对于测试,我们只有一个客户一个Flume接收器,但我认为每个客户需要一个Flume接收器

然后,该水槽水槽将这些日志线转发给Spark应用程序,该应用程序应汇总每个客户的结果

现在我的问题是:我如何确保Spark streaming将汇总每个客户的结果?假设每个客户都有自己的水槽水槽,那么我如何确保Spark单独聚合每个水槽流,而不将2个或更多水槽流混合在一起

还是卡夫卡更适合这种情况


如果您有任何见解,我们将不胜感激。

您可以使用带有客户id的Kafka作为分区密钥。卡夫卡的基本思想是,一条信息既有关键,也有价值。现在,kafka保证同一密钥的所有消息都进入同一分区Spark streaming理解kafka中分区的概念,并允许您拥有单独的节点来处理每个分区,如果您愿意,您可以使用flume的kafka接收器将消息写入kafka。

您计划拥有多少客户?活动可用性有多重要?你用这些数据做什么?为了提出架构建议,您确实需要非常好地理解工具和应用程序。目前大约有15个客户,他们可以而且将会增加。事件可用性:应该能够在连接丢失后重新发送。数据将插入数据库以在应用程序中显示。您需要多快的结果?你会有多少消费者?如果是我,我会使用Kafka来管理事件和Storm以进行实时分析。Kafka有非常好的排队功能,你可能想了解一下。这是一个非常好的步行体验。