Spark:spark-submit说明

使用:

$spark-submit --help

Usage: spark-submit [options] <app jar | python file> [app arguments]

举例:

spark-submit --master yarn-cluster \
--class Tkmeans \
--conf spark.yarn.jar=hdfs:///jars/ \
--jars /mnt/tt.jar \
tkmeans_2.10-1.0.jar

以上命令:

  • yarn-cluster模式运行
  • 运行tkmeans_2.10-1.0.jar包内的Tkmeans类
  • 程序运行中依赖的/mnt/tt.jar包用–jars指定,多个包用逗号分隔。

因为这是往yarn集群提交任务,所以在提交时候会将用到的所有依赖jar包上传到hdfs。
--conf spark.yarn.jar=hdfs:///jars/的意思是,hdfs:///jars/目录下有的jar包就不会上传了,加快任务提交时间。

spark1.6是用spark.yarn.jar属性;
spark2.1是用spark.yarn.jars属性,而且后面要跟到文件通配符(而不是目录),具体查看文档。
也可以用以下参数达到如上效果:

--conf spark.yarn.archive=hdfs:///spark-archive/spark-2.3.1-1.1.0-hadoop2.7.zip

zip包是spark的jars目录下所有*.jar文件(不包含目录结构)打包生成,并且此配置(和spark.yarn.jar一样)在程序中加入无效。


往YARN集群提交任务时要设置HADOOP_CONF_DIR环境变量。
一般spark除了会读取系统环境变量外还会读取$SPARK_HOME/conf/spark-env.sh文件中定义的环境变量。
spark会根据$HADOOP_CONF_DIR内的配置文件,了解到相应的YARN集群参数,然后提交任务。

所以提交spark任务的客户端$HADOOP_CONF_DIR下的YARN的配置文件应该与YARN集群的YARN配置文件一致。

需要注意的点有:
--指定的各种选项要在程序jar包前,否则会被忽略。
就像spark-submit --help展示的顺序那样:

spark-submit 选项 jar包 程序参数
posted @ 2019-01-04 17:24  xuejianbest  阅读(1016)  评论(0编辑  收藏  举报