最近我遇到了Spark问题。我正在研究小型集群(4个节点),我看到火花正在运行(在一些更复杂的计算之后)第二个进程,它在这个节点上引起了一些奇怪的问题,例如:
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;
我不知道问题的原因是什么,但当我杀死火花工人流程并再次启动它们时(仅使用一个流程)它可以正常工作直到下一次"克隆&# 34。
我有默认的spark-env设置,因此SPARK_WORKERS应为1。
答案 0 :(得分:1)
您正在看到的第二个过程是一个执行者来处理您的任务。工作人员本身只执行协调职责,其中一个职责是确保执行人员在司机要求时启动并运行。这就是您正在重新生成的过程重新生成的原因。
有关架构的精彩概述,请参阅this Spark doc。
您看到的异常很可能是由类路径问题引起的(缺少库,驱动程序和工作程序之间的版本不匹配)。具体来说,您的类路径上可能有两个版本的Clojure,类似于this issue。 Clojure 1.6中引入了缺失的方法 - 看看你是否使用旧版本。