1、Local
单机运行,一般用于开发测试。
2、Yarn
Spark客户端直接连接Yarn,不需要额外构建Spark集群。
3、Standalone
构建一个由Master+Worker构成的Spark集群,Spark运行在集群中。
4、Mesos
Spark客户端直接连接Mesos,不需要额外构建Spark集群。
1、在node01节点解压spark-1.6.3-bin-hadoop2.6.tgz安装包
tar -zxvf spark-1.6.3-bin-hadoop2.6.tgz
2、为了防止spark中的start-all.sh与HDFS中的命令冲突,需要将spark安装包下sbin目录中的start-all.sh
修改为start-1.6.3.sh
mv start-all.sh start-1.6.3.sh
3、配置环境变量
export SPARK_HOME=/opt/software/spark-1.6.3
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin
4、在conf目录下分别修改slave.template
为slave
,spark-env.template
为spark-env.sh
mv slave.template slave
mv spark-env.template spark-env.sh
5、配置slave文件,确定Worker所在的节点
node02
node03
node04
6、配置spark-env.sh文件
#主节点的IP
SPARK_MASTER_IP=7077
#主节点的端口号,用来与worker通信
SPARK_MASTER_PORT=node01
#每一个worker进程所能管理的核数
SPARK_WORKER_CORES=3
#每一个worker进程所能管理的内存数
SPARK_WORKER_MEMORY=2G
#每个节点启动worker的实例数
SPARK_WORKER_INSTANCES=1
#worker的工作目录区
SPARK_WORKER_DIR=自定义的目录
注意:
7、将配置好的spark安装包发送到各个节点上
scp -r spark-1.6.3 root@node2:`pwd`
scp -r spark-1.6.3 root@node3:`pwd`
scp -r spark-1.6.3 root@node4:`pwd`
8、启动Spark
start-1.6.3.sh
spark界面如下:
9、提交Application到集群中,显示如下监控页面
10、计算结果如下
监控页面变化
至此,基于standalone的spark集群搭建完成。
1、切换至/opt/software/spark/spark-1.6.3/conf/
目录下,在spark集群的基础上修改spark-env.sh
配置文件
SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node02:2181,node03:2181,node04:2181 -Dspark.deploy.zookeeper.dir=/spark-1106"
解释:
2、将spark-env.sh
分别发送给node02、node03、node04节点上。
注意:要将node02的SPARK_MASTER_IP
修改为node02,因为要在node02上启动备用Master。
3、在node02、node03、node04节点启动zookeeper
zkServer.sh start
4、在node01节点上启动Spark
start-1.6.3.sh
5、在node02上启动Master
start-master.sh
查看监控页面,node01对应的Master是ALIVE状态
node02对应Master是STANDBY状态
为了测试Master是否可以主备切换,现将node01的Master进程kill,然后观察备用Master是否切换为ALIVE。
此时Spark监控页面node02状态切换至ALIVE状态,说明主备切换完成。