KAFKA生产者可以读取日志文件吗?

时间:2015-04-21 13:52:31

标签: hdfs apache-kafka logfile

我的应用程序的日志文件在服务器上不断累积。我想通过KAFKA将它们转储到HDFS中。我希望Kafka生产者读取日志文件,将它们发送到Kafka代理,然后将这些文件移动到另一个文件夹。可以Kafka生产者读取日志文件?另外,是否可以在Kafka制作人中使用复制逻辑?

3 个答案:

答案 0 :(得分:5)

  • Kafka维护称为主题的类别的消息提要。
  • 我们会调用将消息发布到Kafka主题生成器的进程。
  • 我们会调用订阅主题的流程并处理已发布消息的消费者。
  • Kafka作为一个由一个或多个服务器组成的集群运行,每个服务器都称为代理。

  • 因此,在高层次上,制作人通过网络向Kafka集群发送消息,而Kafka集群又向消费者提供这样的消息:

enter image description here

因此,这不适合您想要隐藏日志文件的应用程序。相反,您可以尝试 flume

Flume是一种分布式,可靠且可用的服务,用于高效收集,聚合和移动大量日志数据。它具有基于流数据流的简单灵活的架构。它具有可靠的可靠性机制和许多故障转移和恢复机制,具有强大的容错性。它使用简单的可扩展数据模型,允许在线分析应用程序。

enter image description here

答案 1 :(得分:2)

如您所知,Apache Kafka是发布 - 订阅消息传递系统。您可以从您的应用程序发送消息。要从您的应用程序发送消息,您可以使用kafka clientskafka 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,然后我们从中运行各种批量分析