Spark驱动程序如何确定,哪些执行程序将用于特定工作?
是数据本地驱动吗?
是否根据该数据节点上数据的可用性来选择执行者?
如果是,那么如果所有数据都存在于单个数据节点上并且该数据节点仅具有足够的资源来运行2个执行程序,那会发生什么,但是在spark-submit命令中,我们使用了 -num-executors 4 。哪个应运行4个执行程序?
火花驱动程序是否会将某些数据从该数据节点复制到其他数据节点,并产生2个执行器(在4个必需的执行器中)?
答案 0 :(得分:-1)
Spark依赖于数据局部性;实际上,DAG调度程序将尝试调度最大任务,以便在与执行程序相同的节点上处理要处理的数据。 spark.locality.wait是一个参数(默认值为3),其本质上意味着如果在最近3秒钟内没有完成节点本地化的任务,那么它将开始执行从其他节点获取数据的任务(按照机架感知原则)。