我有一个流式处理过程,它从Kafka读取数据,使用Spark处理它并将数据写入Cassandra .

这将在具有3-5个节点的集群上运行 . 我的计划是在集群的每个节点上部署spark,kafka和cassandra .

我想尽可能地强制执行数据局部性,并且我的意思是每个Spark节点从Kafka读取数据 ONLY on that node ,在本地处理它(我的管道中没有改组转换),并写入 Cassandra in that node .

所以,我的问题如下:

1)为了将相同的主题存储在多个节点上,我是否需要对Kafka主题进行分区?

2)我是否需要同步(设置为相同)Kafka分区器和Cassandra分区器,以便我确信到达节点X上的Kafka分区的数据肯定会存储在同一节点上的Cassandra中?

3)在Spark管道中还有其他我应该特别注意的事项吗?我正在使用Spark-Cassandra Connector,它应该利用数据局部性(以便每个Spark任务读取存储在该特定节点上的数据) .

任何博客文章或文章解释如何做到这一点是非常感谢 .

问候,

斯尔詹