Spark 流和高可用性

Spark Streaming and High Availability

我正在构建作用于多个流的 Apache Spark 应用程序。

我确实阅读了文档的性能调整部分: http://spark.apache.org/docs/latest/streaming-programming-guide.html#performance-tuning

我没有得到的是:

1) 流式接收器是位于多个工作节点上还是驱动程序机器?

2)如果接收数据的节点之一发生故障(电源off/restart)会发生什么

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 等可重放源的原因。