Apache Kafka是一个开放源代码系统,用于实时处理摄取数据。Kafka是耐用,可伸缩且容错的公共预订消息系统。发布-订阅体系结构最初是由LinkedIn开发的,目的是克服大数据批处理中的限制并解决有关数据丢失的问题。Kafka中的体系结构将使信息提供者与信息使用者分离。因此,对于发送和接收的数据,发送应用程序和接收应用程序将不了解彼此。

Apache Kafka将处理传入的数据流,而不管其源和目的地。它是一个分布式流平台,功能类似于企业消息传递系统,但具有独特的功能,并且具有很高的复杂度。使用Kafka,用户可以在信息出现时发布和订阅信息。它允许用户以容错的方式存储数据流。无论是应用程序还是用例,Kafka都可以轻松分解大量数据流,以便在企业Apache Hadoop中进行分析。Kafka还可以通过结合Apache HBase,Apache Storm和Apache Spark系统来呈现流数据,并且可以在各种应用程序域中使用。

简单来说,Kafka的发布-订阅系统由发布者,Kafka集群和消费者/订阅者组成。发布者发布的数据存储为日志。订户还可以充当发布者,反之亦然。订阅者请求订阅,Kafka将数据转发到请求的订阅者。通常,在Kafka集群上,可以有许多不同主题的发布者和订阅者。同样,应用程序既可以充当发布者,也可以充当订阅者。针对某个主题发布的消息可以有多个感兴趣的订阅者;系统为每个感兴趣的订户处理数据。Kafka被广泛使用的一些用例是:

跟踪网站上的活动
流处理
收集和监控指标
日志汇总
Apache Flume是一种工具,用于收集,汇总和从不同来源将数据流传输到集中式数据存储,例如HDFS(Hadoop分布式文件系统)。Flume是高度可靠,可配置和可管理的分布式数据收集服务,旨在将流数据从不同的Web服务器收集到HDFS。它也是一个开源数据收集服务。

Apache Flume基于流数据流并具有灵活的体系结构。Flume提供了用于故障转移和恢复的高度容错,鲁棒和可靠的机制,能够以批处理和流模式收集数据。企业利用 Flume的功能来管理大量数据流,以将其放入HDFS。例如,数据流包括应用程序日志,传感器和机器数据以及社交媒体等。这些数据放入Hadoop后,可以通过在Apache Hive中运行交互式查询来进行分析,或者用作Apache HBase中业务仪表板的实时数据。其中一些功能包括:

收集来自多个来源的数据,并有效地导入HDFS
支持多种源和目标类型
Flume可以轻松定制,可靠,可扩展且具有容错能力
可以将数据存储在任何集中存储(例如HDFS,HBase)中

Apache Kafka和Flume之间的主要区别
这里探讨了Apache Kafka和Flume之间的区别,

Apache Kafka和Flume系统均提供可靠,可扩展的高性能,可轻松处理大量数据。但是,Kafka是更通用的系统,其中多个发布者和订阅者可以共享多个主题。相反,Flume是用于将数据发送到HDFS的专用工具。
Kafka可以支持多个应用程序的数据流,而Flume专门用于Hadoop和大数据分析。
Kafka可以处理和监视分布式系统中的数据,而Flume则从分布式系统中收集数据以将数据存储在集中式数据存储中。
如果配置正确,Apache Kafka和Flume都是高度可靠的,零数据丢失保证。Kafka复制群集中的数据,而Flume不复制事件。因此,当Flume代理崩溃时,对通道中那些事件的访问将丢失,直到磁盘恢复为止。另一方面,即使单点故障,Kafka仍可提供数据。
Kafka支持大量的发布者和订阅者以及多个应用程序。另一方面,Flume支持大量的源和目标类型集,以将数据放置在Hadoop上。