Apache spark 使用livy时spark.executor.cores无法生效

Apache spark 使用livy时spark.executor.cores无法生效,apache-spark,core,executor,livy,Apache Spark,Core,Executor,Livy,我正在使用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/

我正在使用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://CoarseGrainedScheduler@10.1.1.81: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_HOME/conf中的spark-defaults.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请求时发生的配置。也就是说,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将生效


我强烈建议您阅读Livy的源代码。我认为Livy几乎没有文档,因此,您可能会遇到许多google无法解决的问题。Livy只是一个中间件,代码量相对较少

可以从3个位置指定spark参数:

位置A:如果您已经在中设置了spark参数 创建对LivyServer的会话post请求,然后 任何配置文件都不能覆盖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将生效


纱线中存在一种限制簇上资源的特性

sudo  vi /etc/hadoop/conf/capacity-scheduler.xml
将属性更改为以下内容

"yarn.scheduler.capacity.resource-calculator": "org.apache.hadoop.yarn.util.resource.DominantResourceCalcul‌​ator"
为了使此属性适用,必须重新启动纱线

 sudo  hadoop-yarn-resourcemanager stop
sudo  hadoop-yarn-resourcemanager start 
重新开始纺纱

 sudo  hadoop-yarn-resourcemanager stop
sudo  hadoop-yarn-resourcemanager start 

纱线中存在一种限制簇上资源的特性

sudo  vi /etc/hadoop/conf/capacity-scheduler.xml
将属性更改为以下内容

"yarn.scheduler.capacity.resource-calculator": "org.apache.hadoop.yarn.util.resource.DominantResourceCalcul‌​ator"
为了使此属性适用,必须重新启动纱线

 sudo  hadoop-yarn-resourcemanager stop
sudo  hadoop-yarn-resourcemanager start 
重新开始纺纱

 sudo  hadoop-yarn-resourcemanager stop
sudo  hadoop-yarn-resourcemanager start 

在livy源代码中,我看到它将读取两个配置文件,livy-client.conf和spark-defaults.conf。livy-client.conf的优先级高于spark-defaults.conf。但是,这不是设置“不生效”的根本原因,因为我还在defaults.conf中设置了设置spark.executor.cores。我想一定有spark.executor.cores的配置。你能在集群中找到一个名为capacity-scheduler.xml的文件吗?在livy源代码中,我看到它将读取两个配置文件,livy-client.conf和spark-defaults.conf。livy-client.conf的优先级高于spark-defaults.conf。但是,这不是设置“不生效”的根本原因,因为我还在defaults.conf中设置了设置spark.executor.cores。我想一定有spark.executor.cores的配置。你能在集群中找到一个名为capacity-scheduler.xml的文件吗?是的,我最后也搜索了源代码-我的问题是HiveMetastore没有在EMR中激活,有几个有趣的地方,比如。因此,B中的一些livy.conf内容似乎故意破坏了C中设置的其他值。是的,我最终也摸索了源代码-我的问题是HiveMetastore在EMR中没有激活,有几个有趣的地方,如。因此,B中的一些livy.conf内容似乎故意破坏了C中设置的其他值。