0

有人建议Hadoop做流式处理,并引用了Flume和Kafka作为例子。

虽然我知道它们可能具有流式处理功能,但我想知道它们是否可以与 Storm/Spark/Flink 等流处理技术处于同一联盟。Kafka 是一个“发布-订阅模型消息系统”,Flume 是一个数据摄取工具。即使它们与 hadoop 交互/集成,它们在技术上是“hadoop”本身的一部分吗?

PS:我知道有一个Hadoop Streaming是完全不同的东西。

4

1 回答 1

1

Hadoop 只有 YARN、HDFS 和 MapReduce。作为一个项目,它不适应(接近)实时摄取或处理。

Hadoop Streaming 是一种用于在文件系统流(标准输入/输出)之间操作数据的工具

Kafka 不仅仅是一个发布/订阅消息队列。

在 Flume 术语中, Kafka Connect本质上是一个 Kafka 通道。存在各种插件,用于从不同的“源”读取,生成到 Kafka,然后存在“接收器”以从 Kafka 消费到数据库或文件系统。从消费者的角度来看,这比在您的基础设施中部署的单个 Flume 代理更具可扩展性。如果您正在寻找将日志摄取到 Kafka 中的所有内容,我个人认为 Filebeat 或 Fluentd 比 Flume 更好(没有 Java 依赖项)。

Kafka Streams是与 Storm、Flink 和 Samza 相媲美的产品,只是不存在对 YARN 或任何集群调度程序的依赖,并且可以在任何兼容 JVM 的应用程序(例如,Java Web 应用程序)中嵌入 Kafka Streams 处理器)。在不引入对某些外部系统的依赖的情况下,您将很难使用 Spark 或 Flink 来做到这一点。

我发现 Flume、NiFi、Storm、Spark 等的唯一好处是它们与 Kafka相得益彰,并且它们具有与Hadoop 兼容的集成以及大数据空间中使用的其他系统,如 Cassandra(参见SMACK堆栈)

因此,要回答这个问题,您需要使用其他工具来允许 Hadoop 处理和存储流数据。

于 2018-04-06T23:40:08.003 回答