2

在 Spark 流应用程序中,我可以在集群中的所有机器(而不仅仅是 Master)上并行化接收器吗?这样,Spark 集群中的所有节点都会同时从外部流中读取数据。

4

1 回答 1

1

在集群上部署时,Spark Streaming 将使用spark.cores.max. 我们可以以编程方式创建n接收器,它们将分布在为这项工作保留的核心上,但不能保证均匀分布在物理节点上。

作为使用 kafka 的示例,这里我们创建kafkaParallelism接收器。

@transient val inKafkaList:List[DStream[(K,V)]] =     List.fill(kafkaParallelism) {
KafkaUtils.createStream[K, V, KDecoder, VDecoder](ssc, kafkaConfig,  topics, StorageLevel.MEMORY_AND_DISK_SER)
}
@transient val inKafka = ssc.union(inKafkaList)

请注意,合并生成的 Dstream 以减少生成的任务数量是一种很好的做法。

于 2015-04-25T07:28:36.467 回答