Centos7下搭建spark集群并配置成高可用集群

一、Centos7下搭建spark集群 (分布式运算集群 )
1. 首先看一下我的环境拓扑图
在这里插入图片描述
注意:搭建spark集群,spark版本要与hadoop版本匹配。

2. 查看hadoop版本,命令:hadoop version
在这里插入图片描述
(1) 官网spark下载地址:https://spark.apache.org/downloads.html
在这里插入图片描述
(2) 博主的hadoop为2.7.1版本,所以下载了spark2.4.5版本,可根据你的hadoop版本下载spark对应版本,其他spark版本下载可点击下图箭头所示(下载链接中点开spark版本可查看对应hadoop版本)。下载地址:https://archive.apache.org/dist/spark/
在这里插入图片描述
3. 根据下载的spark,打开压缩包中的jar目录,查看scala版本,博主的是对应scala版本2.11.12
在这里插入图片描述
(1)scala官网下载地址:https://www.scala-lang.org/download/
在这里插入图片描述
(2) 点击对应版本后,找到linux版本,可点击下载,也可右击复制地址,使用wget在linux中下载。
在这里插入图片描述
4.进入到node2节点的/usr/local目录下,使用命令下载scala

(建议手动下载,不使用命令,上传到node2节点中,速度较快)

进入目录命令:cd /usr/local
下载命令(注意自己的版本连接):wget https://downloads.lightbend.com/scala/2.11.12/scala-2.11.12.tgz

(1) 如使用下载命令遇到下方错误(无误可跳过)
在这里插入图片描述

ERROR: cannot verify downloads.lightbend.com's certificate, issued by /C=GB/ST=Greater Manchester/L=Salford/O=Sectigo Limited/CN=Sectigo RSA Domain Validation Secure Server CA’:
  Unable to locally verify the issuer's authority.
