spark-submit

进入$SPARK_HOME目录,输入bin/spark-submit --help可以得到该命令的使用帮助。

spark-submit 提交参数

--master  MASTER_URL spark://host:port, mesos://host:port, yarn, or local.

--deploy-mode    DEPLOY_MODE          driver运行之处,client运行在本机,cluster运行在集群

--class CLASS_NAME                             应用程序包的要运行的class

--name NAME                                          应用程序名称

--jars JARS                                              用逗号隔开的driver本地jar包列表以及executor类路径

--py-files PY_FILES                                 用逗号隔开的放置在Python应用程序PYTHONPATH上的.zip, .egg, .py文件列表

--files                                                        FILES 用逗号隔开的要放置在每个executor工作目录的文件列表

--properties-file                                         FILE 设置应用程序属性的文件放置位置,默认是conf/spark-defaults.conf

--driver-memory MEM                              driver内存大小,默认512M

--driver-java-options                                 driver的java选项

--driver-library-path                                  driver的库路径Extra library path entries to pass to the driver

--driver-class-path                                    driver的类路径,用--jars 添加的jar包会自动包含在类路径里

--executor-memory MEM                         executor内存大小,默认1G

Spark standalone with cluster deploy mode only:

--driver-cores NUM driver使用内核数,默认为1

--supervise 如果设置了该参数,driver失败是会重启

Spark standalone and Mesos only:

--total-executor-cores NUM executor使用的总核数

YARN-only:

--executor-cores NUM 每个executor使用的内核数,默认为1

--queue QUEUE_NAME 提交应用程序给哪个YARN的队列,默认是default队列

--num-executors NUM 启动的executor数量,默认是2个

--archives ARCHIVES 被每个executor提取到工作目录的档案列表,用逗号隔开

关于以上spark-submit的help信息,有几点需要强调一下:

关于--master --deploy-mode,正常情况下,可以不需要配置--deploy-mode,使用下面的值配置--master就可以了,使用类似 --master spark://host:port --deploy-mode cluster会将driver提交给cluster,然后就将worker给kill的现象。

Master URL                        含义

local                                   使用1个worker线程在本地运行Spark应用程序

local[K]                              使用K个worker线程在本地运行Spark应用程序

local[*]                               使用所有剩余worker线程在本地运行Spark应用程序

spark://HOST:PORT连接到Spark Standalone集群,以便在该集群上运行Spark应用程序

mesos://HOST:PORT连接到Mesos集群,以便在该集群上运行Spark应用程序

yarn-client                         以client方式连接到YARN集群,集群的定位由环境变量HADOOP_CONF_DIR定义,该方式driver在client运行。

yarn-cluster                       以cluster方式连接到YARN集群,集群的定位由环境变量HADOOP_CONF_DIR定义,该方式driver也在集群中运行。

如果要使用--properties-file的话,在--properties-file中定义的属性就不必要在spark-sumbit中再定义了,比如在conf/spark-defaults.conf 定义了spark.master,就可以不使用--master了。关于Spark属性的优先权为:SparkConf方式 > 命令行参数方式 >文件配置方式,具体参见Spark1.0.0属性配置。

和之前的版本不同,Spark1.0.0会将自身的jar包和--jars选项中的jar包自动传给集群。

Spark使用下面几种URI来处理文件的传播:

file:// 使用file://和绝对路径,是由driver的HTTP server来提供文件服务,各个executor从driver上拉回文件。

hdfs:, http:, https:, ftp: executor直接从URL拉回文件

local: executor本地本身存在的文件,不需要拉回;也可以是通过NFS网络共享的文件。

--jars参数,引用第三方依赖的jar 包

特别注意:将所需要的jar包放入自己指定的文件夹,将所依赖的jar包的绝对路径名字使用',' 进行拼接;

echo `ls ~/Document/software/hbase_jar/*.jar` | tr ' ' ','

参数名参数说明

--mastermaster 的地址,提交任务到哪里执行,例如 spark://host:port,  yarn,  local

--deploy-mode 在本地 (client) 启动 driver 或在 cluster 上启动,默认是 client

--class 应用程序的主类,仅针对 java 或 scala 应用

--name 应用程序的名称

--jars 用逗号分隔的本地 jar 包,设置后,这些 jar 将包含在 driver 和 executor 的 classpath 下

--packages 包含在driver 和executor 的 classpath 中的 jar 的 maven 坐标

--exclude-packages 为了避免冲突 而指定不包含的 package

--repositories 远程 repository

--conf PROP=VALUE 指定 spark 配置属性的值,

 例如 -conf spark.executor.extraJavaOptions="-XX:MaxPermSize=256m"

--properties-file 加载的配置文件,默认为 conf/spark-defaults.conf

--driver-memory Driver内存,默认 1G

--driver-java-options 传给 driver 的额外的 Java 选项

--driver-library-path 传给 driver 的额外的库路径

--driver-class-path 传给 driver 的额外的类路径

--driver-cores Driver 的核数,默认是1。在 yarn 或者 standalone 下使用

--executor-memory 每个 executor 的内存,默认是1G

--total-executor-cores 所有 executor 总共的核数。仅仅在 mesos 或者 standalone 下使用

