本文已参与「新人创作礼」活动,一起开启掘金创作之路。
背景
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