Apache spark Spark流中的数据接收

Apache spark Spark流中的数据接收,apache-spark,distributed-computing,spark-streaming,Apache Spark,Distributed Computing,Spark Streaming,最近我一直在做Spark Streaming的性能测试。但是有些问题让我很困惑。 在Spark流中,接收器被安排在工作节点上的执行器中运行 集群中有多少个接收器?我可以控制接收器的数量吗 如果不是所有工作节点都运行接收器来接收流数据,那么其他工作节点将不会接收任何数据?在这种情况下,如何保证基于数据局部性的任务调度?是否从运行接收器的节点复制数据 每个DStream只有一个接收器,但您可以创建多个DStream和union将它们作为一个接收器。这就是为什么建议对至少为N(接收器)+1核的集群运行

最近我一直在做Spark Streaming的性能测试。但是有些问题让我很困惑。
在Spark流中,接收器被安排在工作节点上的执行器中运行

  • 集群中有多少个接收器?我可以控制接收器的数量吗
  • 如果不是所有工作节点都运行接收器来接收流数据,那么其他工作节点将不会接收任何数据?在这种情况下,如何保证基于数据局部性的任务调度?是否从运行接收器的节点复制数据
    每个
    DStream
    只有一个接收器,但您可以创建多个
    DStream
    union
    将它们作为一个接收器。这就是为什么建议对至少为
    N
    (接收器)+1核的集群运行
    Spark Streaming
    。一旦数据经过接收部分,它基本上就是一个简单的
    Spark
    应用程序,并且遵循与批处理作业相同的规则。(这就是流式处理被称为微配料的原因)

    谢谢您的回答。如果工作节点上没有正在运行的接收器,是否可以计划运行任务(该节点上没有数据?)?在这种情况下,如何保证数据局部性调度?