Skip to the content.

官方文档 : http://livy.incubator.apache.org/docs/latest/rest-api.html

通过livy提交spark job时可以配置的参数,因为是间接提交给spark的,所以并不是所有spark参数都支持

kind :spark, pyspark or sparkr等,这个参数我没用过,官方文档上说现在是可选的,也没什么特别的用处,有想限制提交语法的可以自己看上面官方文档

./bin/spark-submit \     
  --master spark://xxx.xxx.xxx.xxx:xxxx      
  --proxy-user aaa                                     //模拟提交Job的用户     
  --jars                                               //逗号分隔的本地jar包,包含在driver和executor的classpath下     
  --py-files                                           //逗号分隔的”.zip”,”.egg”或者“.py”文件,这些文件放在python app的PYTHONPATH下面     
  --files                                              //逗号分隔的文件,这些文件放在每个executor的工作目录下面     
  --num-executors 50      
  --executor-memory  6G                                //spark.executor.memory  512m   
  --executor-cores 4                                   //spark.executor.cores     
 --total-executor-cores 400                           //standalone default all cores     
  --driver-memory 1G                                   //spark.driver.memory 通常可不设置,默认1G    
  --driver-cores 1                                     //spark.driver.cores仅在standalone集群deploy模式下使用     
  --queue                                              //YARN队列的名称     
  --name     
  --conf \<key\>=\<value\>      

jars : 对应上面 –jars

pyFiles : 对应上面 –py-files

files : 对应上面 –files

driverMemory : 对应driver-memory参数,Driver进程的内存

proxyUser : 对应proxy-user

driverCores :对应spark.driver.cores参数,CPU核数

executorMemory : 对应executor-memory,每个executor进程使用的内存数

executorCores : 对应executor-cores,每个executor进程使用的CPU核数

numExecutors : 对应num-executors,executor个数

archives : Archives to be used in this session

queue : 对应 –queue

name : 对应 –name

conf : 对应 –conf

heartbeatTimeoutInSecond : 心跳超时,单位秒

我用的是LivyClient,虽然是用scala写的,但是没用Scala的client:

  client = new LivyClientBuilder()
    .setURI(new URI(Constants.livyUrl))
    .setConf("numExecutors", "50") //        .setConf("num-executors", "50")
    .setConf("spark.default.parallelism", "500")
    .setConf("spark.dynamicAllocation.enabled", "true")
    .setConf("spark.dynamicAllocation.maxExecutors", "100")
    .setConf("spark.shuffle.service.enabled", "true")
    ...
    .build()

这两种用法都是可以起作用的:.setConf(“numExecutors”, “50”) .setConf(“num-executors”, “50”)
所以,这种情况下,前半部分不看也是可以的
另外,需要注意,有时候不设置”spark.dynamicAllocation.enabled”, “true”,num-executors是不起作用的
以上


微信公众号:

Image