Spark 环境部署
==> Spark 集群体系结构
--->
==> Spark安装与部署
Spark 的安装部署有四种模式:Standalone, YARN, Mesos, Amazon EC2, 这里主要讲解Standalone 方式
---> 环境部署准备工作:(此处不作详细讲解)
---- 四台 Linux 主机(虚拟机)
---- 修改主机名
---- 免密码登陆
---- 安装 JDK 环境
---> Spark Standalone 伪分布的部署
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
wget
tar zxf spark
-
2.2
.
1
-
bin
-
hadoop2.
7.tgz
-
C
/
app
cd
/
app
/
spark
-
2.2
.
1
-
bin
-
hadoop2.
7
/
conf
cp spark
-
env.sh.template spark
-
env.sh
cp slaves.template slaves
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
vim spark
-
env.sh
export JAVA_HOME
=
/
app
/
java
/
jdk1.
8.0_102
export SPARK_MASTER_HOST
=
bigdata0
export SPARK_MASTER_PORT
=
7077
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
vim slaves
bigdata0
|
---> Spark Standalone 全分布的部署
---- 环境架构:
| Master | bigdata1 | ||
| Worker | bigdata2 | bigdata3 | bigdata4 |
---- 主节点部署:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
wget http
:
//mirrors.hust.edu.cn/apache/spark/spark-2.2.1/spark-2.2.1-bin-hadoop2.7.tgz
tar zxf spark-
2.2
.
1
-bin-hadoop
2.7
.tgz -C /app
cd /app/spark-
2.2
.
1
-bin-hadoop
2.7
/conf
cp spark-env.sh.template spark-env.sh
cp slaves.template slaves
-----------------------------------------------------------------------------------
vim spark-env.sh
export JAVA
_
HOME
=
/app/java/jdk
1.8
.
0
_
102
export SPARK
_
MASTER
_
HOST
=
bigdata
0
export SPARK
_
MASTER
_
PORT
=
7077
-----------------------------------------------------------------------------------
vim slaves
bigdata
2
bigdata
3
bigdata
4
|
---- 将主节点的安装目录 cp 到其它从节点上即可
|
1
2
3
|
scp -r spark-
2.2
.
1
-bin-hadoop
2.7
/ bigdata
2
:
/app &
scp -r spark-
2.2
.
1
-bin-hadoop
2.7
/ bigdata
3
:
/app &
scp -r spark-
2.2
.
1
-bin-hadoop
2.7
/ bigdata
4
:
/app &
|
---- 启动
|
1
|
start-all.sh
|
==> Spark HA 的实现
Spark HA 有两种实现方式:
---> 基于文件系统的单点故障恢复:只有一个主节点、只能用于开发测试
---- 特点:把 Spark 的运行信息入到一个本地的恢复目录,如果Master死掉,恢复 master 的时候从恢复目录上读取之前的信息
---- 配置:在 standalone 的基础上修改 spark-env.sh 文件,文件内容为:
|
1
2
3
4
5
|
vim spark-env.sh
export JAVA
_
HOME
=
/app/java/jdk
1.8
.
0
_
102
export SPARK
_
MASTER
_
HOST
=
bigdata
0
export SPARK
_
MASTER
_
PORT
=
7077
export SPARK
_
DAEMON
_
JAVA
_
OPTS
=
"-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/data/spark_recovery"
|
---- 参数讲解:
--- spark.deploy.recoveryMode
=> 此参数默认值为:None ,
=> 基于文件系统的单点故障修复: FILESYSTEM
=> 基于 Zookeeper 实现 Standby 的 Master: ZOOKEEPER
--- spark.deploy.recoveryDirectory 指定恢复目录
---- 测试:bin/spark-shell --master spark://bigdata1:7077
---> 基于 ZooKeeper 实现 Standby 的 Master
---- 特点:
| Zookeeper 提供了一个 Leader Election 机制,利用这个机制可以保证虽然集群存在多个 Master, 但是只有一个是Active 的,其他的都是 Standby , 当 Active 的 Master 出现故障时,另外的一个 Standby Master 会被选举出来。 由于集群的信息包括 Worker, Driver 和 Application 的信息都已经持久化到 Zookeeper , 因此在切换的过程中只会影响新的 Job 的提交 , 对于正在进行 Job 没有任何的影响 |
---- 配置:在 standalone 的基础上修改 spark-env.sh 文件,文件内空为:
|
1
2
3
|
vim spark
-
env.sh
export JAVA_HOME
=
/
app
/
java
/
jdk1.
8.0_102
export SPARK_DAEMON_JAVA_OPTS
=
"-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=bigdata2:2181,bigdata3:2181,bigdata4:2181 -Dspark.deploy.zookeeper.dir=/spark"
|
---- 测试:
|
1
2
|
bigdata
1
:
sbin/start-all.sh
bigdata
2
:
sbin/start-master.sh
|
