Apache Flume和Apache Flink的区别

11

我需要从某个来源读取数据流(在我的情况下是UDP流,但这并不重要),转换每个记录并将其写入HDFS。

对于这个目的,使用FlumeFlink有什么区别吗?

我知道可以使用自定义拦截器在Flume中转换每个事件。

但是我在Flink上还是新手,所以对我来说它看起来会做同样的事情。

应该选择哪一个更好?性能有差异吗?

请帮忙!

2个回答

12

免责声明: 我是Apache Flink的committer和PMC成员,但我对Apache Flume没有详细了解。

据我所知,将来自各种来源的流数据移到HDFS中是Apache Flume的主要用例之一。它是一个专业工具,我想它应该内置了许多相关功能。我无法评论Flume的性能。

Apache Flink是一款数据流处理平台,比Flume更加通用和功能丰富(例如支持事件时间,高级窗口操作,高级API,容错和有状态应用等等)。使用Flink可以实现和执行许多不同类型的流处理应用程序,包括流分析和CEP。

Flink提供滚动文件接收器以将数据流写入HDFS文件,并允许通过用户定义的函数实现各种自定义行为。然而,它并不是专门用于将数据注入到HDFS中的工具。不要期望在此用例中有很多内置功能。Flink提供非常好的吞吐量和低延迟。

如果您不需要超过简单记录级别的转换,我建议先尝试使用Flume解决您的用例。我希望Flume能够提供一些您需要自己实现的功能,如果您未来预计要进行更高级的流处理,则值得考虑Flink。


10

声明:我是 Apache Flume 的一个提交者,对 Apache Flink 没有详细了解。

对于你所描述的用例,Flume 可能是一个正确的选择。

你可以使用 Exec Source 直到 Netcat UDP Source 被合并到代码库中。

关于转换,很难提供建议,但你可能需要查看 Morphline Interceptor

关于通道,我建议使用 Memory Channel,因为如果源是 UDP,一些可忽略的数据丢失应该是可以接受的。

在 sink 方面,HDFS Sink 可能符合你的需求。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接