我有一个事件流(我们也可以称之为“消息”,甚至只是“数据”)来自一个基于时间的保留的事件代理。事件代理可以是kafka、amazon kinesis或microsoft event hubs,尽管可以说它是kafka。
我的目标是将这个事件流放入冷藏库;也就是说,通过hadoop/spark存储数据以供将来分析。这意味着我想把这个“闲聊”的事件流转换成hdfs中的“大块”文件。在云环境中,我可能会使用s3或azure存储而不是hdfs。
我也希望我的解决方案是成本效益;例如,使用avro/orc等序列化格式以降低磁盘空间成本。我也像一个至少一次的担保人,一个给定的事件是分散到冷藏库(奖励积分为一次,只有一次)。
我的核心问题是:
人们是如何解决这个问题的?
有没有组件已经处理了这个场景?
我需要自己制定解决方案吗?
至少,他们有什么推荐的模式吗?
2条答案
按热度按时间axr492tv1#
另一种选择是使用带有kafka源(或kafka通道)和hdfs接收器的Flume。hdfs接收器可以配置为以特定的大小或时间滚动。
e37o9pze2#
好吧,我们正在使用Kafka和加缪从Kafka获取数据到hdfs。camus支持avro序列化。你可以在这里找到更多关于加缪和阿夫罗的信息。