Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Spark应用程序杀死执行器_Apache Spark - Fatal编程技术网

Apache spark Spark应用程序杀死执行器

Apache spark Spark应用程序杀死执行器,apache-spark,Apache Spark,我在独立模式下运行spark cluster,并使用spark提交应用程序。在spark UI阶段部分,我发现执行阶段的执行时间很长(>10h,通常为30秒)。阶段有许多失败的任务,错误已重新提交(由于执行器丢失而重新提交)。在“阶段”页面的“按执行者聚合的度量”部分中,存在地址为“代码”的执行者无法找到地址。Spark尝试无限期地重新提交此任务。如果我关闭了这个阶段(我的应用程序会自动重新运行未完成的spark作业),所有这些都会继续正常工作 我还在spark日志中发现了一些奇怪的条目(与阶段

我在独立模式下运行spark cluster,并使用spark提交应用程序。在spark UI阶段部分,我发现执行阶段的执行时间很长(>10h,通常为30秒)。阶段有许多失败的任务,错误
已重新提交(由于执行器丢失而重新提交)
。在“阶段”页面的“按执行者聚合的度量”部分中,存在地址为“代码”的执行者无法找到地址。Spark尝试无限期地重新提交此任务。如果我关闭了这个阶段(我的应用程序会自动重新运行未完成的spark作业),所有这些都会继续正常工作

我还在spark日志中发现了一些奇怪的条目(与阶段执行开始时间相同)

大师:

16/11/19 19:04:32 INFO Master: Application app-20161109161724-0045 requests to kill executors: 0
16/11/19 19:04:36 INFO Master: Launching executor app-20161109161724-0045/1 on worker worker-20161108150133
16/11/19 19:05:03 WARN Master: Got status update for unknown executor app-20161109161724-0045/0
16/11/25 10:05:46 INFO Master: Application app-20161109161724-0045 requests to kill executors: 1
16/11/25 10:05:48 INFO Master: Launching executor app-20161109161724-0045/2 on worker worker-20161108150133
16/11/25 10:06:14 WARN Master: Got status update for unknown executor app-20161109161724-0045/1
工人:

16/11/25 10:06:05 INFO Worker: Asked to kill executor app-20161109161724-0045/1
16/11/25 10:06:08 INFO ExecutorRunner: Runner thread for executor app-20161109161724-0045/1 interrupted
16/11/25 10:06:08 INFO ExecutorRunner: Killing process!
16/11/25 10:06:13 INFO Worker: Executor app-20161109161724-0045/1 finished with state KILLED exitStatus 137
16/11/25 10:06:14 INFO Worker: Asked to launch executor app-20161109161724-0045/2 for app.jar
16/11/25 10:06:17 INFO SecurityManager: Changing view acls to: spark
16/11/25 10:06:17 INFO SecurityManager: Changing modify acls to: spark
16/11/25 10:06:17 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(spark); users with modify permissions: Set(spark)
网络连接没有问题,因为worker、master(上面的日志)和驱动程序运行在同一台机器上


Spark版本1.6.1很可能日志中有趣的部分是:

16/11/25 10:06:13 INFO Worker: Executor app-20161109161724-0045/1 finished with state KILLED exitStatus 137
退出
137
强烈建议内存或cpu内核出现资源问题。 考虑到你可以通过重新运行这个阶段来解决你的问题,可能所有的内核都已经分配好了(也许你还运行了一些Spark shell?)。 这是独立Spark设置(一台主机上的所有设备)的常见问题

无论哪种方式,我都会按顺序尝试以下内容:

  • 提高存储内存分配
    spark.storage.memoryFraction
    以预分配更多内存用于存储,并防止系统在大舞台上随机分配
    137
  • 为应用程序设置较低的核心数,以排除在运行阶段之前预先分配这些核心的情况。您可以通过
    spark.deploy.defaultCores
    执行此操作,将其设置为3甚至2(在英特尔四核上,假设8个vcores)
  • 直接将更多RAM分配给Spark->
    Spark.executor。内存需要增加
  • 可能您在这里遇到了元数据清理问题,在本地部署中也并非闻所未闻,在本例中添加
    export SPARK\u JAVA\u OPTS+=”-Dspark.kryoserializer.buffer.mb=10-Dspark.cleaner.ttl=43200“
    最后,您的
    SPARK env.sh
    可能会通过强制更频繁地运行元数据清理来实现这一目的

  • 在我看来,其中一个应该会起作用。

    阿明的回答很好。我只是想指出对我有用的东西

    当我增加参数时,同样的问题消失了:

    spark.default.parallelism
    从28(我拥有的执行器数量)到84(可用内核数量)

    注意:这不是设置此参数的规则,这仅适用于我

    更新:此方法还得到以下支持:

    有时,您会出现OutOfMemory错误,这不是因为RDD不适合内存,而是因为您的一个任务(例如groupByKey中的一个reduce任务)的工作集太大。Spark的shuffle操作(sortByKey、groupByKey、reduceByKey、join等)在每个任务中构建一个哈希表来执行分组,而分组通常可能很大这里最简单的修复方法是提高并行度,使每个任务的输入集更小。Spark可以有效地支持短至200毫秒的任务,因为它在多个任务中重用一个executor JVM,并且任务启动成本较低,因此,您可以安全地将并行级别提高到集群中的核心数以上


    你能添加引起麻烦的工人的日志吗?如果任务多次失败,可能会杀死一名工作人员。有任何异常发生吗?@YuvalItzchakov worker登录pos-来自执行器丢失的worker的日志。在执行器丢失之前没有异常和失败。“工作人员登录pos-来自丢失执行器的工作人员的日志”不确定这是什么means@YuvalItzchakov抱歉,“工作人员登录帖子(我的问题)”。我在我的问题中添加了工作日志。此工作进程丢失了执行器。@vefthym more memory allocation helpedd您对此有什么理论解释吗?@Cortwave是的,增加分区数会减少每个任务的内存需求(每个分区由一个任务处理)。至于具体的数字,没有,但在我以前的MapReduce经验中,添加更多的分区具有相同的行为,我不断增加分区,直到没有抛出OOM错误(如果适用)。嗨,Armin,你知道spark 2.3.x以后的版本中spark.storage.memoryFraction的等价物是什么吗?此参数已弃用。现在有spark.memory.storageFraction,但其效果与旧设置的1:1不可比。