我正在构建作用于多个流的 Apache Spark 应用程序。
我确实阅读了文档的性能调整部分: http://spark.apache.org/docs/latest/streaming-programming-guide.html#performance-tuning
我没有得到的是:
1) 流式接收器是位于多个工作节点上还是驱动机器?
2)如果接收数据的节点之一发生故障(断电/重启)会发生什么
最佳答案
Are the streaming receivers located on multiple worker nodes or is the driver machine
接收器位于worker 节点上,这些节点负责使用保存数据的源。
What happens if one of the nodes that receives the data fails (power off/restart)
接收器位于工作节点上。工作节点从驱动程序获取它的任务。如果您在客户端模式下运行,则此驱动程序可以位于专用主服务器上;如果您在集群模式下运行,则它可以位于其中一个工作服务器上。如果一个没有运行驱动程序的节点发生故障,驱动程序会将故障节点上保存的分区重新分配给另一个分区,然后该分区将能够从源重新读取数据,并执行额外的操作从故障中恢复所需的处理。
这就是为什么需要 Kafka 或 AWS Kinesis 等可重放源的原因。
关于apache-spark - Spark 流和高可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39510381/