spark 2.2.0源码解读(四) spark-submit源码解读

spark有四种运行模式,standalone,yarn,mesos,local。
yarn又分为client,cluster两种。系统默认使用client。这两者区别是

  1. client模式中,driver分给一个节点,如果这个节点宕机,则运行失败。
  2. cluster模式,driver分给每个节点,如果一个节点宕机,没有关机,其他节点会顶替上来。所以cluster比client性能好。

测试代码时候经常使用spark-submit提交代码,然后配好各种参数,参数有哪些呢?看一下源码:

 override def toString: String = {
    s"""Parsed arguments:
    |  master                  $master
    |  deployMode              $deployMode
    |  executorMemory          $executorMemory
    |  executorCores           $executorCores
    |  totalExecutorCores      $totalExecutorCores
    |  propertiesFile          $propertiesFile
    |  driverMemory            $driverMemory
    |  driverCores             $driverCores
    |  driverExtraClassPath    $driverExtraClassPath
    |  driverExtraLibraryPath  $driverExtraLibraryPath
    |  driverExtraJavaOptions  $driverExtraJavaOptions
    |  supervise               $supervise
    |  queue                   $queue
    |  numExecutors            $numExecutors
    |  files                   $files
    |  pyFiles                 $pyFiles
    |  archives                $archives
    |  mainClass               $mainClass
    |  primaryResource         $primaryResource
    |  name                    $name
    |  childArgs               [${childArgs.mkString(" ")}]
    |  jars                    $jars
    |  packages                $packages
    |  packagesExclusions      $packagesExclusions
    |  repositories            $repositories
    |  verbose                 $verbose
    |
    |Spark properties used, including those specified through
    | --conf and those from the properties file $propertiesFile:
    |${Utils.redact(sparkProperties).mkString("  ", "\n  ", "\n")}
    """.stripMargin
  }
  1. master:你的提交模式。
  2. deployMode:你得细分提交模式,类似于yarn下的client/cluster。
  3. executorMemory :executor的内存,这个参数根据你节点内存来分配,不能大于单台节点最大内存数。
  4. executorCores :executor分配的核数。
  5. totalExecutorCores:executor分配的总共核数。
  6. propertiesFile:你的配置参数文件,用在–conf后面。
  7. driverMemory:driver的内存数,driver内存和executor内存加起来不能超过单节点的最大内存数。
  8. driverCores:driver的核数。
  9. driverExtraClassPath:额外的classpath,将插入到到驱动器的classpath开头。
  10. driverExtraLibraryPath:driver额外的依赖库。
  11. driverExtraJavaOptions:driver额外的java参数。
  12. supervise:程序在非0退出时候重启程序。
  13. queue: 执行程序jar包的队列,适用于多个程序依次运行。
  14. numExecutors:executor的个数。
  15. files:配置文件。
  16. pyFiles:python写的文件。
  17. archives:要提取到每个执行器的工作目录中的以逗号分隔的存档列表。
  18. mainClass:你执行程序的主类。
  19. childArgs :子参数。
  20. jars:你程序的依赖jar。
  21. packages:你程序的依赖包。可以把依赖jar放到一个包中,这个包称为依赖包。
  22. verbose:打印其他调试输出。
  23. name:你程序的appname。
  24. repositories:打印其他调试输出。以逗号分隔的其他远程存储库列表。

看着参数挺多,其实真正用到的也就不到10个。
坚持就是胜利。
每天进步一点点,积少成多。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值