我的应用程序的日志文件在服务器上不断累积。我想通过KAFKA将它们转储到HDFS中。我希望Kafka生产者读取日志文件,将它们发送到Kafka代理,然后将这些文件移动到另一个文件夹。可以Kafka生产者读取日志文件?另外,是否可以在Kafka制作人中使用复制逻辑?
答案 0 :(得分:5)
Kafka作为一个由一个或多个服务器组成的集群运行,每个服务器都称为代理。
因此,在高层次上,制作人通过网络向Kafka集群发送消息,而Kafka集群又向消费者提供这样的消息:
因此,这不适合您想要隐藏日志文件的应用程序。相反,您可以尝试 flume 。
Flume是一种分布式,可靠且可用的服务,用于高效收集,聚合和移动大量日志数据。它具有基于流数据流的简单灵活的架构。它具有可靠的可靠性机制和许多故障转移和恢复机制,具有强大的容错性。它使用简单的可扩展数据模型,允许在线分析应用程序。
答案 1 :(得分:2)
如您所知,Apache Kafka是发布 - 订阅消息传递系统。您可以从您的应用程序发送消息。要从您的应用程序发送消息,您可以使用kafka clients或kafka rest api。
简而言之,您可以使用您的应用程序阅读日志,并将这些日志发送到kafka主题。
要处理这些日志,您可以使用apache storm。您可以为这些目的找到许多集成解决方案。通过使用风暴你可以 添加流处理的任何逻辑。
您可以阅读有关storm kafka integration的许多有用的详细信息。
另外,要将处理过的日志放入hdfs,您可以轻松地将风暴与hadoop集成。您可以查看this repo。
答案 2 :(得分:0)
开发Kafka是为了支持大量事件流,例如实时日志聚合。来自kafka文档
许多人使用Kafka作为日志聚合解决方案的替代品。日志聚合通常从服务器收集物理日志文件,并将它们放在中央位置(可能是文件服务器或HDFS)进行处理。 Kafka抽象出文件的细节,并将日志或事件数据更清晰地抽象为消息流。这允许更低延迟的处理并更容易支持多个数据源和分布式数据消耗
此外,我收到了一些与您的用例
几乎相似的信息from this nice article今天,Kafka已经在LinkedIn的生产中用于许多项目。有离线和在线使用。在离线情况下,我们使用Kafka将所有活动事件提供给我们的数据仓库和Hadoop,然后我们从中运行各种批量分析