1.Spark运行模式
Spark 有很多种模式,最简单就是单机本地模式,还有单机伪分布式模式,复杂的则运行在集群中,目前能很好的运行在 Yarn和 Mesos 中,当然 Spark 还有自带的 Standalone 模式,对于大多数情况 Standalone 模式就足够了,如果企业已经有 Yarn 或者 Mesos 环境,也是很方便部署的。
1.local(本地模式):常用于本地开发测试,本地分为local单线程和local-cluster多线程;
2.standalone(集群模式):典型的Mater/slave模式,不过也能看出Master是有单点故障的;Spark支持ZooKeeper来实现 HA
3.on yarn(集群模式): 运行在 yarn 资源管理器框架之上,由 yarn 负责资源管理,Spark 负责任务调度和计算
4.on mesos(集群模式): 运行在 mesos 资源管理器框架之上,由 mesos 负责资源管理,Spark 负责任务调度和计算
5.on cloud(集群模式):比如 AWS 的 EC2,使用这个模式能很方便的访问 Amazon的 S3;Spark 支持多种分布式存储系统:HDFS 和 S3
2.Spark on yarn安装部署
1.安装 Scala:
(1)版本信息:
hadoop-2.7.3.tar.gz
scala-2.11.8.tgz Spark官方要求 Scala 版本为 2.10.x,注意不要下错版本,我这里下了2.11.8
spark-2.0.2-bin-hadoop2.7.tgz
jdk1.7
(2)修改/etc/hosts文件,无密连接
(3) 解压缩(hadoop用户):
tar -zxvf scala-2.11.8.tgz
(4)修改环境变量sudo vi /etc/profile,添加:
#scala
export SCALA_HOME=/data/scala-2.11.8
export PATH=$PATH:$SCALA_HOME/bin
(5) 使环境变量生效,并验证 scala 是否安装成功
$ source /etc/profile #生效环境变量
$ scala -version #如果打印出如下版本信息,则说明安装成功
Scala code runner version 2.10.4 -- Copyright 2002-2013, LAMP/EPFL
2.安装yarn
已安装
3.安装spark
(1)解压:
tar -zxvf spark-2.0.2-bin-hadoop2.7.tgz
(2)配置 Spark:
cd ~/spark/conf #进入spark配置目录
cp spark-env.sh.template spark-env.sh #从配置模板复制
vi spark-env.sh #添加配置内容
在spark-env.sh末尾添加以下内容(这是我的配置,你可以自行修改):
export SCALA_HOME=/home/spark/workspace/scala-2.10.4
export JAVA_HOME=/home/spark/workspace/jdk1.7.0_75
export HADOOP_HOME=/home/spark/workspace/hadoop-2.6.0
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
SPARK_MASTER_IP=master
SPARK_LOCAL_DIRS=/home/spark/workspace/spark-1.3.0
SPARK_DRIVER_MEMORY=1G
注:在设置Worker进程的CPU个数和内存大小,要注意机器的实际硬件条件,如果配置的超过当前Worker节点的硬件条件,Worker进程会启动失败。
(3)vi slaves在slaves文件下填上slave主机名:
192.168.111.16
192.168.111.17
192.168.111.18
将配置好的spark-1.3.0文件夹分发给所有slaves
scp -r ~/workspace/spark-1.3.0 spark@slave1:~/workspace/
(4)启动Spark:
sbin/start-all.sh
(5) 验证 Spark 是否安装成功:
用jps检查,在 master 上应该有以下几个进程:
$ jps
7949 Jps
7328 SecondaryNameNode
7805 Master
7137 NameNode
7475 ResourceManager
在 slave 上应该有以下几个进程:
$jps
3132 DataNode
3759 Worker
3858 Jps
3231 NodeManager
进入Spark的Web管理页面: http://master:8080
3.运行示例
#本地模式两线程运行
./bin/run-example SparkPi 10 --master local[2]
#Spark Standalone 集群模式运行
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://master:7077 \
lib/spark-examples-1.3.0-hadoop2.4.0.jar \
100
#Spark on YARN 集群上 yarn-cluster 模式运行
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn-cluster \ # can also be `yarn-client`
lib/spark-examples*.jar \
10
注意 Spark on YARN 支持两种运行模式,分别为yarn-cluster和yarn-client,具体的区别可以看这篇博文,从广义上讲,yarn-cluster适用于生产环境;而yarn-client适用于交互和调试,也就是希望快速地看到application的输出。