Spark大数据任务部署模式全示例

343 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

背景

spark是基于内存计算的通用大数据并行计算框架,是一个快速、通用可扩展的大数据分析引擎。它给出了大一统的软件开发栈,适用于不同场合的分布式场景,如批处理、迭代算法、交互式查询、流处理、机器学习和图计算。

部署说明

提交应用

spark home的bin目录下有个spark-submit脚本是用来在集群模式下启动应用的。通过统一的接口方式可用于所有spark支持的集群管理器,而不需要特别为每种进行格外的配置。

打包应用的依赖

如果你的代码依赖于其它项目,你需要和你的应用打包在一起,以便于分发代码到集群中。对于python应用,可以使用spark-submit的 --py-files参数增加.py,.zip 或者.egg文件,这样可以和你的应用一起分发到集群中。

用spark-submit启动应用

如下所示启动脚本:

./bin/spark-submit
--class
--master
--deploy-mode
--conf =
... # other options
[application-arguments] 其中:

--class: 应用的入口类 (e.g. org.apache.spark.examples.SparkPi) --master: 集群主节点url地址, (e.g. spark://23.195.26.187:7077) --deploy-mode: 默认client模式,即driver运行于当前提交节点,或者cluster模式,dirver部署在某个工作节点 --conf: spark配置属性 deng

各类部署方式

运行本地模式

./bin/spark-submit
--class org.apache.spark.examples.SparkPi
--master local[8]
/path/to/examples.jar
100

这里使用8个cpu去运行,local to run locally with one thread, or local[N] to run locally with N threads.

运行spark standalone 集群,

./bin/spark-submit
--class org.apache.spark.examples.SparkPi
--master spark://207.184.161.138:7077
--executor-memory 20G
--total-executor-cores 100
/path/to/examples.jar
1000

这里 以client模式部署应用

运行spark standalone 集群中以cluster模式进行部署

./bin/spark-submit
--class org.apache.spark.examples.SparkPi
--master spark://207.184.161.138:7077
--deploy-mode cluster
--supervise
--executor-memory 20G
--total-executor-cores 100
/path/to/examples.jar
1000

运行python应用以spark standlone clustr模式

./bin/spark-submit
--master spark://207.184.161.138:7077
examples/src/main/python/pi.py
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

运行mesos集群模式

./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

运行于k8s集群部署模式

./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 Master URLs可以以以下集中方式

Master URL Meaning
local 以一个线程运行本地spark程序
local[K] 以K个工作线程在本地运行spark程序 local[K,F] 以K个工作线程,最多F错误在本地运行spark程序
local[] 以逻辑上尽可能最多的工作线程运行spark程序。
local[
,F] 逻辑上尽可能最多的工作线程,同时F 最大错误运行spark程序。
spark://HOST:PORT 以配置连接spark集群的master 的ip 和端口运行spark程序
spark://HOST1:PORT1,HOST2:PORT2 以高可用的方式连接spark 集群使用
mesos://HOST:PORT meoss集群模式运行
yarn 基于 HADOOP_CONF_DIR 或者YARN_CONF_DIR 的yarn配置运行yarn集群模式。
k8s://HOST:PORT k8s模式运行。
Loading Configuration from a File

其它方式

spark-shell交互式方式

参考文档

spark.apache.org/docs/latest…