spark Standalone ha 集群部署

1:单节点集群部署

准备三台服务器,配置好对应主机的网络IP、主机名称、关闭防火墙、

122、121、120

主机名

master

slaves

cdh101

cdh102

cdh103

用于Worker的Web UI

8080、8081、2181

用于Worker的Web UI

应用程序(Driver和Executor)使用的端口

5050、4040

用于Executor的启动和Driver的回调。

外部服务使用的端口(如Spark History Server

18080

用于Spark History Server的Web UI

主节点(Master)使用的端口

7077

用于Spark master的Web UI和客户端连接。

1.1:基础环境准备

1.1.1:配置host

#会直接修改hostname里面的名字,并且不需要重启

hostnamectl set-hostname cdh101

vim /etc/hosts

192.168.33.122 cdh101

192.168.33.121 cdh102

192.168.33.120 cdh103

#重启网卡,立即生效

sudo /etc/init.d/network restart

1.1.2:配置selinux

#关闭防火墙(生产暂不关闭)

systemctl stop firewalld systemctl disable firewalld

#关闭selinux

vim /etc/selinux/config SELINUX=disabled

1.1.3:ssh免密登录(cdh101节点)

#配置cdh101对cdh101、cdh102、cdh103免密登录

ssh-keygen -t rsa

ssh-copy-id cdh101

ssh-copy-id cdh102

ssh-copy-id cdh103

1.1.4:安装jdk(所有节点)

#将jdk包scp到 剩余节点,分别进行安装jdk

scp -r jdk-8u144-linux-x64.tar.gz cdh102:

scp -r jdk-8u144-linux-x64.tar.gz cdh103:

mkdir -p /usr/java

tar -zxvf jdk-8u144-linux-x64.tar.gz -C /usr/java/

vi /etc/profile export JAVA_HOME=/usr/java/jdk1.8.0_144

export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

source /etc/profile jps

1.2:下载安装包

https://archive.apache.org/dist/spark/spark-2.3.1/

1.3:传包、解压、安装

[root@cdh101 ~]# mkdir -p /opt/spark-ha

[root@cdh101 ~]# tar -zxvf spark-2.3.1-bin-hadoop2.7.tgz -C /opt/spark-ha

1.4:配置环境变量

[root@cdh101 spark-2.3.1-bin-hadoop2.7]# vim /etc/profile

#追加参数 #spark_standalone

export SPARK_HOME=/opt/spark-ha/spark-2.3.1-bin-hadoop2.7 #生效环境变量

1.5:修改配置文件

[root@cdh101 spark-2.3.1-bin-hadoop2.7]# cd conf/

#复制spark-env.sh.template文件并改名,防止修改错误。

[root@cdh101 conf]# cp spark-env.sh.template spark-env.sh

#编辑spark-env.sh文件增加以下配置(vim spark-env.sh)

export SPARK_MASTER_IP=cdh101

#spark集群主节点

export SPARK_MASTER_PORT=7077 #spark集群主节点对应的端口号

export JAVA_HOME=/usr/java/jdk1.8.0_144 #jdk路径

#export SPARK_WORKER_CORES=2 #核数,2个核可以同时执行2个task任务

#export SPARK_WORKER_INSTANCES=1 #每个节点的worker进程

#export SPARK_WORKER_MEMORY=2g #分配的内存

#进入解压缩后路径的conf目录,修改slaves.template文件名为slaves

[root@cdh101 conf]# mv slaves slaves.template

#配置集群host cdh101为主节点

[root@cdh101 conf]# vim slaves cdh101 cdh102 cdh103

1.6:分发安装包

#从节点创建目录

[root@cdh103 ~]# mkdir /opt/spark-ha

[root@cdh102 ~]# mkdir /opt/spark-ha

#创建分发脚本

#!/bin/bash
if [[ $# -lt 1 ]] ;then
    echo no params;
    exit;
fi
p=$1
dir=`dirname  $p`
filename=`basename  $p`
cd $dir
fullpath=`pwd -P .`
user=`root`

echo user = $user
echo fullpath = $fullpath
echo filename = $filename
echo dir = $dir
echo p = $p
for((i=2;i<=3;i=$i+1));do
    echo ==========Slave$i==========
    #rsync -lr $p ${user}@cdh10$i:$fullpath
    scp -r $p ${user}@cdh10$i:$fullpath
done;

#分发安装包

[root@cdh101 spark-ha]# sh xsync.sh spark-2.3.1-bin-hadoop2.7

1.7:启动集群

#启动集群

[root@cdh101 spark-2.3.1-bin-hadoop2.7]# ./sbin/start-all.sh

#停止集群 [root@cdh101 spark-2.3.1-bin-hadoop2.7]# ./sbin/stop-all.sh

2:HA集群部署

所谓的高可用是因为当前集群中的Master节点只有一个,所以会存在单点故障问题。所以为了解决单点故障问题,需要在集群中配置多个Master节点,一旦处于活动状态的Master发生故障时,由备用Master提供服务,保证作业可以继续执行。这里的高可用一般采用Zookeeper 设置

主机名

master

slave1

slave2

部署应用

master,zk,worker

master,zk,worker

zk,worker

2.1:下载安装包

https://archive.apache.org/dist/zookeeper/zookeeper-3.4.12/

2.2:传包、解压、安装

[root@cdh101 ~]# tar -zxvf zookeeper-3.4.12.tar.gz -C /opt/spark-ha/

#目录下创建zkData目录

[root@cdh101 zookeeper-3.4.12]# mkdir zkData

#zkData目录下创建一个myid的文件,在文件中添加与server对应的编号1

[root@cdh101 zookeeper-3.4.12]# cd zkData/ [root@cdh101 zkData]# vim myid

2.3:配置zoo.cfg文件

[root@cdh101 conf]# cp zoo_sample.cfg zoo.cfg #修改数据存储路径配置,增加集群配置 [root@cdh101 conf]# vim zoo.cfg server.1=cdh101:2888:3888 server.2=cdh102:2888:3888 server.3=cdh103:2888:3888

2.4:分发安装包

[root@cdh101 spark-ha]# sh xsync.sh zookeeper-3.4.12/

#分别修改node2、node3在/opt/spark-ha/zookeeper-3.4.12/zkData/myid文件中内容为2、3 [root@cdh102 zookeeper-3.4.12]# vim /opt/spark-ha/zookeeper-3.4.12/zkData/myid [root@cdh103 zookeeper-3.4.12]# vim /opt/spark-ha/zookeeper-3.4.12/zkData/myid

2.5:zk常用命令

#三台服务器分别启动zookeeper

[root@cdh101 zookeeper-3.4.12]# bin/zkServer.sh start #三台服务器分别查看zk状态 [root@cdh101 zookeeper-3.4.12]# bin/zkServer.sh status #三台服务器分别停止zk状态 [root@cdh101 zookeeper-3.4.12]# bin/zkServer.sh stop

2.6:修改配置文件

2.6.1:修改 spark-env.sh 文件添加如下配置

# 注释掉如下内容: #SPARK_MASTER_HOST=cdh101 #SPARK_MASTER_PORT=7077

# 添加上如下内容:

SPARK_MASTER_WEBUI_PORT=8989

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=cdh101:2181,cdh102:2181,cdh103:2181 -Dspark.deploy.zookeeper.dir=/spark"

[root@cdh101 spark-ha]# sh xsync.sh /opt/spark-ha/spark-2.3.1-bin-hadoop2.7/conf/

2.7:启动集群

#启动zk集群

[root@cdh101 zookeeper-3.4.12]# ./bin/zkServer.sh start

[root@cdh102 zookeeper-3.4.12]# ./bin/zkServer.sh start

[root@cdh103 zookeeper-3.4.12]# ./bin/zkServer.sh start

#启动spark集群

[root@cdh101 spark-2.3.1-bin-hadoop2.7]# ./sbin/start-all.sh

#

[root@cdh101 spark-2.3.1-bin-hadoop2.7]# ./sbin/start-history-server.sh

2.8:测试集群

bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://192.168.33.122:7077 ./examples/jars/spark-examples_2.11-2.3.1.jar 10

2.8.1:Web 端查看 Spark的 历史信息

http://cdh101:18080/

2.8.2:下载日志

  • 25
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值