我有一个流式处理流程,它从Kafka读取数据,使用Spark处理它并将数据写入Cassandra。
这将在具有3-5个节点的群集上运行。我的计划是在集群的每个节点上部署spark,kafka和cassandra。
我想尽可能地强制执行数据局部性,并且我的意思是每个Spark节点从Kafka读取仅在该节点上的数据,在本地处理它(没有改组转换在我的管道中),并写入该节点中的 Cassandra 。
所以,我的问题如下:
1)为了将相同的主题存储在多个节点上,我是否需要对Kafka主题进行分区?
2)我是否需要同步(设置为相同)Kafka分区器和Cassandra分区器,以便我确信到达节点X上的Kafka分区的数据肯定会存储在同一节点上的Cassandra中?
3)在Spark管道中还有其他我应该特别注意的事项吗?我正在使用Spark-Cassandra Connector,它应该利用数据局部性(以便每个Spark任务读取存储在该特定节点上的数据)。
任何博客文章或文章都解释了如何做到这一点,我们非常感激。
此致
斯尔詹