在 Spark 流应用程序中,我可以在集群中的所有机器(而不仅仅是 Master)上并行化接收器吗?这样,Spark 集群中的所有节点都会同时从外部流中读取数据。
问问题
347 次
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 回答