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

说明

apache.org

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