我一直在使用Spark + Python完成一些作品,这很棒,但我脑子里有一个问题:
变革和行动的火花工作在哪里? 转换作业是在Spark Master(或Driver)中完成的,而Action(Executors)中的动作作业是完成的,或者两者都在Workers(Executors)中完成
由于
答案 0 :(得分:1)
Workers(aka slaves)正在运行执行程序所在的Spark实例 执行任务。
转换是在worker处执行的,当调用action方法时,计算出的数据将被带回驱动程序。
Spark
中的申请分三步执行:
1.创建RDD图,即RDD的DAG (directed acyclic graph)
来表示整个计算。
2.创建阶段图,即基于RDD图的逻辑执行计划DAG of stages
。通过在随机边界处破坏RDD图来创建阶段。
3.根据计划,schedule and execute
关于工人的任务。
答案 1 :(得分:0)
转换在执行者处运行。
操作在执行程序和驱动程序上运行。大多数工作仍在执行程序中进行,但最终的步骤如减少输出在驱动程序中执行。
答案 2 :(得分:0)
当在RDD上调用任何操作时,Spark会创建DAG并提交给DAG调度程序。
DAG调度程序将运算符划分为任务阶段。阶段由基于输入数据的分区的任务组成。 DAG调度程序将运营商连接在一起。
将阶段传递给任务计划程序。任务计划程序通过集群管理器启动任务。(Spark Standalone / Yarn / Mesos)。任务调度程序不了解阶段的依赖关系。
在Workers(执行者)上执行任务(转换) 当调用action(take / collect)时,它会带回数据 驱动程序。