我们的用例是(1)从ActiveMQ中消费数据,(2)通过通用可重用流式传输过程执行转换,然后(3)发布到Kafka。在我们的例子中,步骤(2)将是可重复使用的Spark Streaming' service'这将提供一个event_source_id,用元数据丰富每个记录,然后发布到Kafka。
我看到的直接方法是ActiveMQ - >水槽 - > Spark Streaming - >卡夫卡。
Flume似乎是一个不必要的额外步骤和网络流量。据我所知,Spark Streaming自定义接收器将为摄入hadoop提供更通用的解决方案(步骤1),并且允许更灵活地转换数据,因为它是Spark Streaming本身的固有步骤,其缺点是丢失编码容易。
我很乐意从经验丰富的同行那里获得一些见解,因为我们正处于转型大数据架构的开始阶段;请帮助您提供任何您能想到的建议/见解/替代方案。
谢谢你的世界
答案 0 :(得分:0)
理论上,Flume应该帮助您更好地为HDFS创建更有效的摄取。 如果使用Spark Streaming,取决于你在微量分析中设置的数量,它可能效率不高 - 但如果你的用例需要更多实时,那么我认为你可以直接使用Spark Streaming,是的。
大多数应用程序都希望将原始数据存储在HDFS中,以便能够将其引用回来。 Flume会对此有所帮助 - 但如果你没有这种需要,你可能想跳过它。此外,您可以随时在Spark中保留RDD。
另外,如果你想实时消费,你可能想看看Storm。
您的用例虽然定义较弱,但有关约束的更多信息(数量,时间要求,您希望如何公开此信息等)将有助于获得更具体的答案。
编辑:这里有一个链接,他们从1小时的Flume + Hadoop到5秒循环的另一个 - 仍然使用Flume来帮助提取可扩展性。因此,您可以根据自己的使用情况在那里使用Flume ......我说如果您想要将数据分成例如,请将提取层分开是有意义的。被整合成一个类似lambda的架构。