spark流媒体+Kafkavs just kafka

sdnqo3pr  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(324)

为什么和什么时候人们会选择使用Kafka的Spark流?
假设我有一个系统,通过Kafka每秒收到上千条信息。我需要对这些消息应用一些实时分析,并将结果存储在数据库中。
我有两个选择:
创建我自己的worker,读取来自kafka的消息,运行分析算法并将结果存储在db中。在docker时代,只需scale命令就可以轻松地在整个集群中扩展这个worker。我只需要确保我有一个相等或更大的分区数量比我的工人,所有都是好的,我有一个真正的并发性。
用kafka流输入创建一个spark集群。让spark集群进行分析计算,然后存储结果。
第二种选择是更好的选择吗?我觉得这只是额外的开销。

oewdyzsn

oewdyzsn1#

在docker时代,很容易在我的整个集群中扩展这个worker
如果你已经有了可用的基础设施,那么很好,使用它。把你的Kafka库打包在一个最小的容器里,用健康检查,什么不检查,大部分情况下,都可以。添加kafka客户机依赖项+数据库依赖项是您真正需要的,对吗?
如果您没有使用spark、flink等,您将需要更紧密地处理kafka错误、重试、偏移和提交处理,而不是让框架为您处理这些。
我将在这里补充一点,如果您想要kafka+数据库交互,请查看kafka connect api。jdbc、mongo、couchbase、cassandra等已有解决方案。
如果你需要更完整的处理能力,我会选择kafka流,而不是需要单独维护一个spark集群,这就是“kafka”
创建Spark簇
让我们假设您不想保持这一点,或者更确切地说,您无法在yarn、mesos、kubernetes或standalone之间进行选择。如果你运行的是前三个,那么不管怎样,运行docker还是值得一看的。
你完全正确,这是额外的开销,所以我发现这完全取决于你有什么可用的(例如,一个现有的hadoop/yarn集群有空闲的内存资源),或者你愿意在内部支持什么(或者为供应商服务付费,例如。一些托管解决方案中的kafka和databricks)。
另外,spark没有运行最新的kafka客户端库(我相信直到2.4.0更新到kafka 2.0),所以您需要确定这是否是一个卖点。
对于实际的流媒体库,apachebeam或flink可能允许您对kafka执行相同类型的工作负载,而不是spark批处理
一般来说,为了扩展生产者/消费者,您需要某种形式的资源调度程序。安装spark对某些人来说可能并不困难,但是知道如何有效地使用它并调整适当的资源可能会很困难

相关问题