Spark-submit参数详解
Posted 十三说IT
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark-submit参数详解相关的知识,希望对你有一定的参考价值。
在完成Spark程序的编写完成后,自然就到了将程序部署到生成上的流程了,其中有一个关键的参数调整就是Spark-submit。
Spark submit看上去是一个简单的将Spark程序提交到Yarn等资源管理矿浆中进行执行,但是在实际的工作中,发现一些多年大数据开发的同事都对这些参数毫无概念,难以置信。这些人在写程序的时候,怎么能不了解原理的情况下就自信到随意使用参数。
参数提交格式:
./bin/spark-submit \
--class<main-class> \
--master<master-url> \
--deploy-mode<deploy-mode> \
--conf <key>=<value> \
... #其他参数
<application-jar> \
[application-arguments]
PS:切记application-jarapplication-arguments一定要位于最后~~我初学的时候,觉得这个顺序无所谓,直接写到--jars的前面,导致后面的参数没有任何效果,还不报错。后面的参数直接被截断不生效了。就这个问题,我花了两天时间去解决。。。羞愧 ~
常用参数简介;
参数名 |
简介 |
class |
spark程序的主类,注意用 全包名+类名 |
master和deploy-mode |
两个参数合起来表名程序提交到哪个资源管理框架,以何种方式部署。 --master:执行资源管理框架,目前CDH和fusioninsight都是使用的YARN。还有一种 是local和local[K].这种是本地run的模式,不会提交到YARN,便于测试使用呢。这两之间的区别,带K的是多K个线程,不带K的是单个线程。如果是*的话就是尽可能多的线程数。 --deploy-mode,分为 client和cluster,默认是client。client是指driver在提交任务的服务器上执行,cluster是driver和exectutor都在集群内执行。 |
executor-memory |
设置执行器的内存 ,具体的设置方法可以看之后的spark提交参数详解 |
executor-cores |
设置执行器的核数 ,具体的设置方法可以看之后的spark提交参数详解 |
Executor-memoryOverheadM |
设置执行器的堆外内存 ,具体的设置方法可以看之后的spark调优方法.执行器的内存=executor-memory+Executor-overheadMemory |
driver-memory |
设置驱动器的内存 ,具体的设置方法可以看之后的spark提交参数详解 |
driver-cores |
设置驱动器的核数 ,具体的设置方法可以看之后的spark提交参数详解 |
driver-memoryOverheadM |
设置driver的堆外内存 ,具体的设置方法可以看之后的spark提交参数详解。driver的内存=driver-memory+driver-overheadMemory |
num-executors |
设置执行器的数量;但是目前CDH和FusionInsight都支持动态分配(dynamic allocat)模式。在这种模式下,无论怎么设置num-executors其实都会被忽略的, |
queue |
执行队列池;通常生产环境都会为特定的租户分配资源池。这个参数便是用于指定跑批租户资源池名称的。 |
Jars |
指定本次程序依赖的jar包;一般来说CDH和FusionInsight都绝大部分的大数据组件包,无需做任务处理,打包时无需打入依赖包。但是一些特殊的包可以通过两种方式引入: 1、把依赖包打入执行程序包,这样会造成包体较大,每次打包上传耗时间表达; 2、不打入依赖包,把依赖包提前传到服务器,再通过jars指令指出依赖包的文件路径 |
具体示例:
# 本地运行程序,用8核
./bin/spark-submit \
--classorg.apache.spark.examples.SparkPi \
--master local[8] \
/path/to/examples.jar \
100
#提交在集群,默认是client模式
./bin/spark-submit \
--classorg.apache.spark.examples.SparkPi \
--masterspark://207.184.161.138:7077 \
--executor-memory 20G \
--total-executor-cores 100 \
/path/to/examples.jar \
1000
# 集群上运行,并设置supervise。只能独立模式和mesos下有效。当driver失败时,自动重试。
./bin/spark-submit\
--class org.apache.spark.examples.SparkPi \
--master spark://207.184.161.138:7077 \
--deploy-mode cluster \
--supervise \
--executor-memory 20G \
--total-executor-cores 100 \
/path/to/examples.jar \
1000
#yarn集群上运行
./bin/spark-submit \
--classorg.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \ # can be client forclient mode
--executor-memory 20G \
--num-executors 50 \
/path/to/examples.jar \
100
以上是关于Spark-submit参数详解的主要内容,如果未能解决你的问题,请参考以下文章