有人建议Hadoop做流媒体,并引用Flume和Kafka作为例子。
虽然我知道他们可能有流媒体功能,但我想知道他们是否可以像Storm / Spark / Flink这样的流处理技术被认为是同一个联盟。 Kafka是一个“发布 - 订阅模型消息系统”,Flume是一种数据提取工具。即使他们与hadoop互动/整合,他们在技术上是'hadoop'本身的一部分吗?
PS:我知道有Hadoop Streaming这是完全不同的事情。
答案 0 :(得分:1)
Hadoop只有YARN,HDFS和MapReduce。作为一个项目,它不适应(接近)实时摄取或处理。
Hadoop Streaming是一种用于在文件系统流(标准输入/输出)之间操作数据的工具
Kafka不仅是一个发布/订阅消息队列。
Kafka Connect 本质上是一个Kafka频道,以Flume术语表示。存在各种插件用于从不同的“源”读取,产生到Kafka,然后存在“接收器”以从Kafka消费到数据库或文件系统。从消费者的角度来看,这比基础架构中部署的单一Flume代理更具可扩展性。如果您正在寻找Kafka的日志摄取,我个人认为Filebeat或Fluentd比Flume更好(没有Java依赖)。
Kafka Streams 是与Storm,Flink和Samza类似的产品,除了对YARN或任何群集调度程序的依赖不存在,并且可以在任何JVM中嵌入Kafka Streams处理器兼容的应用程序(例如,Java Web应用程序)。在没有引入对某些外部系统的依赖的情况下,使用Spark或Flink尝试这样做时会遇到困难。
Flume,NiFi,Storm,Spark等的唯一好处我发现他们赞美 Kafka并且他们有 Hadoop兼容集成以及其他系统像Cassandra这样的BigData空间(参见SMACK
stack)
因此,要回答这个问题,您需要使用其他工具来允许Hadoop处理和存储流数据。