Spark-Shell 及 Spark-Submit
- Spark-Shell
- 说明
- 操作命令
- Spark-Submit
- 说明
- 操作命令
- 常用参数
- 示例
Spark-Shell
说明
spark-shell 是 Spark 自带的交互式 Shell 程序,方便用户进行交互式编程,用户可以在该命令行下可以用 scala 编写 spark 程序,适合学习测试时使用
操作命令
# 直接启动,默认 --master local[*]
spark-shell
# 在本地模拟 N 个线程来运行当前任务
spark-shell --master local[N]
# 使用当前机器上所有可用的资源运行当前的任务
spark-shell --master local[*]
# 在集群上运行当前的任务
spark-shell --master spark://node01:7077,node02:7077
Spark-Submit
说明
spark-submit 命令用来帮我们提交 jar
包给 Spark 集群/YARN
,让 Spark 集群/YARN
去执行
# 查看帮助
SPARK_HOME=/opt/server/spark
${SPARK_HOME}/bin/spark-submit --help
操作命令
① 在本地执行任务
SPARK_HOME=/opt/server/spark
${SPARK_HOME}/bin/spark-submit \
--master local[2] \
--class org.apache.spark.examples.SparkPi \
${SPARK_HOME}/examples/jars/spark-examples_2.11-2.4.5.jar \
10
② 在集群执行任务
SPARK_HOME=/opt/server/spark
${SPARK_HOME}/bin/spark-submit \
--master spark://node1:7077 \
--class org.apache.spark.examples.SparkPi \
${SPARK_HOME}/examples/jars/spark-examples_2.11-2.4.5.jar \
10
SPARK_HOME=/opt/server/spark
${SPARK_HOME}/bin/spark-submit \
--master spark://node1:7077,node2:7077 \
--class org.apache.spark.examples.SparkPi \
${SPARK_HOME}/examples/jars/spark-examples_2.11-2.4.5.jar \
10
常用参数
① 基本参数
# 表示应用运行的模式:本地(Local)、集群(Standalone、YARN、Mesos)
--master
# 在本地 2 个线程来运行当前任务
--master local[2]
# 在 Standalone 集群运行任务
--master spark://node1:7077,node2:7077
# 在 Yarn 集群运行任务
--master yarn
# Driver Program 运行的地方,即应用部署模式,默认为 client,运行在集群则使用 cluster
--deploy-mode cluster
# 表示运行 Spark Application 的类名称
--class org.apache.spark.examples.SparkPi
# 应用运行的名称
--name NAME
# 表示应用的类所依赖的第三方的 JAR 包路径,通常在本地文件系统中,多个 Jar 包使用逗号隔开
--jars JARS
# 表示应用运行时指定的某些参数配置
--conf PROP=VALUE
# 当 value 中的值有空格组成的时候,使用双引号将 key=value 引起来
--conf "PROP=VALUE"
# 动态加载 Spark Applicaiton 运行时的参数
# 第一种方式:属性的值中没有空格
--conf spark.eventLog.enabled=fasle
# 第二种方式:属性的值中有空格,将属性和值统一使用双引号引起来
--conf "spark.executor.extraJavaOptions=-XX:PrintGCDetails -XX:+PrintGCTimeStamps"
② Driver Program 参数
# 指定 Driver Program JVM 进程内存大小,默认值为 1G
--driver-memory MEM
# 表示 Driver 运行 CLASS PATH 路径,使用不多
--driver-class-path
# Standalone 模式中的 --deploy-mode cluster 时默认值为 1
--driver-cores NUM
# Yarn 模式中 --deploy-mode cluster 时默认值为 1
--driver-cores NUM
# Standalone --deploy-mode cluster 时,当 Driver 运行异常失败,可以自己重启
--supervise
③ Executor 参数
# Executor 运行时所需内存大小
--executor-memory MEM
--executor-memory 512m
# Executor 运行的 CPU Cores,默认的情况下,在 Standalone 集群上为 Worker 几点所有可有的 CpuCores,在 YARN 集群下为 1
--executor-cores NUM
# 在 Standalone 集群下,所有的 Executor 的 CPU Cores
--total-executor-cores NUM
# 表示在 YARN 集群下,Executor 的个数,默认值为 2
--num-executors
# 表示 Executor 运行的队列,默认为 default 队列
--queue QUEUE_NAME
示例
本地模式: 8 个线程运行
# 计算圆周率
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[8] \
/opt/server/spark/examples/jars/spark-examples_2.11-2.4.5.jar
Standalone 模式:Driver 运行在客户端
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://node1:7077 \
--executor-memory 20G \
--total-executor-cores 100 \
/path/to/examples.jar \
1000
Standalone 模式:Driver 运行在集群,Driver 运行异常失败,可以自己重启
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://node1:7077 \
--deploy-mode cluster \
--supervise \
--executor-memory 20G \
--total-executor-cores 100 \
/path/to/examples.jar \
1000
Yarn 集群模式
export HADOOP_CONF_DIR=XXX
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \ # can be client for client mode
--executor-memory 20G \
--num-executors 50 \
/path/to/examples.jar \
1000
Standalone 模式:Driver 运行在集群,运行一个 python 程序
./bin/spark-submit \
--master spark://207.184.161.138:7077 \
examples/src/main/python/pi.py \
1000
Mesos集群:Driver 运行在集群上
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master mesos://207.184.161.138:7077 \
--deploy-mode cluster \
--supervise \
--executor-memory 20G \
--total-executor-cores 100 \
http://path/to/examples.jar \
1000
Kubernetes 集群
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master k8s://xx.yy.zz.ww:443 \
--deploy-mode cluster \
--executor-memory 20G \
--num-executors 50 \
http://path/to/examples.jar \
1000