2016-10-04 5119 views
1

我需要从某个源读取数据流(在我的情况下,它是UDP流,但不应该),转换每条记录并将其写入HDFS。Apache Flume与Apache Flink的区别

使用FlumeFlink是否有此用途?

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

但我是Flink的新人,所以对我来说,Flink看起来也是一样。

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

请帮助!

回答

0

免责声明:我是Apache Flink的提交者和PMC成员。我没有关于Apache Flume的详细知识。

据我所知,将来自各种来源的流数据转移到HDFS是Apache Flume的主要用例之一。这是一个专门的工具,我认为它有很多内置的相关功能。我不能评论Flume的性能。

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

Flink采用滚动文件接收器将数据流写入HDFS文件,并允许通过用户定义的函数实现各种自定义行为。但是,它不是一个专门的数据摄入HDFS的工具。不要指望这个用例有很多内置的功能。 Flink提供非常好的吞吐量和低延迟。

如果你不需要简单的记录级转换,我首先试着用Flume解决你的用例。我希望Flume带来一些您在选择Flink时需要实现的功能。如果您希望在未来进行更先进的流处理,Flink绝对值得一看。

0

声明:我是Apache Flume的提交者。我没有关于Apache Flink的详细知识。

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

您可以使用Exec Source,直到netcat UDP source被提交到代码库。

对于转型而言,很难提供建议,但您可能想看看Morphline Interceptor

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

明智的,HDFS Sink可能涵盖您的需求。