To connect to downloads.lightbend.com insecurely, use `--no-check-certificate'.

原因是:无法建立 SSL 连接。(这里报错是因为总是要先检查网站证书,而这样大多数时候会报错,这个时候加上–no-check-certificate就可以解决问题了)
解决方法,使用命令:wget --no-check-certificate https://downloads.lightbend.com/scala/2.11.12/scala-2.11.12.tgz

在这里插入图片描述

(2) 下载完成后,解压并配置环境变量
解压命令:tar -xvf scala-2.11.12.tgz
编辑环境变量:vi /etc/profile

保存后刷新环境变量:source /etc/profile

export SCALA_HOME=/usr/local/scala-2.11.12
:$SCALA_HOME/bin

在这里插入图片描述
(3) 使用scala命令测试一下
测试命令:scala

在这里插入图片描述

5. 安装并配置 spark到node2
(1) 上传spark到node2节点的/usr/local目录下,解压并配置环境变量
解压命令:tar -xvf spark-2.4.5-bin-hadoop2.7.tgz
重命名命令:mv spark-2.4.5-bin-hadoop2.7 spark245
编辑环境变量:vi /etc/profile

保存后刷新环境变量:source /etc/profile

export SPARK_HOME=/usr/local/spark245
:$SPARK_HOME/bin

在这里插入图片描述

(2) 使用spark命令测试一下
测试命令:spark-shell

在这里插入图片描述

6. 配置spark集群( 在node2上将node2设为master节点)

(1) 进入spark的conf目录,将spark-env.sh.template文件复制为spark-env.sh文件
进入目录命令:cd /usr/local/spark245/conf/
复制文件命令:cp spark-env.sh.template spark-env.sh
编辑文件 vi spark-env.sh,在spark-env.sh文件内添加下方配置(注意自己的配置地址)

JAVA_HOME=/usr/software/jdk1.8
SCALA_HOME=/usr/local/scala-2.11.12
HADOOP_HOME=/usr/local/hadoop271
HADOOP_CONF_DIR=/usr/local/hadoop271/etc/hadoop
SPARK_MASTER_IP=node2
SPARK_WORKER_MEMORY=512M
export JAVA_HOME SCALA_HOME HADOOP_HOME HADOOP_CONF_DIR SPARK_MASTER_IP SPARK_WORKER_MEMORY

在这里插入图片描述
(2) 复制并重命名slaves.template文件,命令:cp slaves.template slaves
编辑slaves文件,设置node3 4为spark worker,命令:vi slaves

#localhost
node3
node4

在这里插入图片描述

7. 将 node2上配置好的的 scala 同步到 node3, node4中,并配置好环境变量
(1) 先回到安装目录下:cd /usr/local
同步命令:scp -r scala-2.11.12/ root@node3:/usr/local
同步命令:scp -r scala-2.11.12/ root@node4:/usr/local

(2) 修改node3 node4中的环境变量(scala与node2一致):vi /etc/profile
(3) 保存后刷新环境变量:source /etc/profile

(4) 在node3 node4中使用scala命令测试一下
测试命令:scala

scala退出命令: :quit
在这里插入图片描述

8. 将 node2上配置好的的 spark同步到 node3, node4中,并配置好环境变量
(1) 先回到安装目录下:cd /usr/local
同步命令:scp -r spark245/ root@node3:/usr/local/
同步命令:scp -r spark245/ root@node4:/usr/local/

(2) 修改node3 node4中的环境变量(scala与node2一致):vi /etc/profile
(3) 保存后刷新环境变量:source /etc/profile

(4) 在node3 node4中使用spark命令测试一下
测试命令:spark-shell

spark退出命令: :quit
在这里插入图片描述
9. 确保 hadoop集群先启动, 再进入到 spark安装目录的 sbin下,使用以下命令启动spark集群
(1) zookeeper启动命令:zkServer.sh start
(2) resourcemanager启动命令:yarn-daemon.sh start resourcemanager
(3) hadoop集群启动命令:start-all.sh
(4) 进入spark安装目录的sbin下:cd /usr/local/spark245/sbin/
(5) 启动spark集群:./start-all.sh
在这里插入图片描述
(6) 在node2,3,4上查看进程,应该有以下服务,命令:jps

node2 node3 node4
Master Worker Worker

(7) 查看Master的 spark UI地址(本机ip要做映射):http://node2:8080/

10. 结合 hadoop集群完成一个 WordCount练习(可选)
(1) 在 hadoop集群的任一节点上运行以下命令
查看命令:hadoop fs -ls /
在这里插入图片描述
创建文件命令:hadoop dfs -mkdir /input
在这里插入图片描述
上传文件命令(注意自己hadoop的位置): hadoop fs -put /usr/local/hadoop271/README.txt /input
在这里插入图片描述
(2) 在spark集群的master节点( node2 )上运行 spark-shell
指定集群命令:spark-shell --master spark://node2:7077
在这里插入图片描述
分片计数命令(注意自己hadoop中active的主节点是哪一个):sc.textFile("hdfs://node2:8020/input/README.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://node2:8020/out_test")

如遇到下面的错误,就是虚拟机的的内存不足,解决方法,给虚拟机节点扩容。
可参考我这篇博客:https://blog.csdn.net/weixin_44422604/article/details/107228847

 WARN scheduler.TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources

在这里插入图片描述
分片结束后,可查看hadoop集群上的数据
查看命令:hadoop fs -ls /out_test

查看分片:hadoop fs -cat /out_test/part-0000

二、将spark集群升级成高可用集群(可选步骤)

1. 停止spark master, worker,在spark的sbin目录下运行 ./stop-all.sh

2. 高可用集群拓扑图在这里插入图片描述

3. 将node2中的scala同步到node1上
同步命令:scp -r scala-2.11.12/ root@node1:/usr/local

4. 将node2中的spark同步到node1上
同步命令:scp -r spark245/ root@node1:/usr/local

5. 配置node1节点上的环境变量,跟node2一样 不再赘述
编辑命令:vi /etc/profile
刷新命令:source /etc/profile

在这里插入图片描述

6. 修改node1中spark的conf目录下 spark-env.sh 配置文件
进入目录命令:cd /usr/local/spark245/conf/
修改 spark-env.sh 配置文件(注意自己的配置位置):vi spark-env.sh

JAVA_HOME=/usr/software/jdk1.8
SCALA_HOME=/usr/local/scala-2.11.12
HADOOP_HOME=/usr/local/hadoop271
HADOOP_CONF_DIR=/usr/local/hadoop271/etc/hadoop
#SPARK_MASTER_IP=node2
SPARK_WORKER_MEMORY=1g
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node1:2181,node2:2181,node3:2181 -Dspark.deploy.zookeeper.dir=/spark"
export JAVA_HOME SCALA_HOME HADOOP_HOME HADOOP_CONF_DIR SPARK_MASTER_IP SPARK_WORKER_MEMORY

在这里插入图片描述
7. 修改node1中spark的conf目录下 slaves配置文件
命令:vi slaves

#localhost
node1
node2
node3
node4

在这里插入图片描述

8. 将node1中的spark-env.sh,slaves 同步到 node2, 3,4,同步命令如下

scp -r spark-env.sh/ root@node2:$PWD
scp -r spark-env.sh/ root@node3:$PWD
scp -r spark-env.sh/ root@node4:$PWD
 scp -r slaves root@node2:$PWD
 scp -r slaves root@node3:$PWD
 scp -r slaves root@node4:$PWD

在这里插入图片描述
在这里插入图片描述

9. 在node1的 spark目录下的 sbin 中启动spark集群
命令:./start-all.sh

在这里插入图片描述

10. 在node2的 spark目录下的 sbin 中启动spark的master
命令:./start-master.sh

在这里插入图片描述

11. 访问高可用集群是否成功启动
node1地址:http://node1:8080
在这里插入图片描述
node2地址:http://node2:8080

在这里插入图片描述

到这里,spark集群环境就已经搭建完毕,也可再使用上面的WordCount练习测试一下spark高可用集群

猜你喜欢

转载自blog.csdn.net/weixin_44422604/article/details/107206547
今日推荐