我使用livy-server-0.2来运行spark作业,但是,我无法更改spark.executor.cores的默认设置,它无法生效,而其他设置可以。
它总是使用 1 个核心来启动执行器。
yarn 11893 11889 6 21:08 ? 00:00:01
/opt/jdk1.7.0_80/bin/java -server -XX:OnOutOfMemoryError=kill
%p -Xms1024m -Xmx1024m -Djava.io.tmpdir=/var/lib/hadoop-yarn/cache/yarn/nm-local-dir/usercache/root/appcache/application_1487813931557_0603/container_1487813931557_0603_01_000026/tmp
-Dspark.driver.port=51553
-Dspark.yarn.app.container.log.dir=/var/log/hadoop-yarn/containers/application_1487813931557_0603/container_1487813931557_0603_01_000026
-XX:MaxPermSize=256m org.apache.spark.executor.CoarseGrainedExecutorBackend
--driver-url spark://[email protected]:51553 --executor-id 19
--hostname master01.yscredit.com --cores 1 --app-id application_1487813931557_0603
--user-class-path file:/var/lib/hadoop-yarn/cache/yarn/nm-local-dir/usercache/root/appcache/application_1487813931557_0603/container_1487813931557_0603_01_000026/__app__.jar
这是我的spark-defaults.conf 文件,位于$SPARK_HOME/conf 中
spark.master=yarn
spark.submit.deployMode=cluster
spark.executor.instances=7
spark.executor.cores=6
spark.executor.memoryOverhead=1024
spark.yarn.executor.memoryOverhead=1400
spark.executor.memory=11264
spark.driver.memory=5g
spark.yarn.driver.memoryOverhead=600
spark.speculation=true
spark.yarn.executor.memoryOverhead=1400
有人可以帮助我吗?谢谢!
我强烈建议你阅读Livy源码。我认为Livy的文档很少,所以,你可能会遇到很多google无法解决的问题。Livy只是一个中间件,代码量相对较少。
您可以从 3 个位置指定 Spark 参数:
位置A:如果您已经在中设置了spark参数 您对 LivyServer 的创建会话发布请求,然后是任何 你的post请求时的配置不能被任何配置文件覆盖。也就是说,你的post请求时的配置具有最高优先级;
位置B:然后在
$LIVY_HOME/conf
处,可以设置spark参数
例如 spark-defaults.conf
处的“spark.driver.memory”或
livy-client.conf
;位置C:最后,Livy 还将在以下位置使用配置
$SPARK_HOME/conf/spark-defaults.conf
,但是这里的配置有
最低优先级,也就是说,只进行没有发生的配置
地点 A/B 生效。yarn 中有一个属性限制集群上的资源。
sudo vi /etc/hadoop/conf/capacity-scheduler.xml
将属性更改为以下内容
"yarn.scheduler.capacity.resource-calculator": "org.apache.hadoop.yarn.util.resource.DominantResourceCalculator"
为了使此属性适用,您必须重新启动纱线
sudo hadoop-yarn-resourcemanager stop
重新启动纱线
sudo hadoop-yarn-resourcemanager start