为什么spark运行多个进程?

mgdq6dx1  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(346)

最近我有一个Spark的问题。我正在处理小型集群(4个节点),我看到spark正在运行(经过一些更复杂的计算)第二个进程,它在这个节点上导致了一些奇怪的问题,例如:

5/04/22 08:54:37 WARN TaskSetManager: Lost task 2.1 in stage 10.0 (TID 52, hadoop1.itx.pl): java.lang.NoSuchMethodError: clojure.lang.Reflector.invokeNoArgInstanceMember(Ljava/lang/Object;Ljava/lang/String;Z)Ljava/lang/Object;

我不知道问题的原因是什么,但是当我杀死spark worker进程并再次启动它们(只使用一个进程)时,在下一次“克隆”之前,它工作正常。
我有默认的spark env设置,所以spark\u workers应该是1。

qlvxas9a

qlvxas9a1#

您看到的第二个进程是为处理任务而派生的执行器。工作人员本身只执行协调职责,其中一项职责是确保执行器在驱动程序请求时启动并运行。这就是为什么你看到的过程正在重新生成。
有关架构的详细概述,请参阅这个spark文档。
您看到的异常很可能是由类路径问题(缺少库、驱动程序和工作程序之间的版本不匹配)引起的。具体来说,类路径上可能有两个版本的clojure,与本期类似。Clojure1.6中引入了缺少的方法-查看是否使用了旧版本。

相关问题