大数据计算框架Spark之任务调度
executor除了写shuffle 文件到当地硬盘,还缓存数据到硬盘或内存中。可是,当executor被移除后,缓存到内存中的数据将不行用。为了办理这一题目,默认地缓存数据到内存的executor永久不会被删除。可以通过spark.dynamicAllocation.cachedExecutorIdleTimeout设置这一举动, 2 Application内的资源调治 概述 给定的application内部(SparkContext 实例),假如多个并行的job被提交到差异的线程上,那么这些job可以同时执行。这里的job指的是Spark action及Spark action触发的计较task。Spark scheduler是线程安详的,支持spark application处事于多个哀求。 默认地Spark scheduler以FIFO的次序执行job,每个job被切分为一到多个stage(譬喻,map和reduce),当第一个job的stage的task启动后,这个job优先得到全部可用资源,然后才是第二,三个job......。假如队头的job不必行使整个集群,之后的job就能当即启动。假如队头的job较大,那么之后的job启动耽误会较量明明。 从Spark 0.8开始,也可以通过设置实现行列间的公正调治。Job间的task资源分派回收单轮回的方法。全部job城市得到大抵沟通的集群资源。这就意味着,当有长job存在时,提交的短job可以当即得到资源启动运行而不必比及长job执行完毕。可以配置spark.scheduler.mode为FAIR
公正调治池(也许多个) 公正调治器也支持在池中对job分组并给每个池设置差异的选项。这有助于为更重要的job配置高优先级池,譬喻把每个用户的job分到一组,而且给这些用户相称的资源岂论有几多并行task,而不是给每个job相称的资源。 不必要任何过问,新job会进入默认池,可是可以行使spark.scheduler.pool配置job池。
配置完后,这个线程(通过挪用RDD.save, count, collect)提交的全部job城市行使这个资源池的名称。配置是针对每一个线程的,这样更轻易实现一个线程运行一个用户的多个job。假如想破除与一个线程相干的池,挪用:sc.setLocalProperty("spark.scheduler.pool", null) 池默认举动 默认地每个池都能得到相称的资源(在默认池中每个job都能得到相称的资源),但在每个池内部,job以FIFO 的次序运行。譬喻假如为每一个用户建设一个池,这就意味着每一个用户将得到相称的资源,而且每个用户的查询城市按次序运行而不会呈现其后的查询抢占了前面查询的资源 设置池属性 可以通过修改设置文件改变池属性。每个池都支持三种属性:
挪用SparkConf.set,可以通过XML文件设置池属性:
每个池一个,在XML文件中没有设置的池行使默认设置(调治模式 FIFO, weight 1, minShare 0),譬喻:
【编辑保举】
点赞 0 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |