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包 程序参数