./bin/spark-submit \
--class <main-class> \
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \
[application-arguments]
#参数说明
– master 指定 master 的地址,默认为local. 表示在本机运行.
–class 你的应用的启动类 (如 org.apache.spark.examples.SparkPi)
–deploy-mode 是否发布你的驱动到 worker节点(cluster 模式) 或者作为一个本地客户端 (client 模式) (default: client)
–conf: 任意的 Spark 配置属性, 格式key=value. 如果值包含空格,可以加引号"key=value"
application-jar: 打包好的应用 jar,包含依赖. 这个 URL 在集群中全局可见。 比如hdfs:// 共享存储系统,
如果是 file:// path, 那么所有的节点的path都包含同样的jar
application-arguments: 传给main()方法的参数
–executor-memory 1G 指定每个executor可用内存为1G
–total-executor-cores 6 指定所有executor使用的cpu核数为6个
–executor-cores 表示每个executor使用的 cpu 的核数
yarn-cluster模式下提交任务示例
spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 1 \
/kkb/install/spark/examples/jars/spark-examples_2.11-2.3.3.jar \ 10
如果运行出现错误,可能是虚拟内存不足,可以添加参数
vim yarn-site.xml
<!--容器是否会执行物理内存限制默认为True-->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--容器是否会执行虚拟内存限制 默认为True-->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
2.yarn-client模式下提交任务示例
spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 1 \
/kkb/install/spark/examples/jars/spark-examples_2.11-2.3.3.jar \ 10
yarn-cluster模式和yarn的client的区别?
最大的区别就是Driver端的位置不一样。
总结:
==默认Driver端的内存大小为1G,由参数 spark.driver.memory 设置==
如果某个rdd的数据量超过了Driver端默认的1G内存,对rdd调用collect操作,这里会出现Driver端的内存溢出,所有这个collect操作存在一定的风险,实际开发代码一般不会使用。
==实际企业中一般都会把该参数调大,比如5G/10G等==
可以在代码中修改该参数,如下
new SparkConf().set("spark.driver.memory","5G")
比如说rdd的数据量达到了10G
rdd.collect这个操作非常危险,很有可能出现driver端的内存不足