Spark参数详解
spark-shell
spark-shell是Spark自带的交互式Shell程序,方便用户进行交互式编程,
用户可以在该命令行下可以用scala编写spark程序
示例
spark-shell可以携带参数
spark-shell --master local[N] 数字N表示在本地模拟N个线程来运行当前任务
spark-shell --master local[*] *表示使用当前机器上所有可用的资源
默认不携带参数就是–master local[*]
spark-shell --master spark://hadoop01:7077,hadoop02:7077 表示运行在集群上
spark-submit
spark-submit命令用来提交jar包给spark集群/YARN
spark-shell交互式编程确实很方便我们进行学习测试,但是在实际中我们一般是使用IDEA开发Spark应用程序打成jar包交给Spark集群/YARN去执行。
spark-submit命令是我们开发时常用的!!!
示例:计算π
cd /export/servers/spark
/export/servers/spark/bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://node01:7077 \
--executor-memory 1g \
--total-executor-cores 2 \
/export/servers/spark/examples/jars/spark-examples_2.11-2.2.0.jar \
10
Master参数形式
- local 本地以一个worker线程运行(例如非并行的情况).
- local[N] 本地以K worker 线程 (理想情况下, N设置为你机器的CPU核数).
- local[*] 本地以本机同样核数的线程运行.
- spark://HOST:PORT 连接到指定的Spark standalone cluster master.
端口是你的master集群配置的端口,缺省值为7077. - mesos://HOST:PORT 连接到指定的Mesos 集群. Port是你配置的mesos端口, 默认5050.
或者使用ZK,格式为 mesos://zk://… - yarn-client 以client模式连接到YARN cluster. 集群的位置基于HADOOP_CONF_DIR 变量找到.
- yarn-cluster 以cluster模式连接到YARN cluster. 集群的位置基于HADOOP_CONF_DIR 变量找到.
其他参数示例
- –master spark://node01:7077 指定 Master 的地址
- –name “appName” 指定程序运行的名称
- –class 程序的main方法所在的类
- –jars xx.jar 程序额外使用的 jar 包
- –driver-memory 512m Driver运行所需要的内存, 默认1g
- –executor-memory 2g 指定每个 executor 可用内存为 2g, 默认1g
- –executor-cores 1 指定每一个 executor 可用的核数
- –total-executor-cores 2 指定整个集群运行任务使用的 cup 核数为 2 个
- –queue default 指定任务的对列
- –deploy-mode 指定运行模式(client/cluster)
注意:
如果 worker 节点的内存不足,那么在启动 spark-submit的时候,就不能为 executor分配超出 worker 可用的内存容量。
如果–executor-cores超过了每个 worker 可用的 cores,任务处于等待状态。
如果–total-executor-cores即使超过可用的 cores,默认使用所有的。以后当集群其他的资源释放之后,就会被该程序所使用。
如果内存或单个 executor 的 cores 不足,启动 spark-submit 就会报错,任务处于等待状态,不能正常执行。