--num-executors 启动的 executor 数量。默认为2。在 yarn 下使用

--executor-core 每个 executor 的核数。在yarn或者standalone下使用

示例:

yuanpei

#!/bin/bash

#=====================

#yarn-client

#=====================

export PYSPARK_PYTHON="./zhx/py3envzh/bin/python" && \

export PYSPARK_DRIVER_PYTHON=`which python3` && \

spark-submit \

--master yarn --deploy-mode client \

--driver-memory 2G --num-executors 5 \

--executor-cores 4 --executor-memory 4g \

--driver-java-options "-XX:MaxPermSize=1024M" \

--conf spark.sql.shuffle.partitions=200 \

--conf spark.sql.files.maxPartitionBytes=268435456 \

--conf spark.sql.files.openCostInBytes=2097152 \

--packages org.mongodb.spark:mongo-spark-connector_2.11:2.3.2 \

--archives /root/zhx/py3envzh.zip#zhx \

--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./zhx/py3envzh/bin/python \

--py-files /root/zhx/dist/yuanpei-0.1-py3.6.egg \

--queue kb_ai \

/root/zhx/yuanpei.py

xingzhi

#!/bin/bash

#=====================

#yarn-client

#=====================

export PYSPARK_PYTHON="./zsk/py3xzenv/bin/python" && \

export PYSPARK_DRIVER_PYTHON=`which python3` && \

spark-submit \

--master yarn --deploy-mode client \

--driver-memory 2G --num-executors 5 \

--executor-cores 4 --executor-memory 6g \

--driver-java-options "-XX:MaxPermSize=1024M" \

--jars $(echo /root/zsk/hbase_jar/*.jar | tr ' ' ',') \

--conf spark.sql.shuffle.partitions=200 \

--conf spark.sql.files.maxPartitionBytes=268435456 \

--conf spark.sql.files.openCostInBytes=2097152 \

--archives /root/zsk/py3xzenv.zip#zsk \

--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./zsk/py3xzenv/bin/python \

--py-files /root/zsk/xingzhi/dist/xingzhi-0.1-py3.6.egg \

--queue kb_ai \

/root/zsk/xingzhi/xingzhi.py \

debug

def init_static(LOGGING):

'''initialize static configuration'''

dictConfig(LOGGING)

os.environ['HADOOP_USER_NAME'] = 'hdfs'

conf = SparkConf()

#conf.addPyFile('/home/hdfs/zsk/site-packages.zip')

#conf.setMaster("local[2]")

#conf.setMaster("yarn")

conf.setAppName('xingzhi_student_stat')

#conf.set('spark.jars.packages', 'org.mongodb.spark:mongo-spark-connector_2.11:2.1.2')

#conf.set("spark.driver.host", "localhost")

conf.set('hive.metastore.uris', 'thrift://10.10.130.93:9083')

#这个是数据库连接语句

conf.set("spark.mongodb.input.uri", "mongodb://kb_dev:[email protected]:27017/test_kboe")

conf.set("spark.mongodb.output.uri", "mongodb://kb_dev:[email protected]:27017/test_kboe")

#ss = SparkSession.builder.getOrCreate()

sc = SparkContext(conf=conf)

#sc.setLogLevel('ALL')

hadoopConf = sc._jsc.hadoopConfiguration()

hadoopConf.set("fs.defaultFS", "hdfs://aiyunxiao")

hadoopConf.set("dfs.nameservices", "aiyunxiao")

hadoopConf.set("dfs.ha.namenodes.aiyunxiao", "nn1,nn2")

hadoopConf.set("dfs.namenode.rpc-address.aiyunxiao.nn1", "10.10.130.91:8020")

hadoopConf.set("dfs.namenode.rpc-address.aiyunxiao.nn2", "10.10.130.92:8020")

hadoopConf.set("dfs.client.failover.proxy.provider.aiyunxiao", "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider")

return sc

anaconda 打包需要用到的python第三方包

例如:pymongo

如果在spark driver 端用到pymongo,需要在diver端安装pymongo

pip3 install pymongo

cluster模式

#!/bin/bash

#=====================

#yarn-client

#=====================

export PYSPARK_PYTHON="./zsk/py3xzenv/bin/python" && \

export PYSPARK_DRIVER_PYTHON=`which python3` && \

spark-submit \

--master yarn \

--deploy-mode cluster \

--driver-memory 2G \

--num-executors 5 \

--executor-cores 4 \

--executor-memory 6g \

--driver-java-options "-XX:MaxPermSize=1024M" \

--jars $(echo /root/xingzhi/hbase_jar/*.jar | tr ' ' ',') \

--conf spark.sql.shuffle.partitions=300 \

--conf spark.sql.files.maxPartitionBytes=268435456 \

--conf spark.sql.files.openCostInBytes=2097152 \

--archives /root/xingzhi/py3zh.zip#zsk \

--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./zsk/py3zh/bin/python \

--py-files /root/xingzhi/conduct_bak/xingzhi/dist/xingzhi-0.1-py3.6.egg \

--queue kb_ai \

/root/xingzhi/conduct_bak/xingzhi/xingzhi.py \

debug

你可能感兴趣的:(spark-submit)