【头歌实训】Spark 完全分布式的安装和部署

文章目录

第1关: Standalone 分布式集群搭建

任务描述

掌握 Standalone 分布式集群搭建。

相关知识

我们已经掌握了 Spark 单机版安装,那么分布式集群怎么搭建呢? 接下来我们学习 Standalone 分布式集群搭建。

课程视频

如果你需要在本地配置 Spark 完全分布式环境,可以通过查看课程视频来学习。

课程视频《克隆虚拟机与配置网络》

课程视频《配置集群免密登录》

课程视频《Spark配置文件设置》

课程视频《Spark完全分布式总结》

Spark分布式安装模式

Spark 分布式环境安装目前有四种模式:

1.Standalone:Spark 自带的简单群资源管理器,安装较为简单,不需要依赖 Hadoop;

2.Hadoop YARN:使用 YARN 作为集群资源管理,安装需要依赖 Hadoop;

3.Apache Mesos:不常用;

4.Kubernetes:不常用。

本地学习测试我们常用 Standalone 模式,生产环境常使用 YARN 模式。

示例集群信息

以下表格为本教程所用示例集群节点信息:

节点名称 节点角色
master worker,master
slave1 worker
slave2 worker

我们准备了三台虚拟服务器,连接方式如下:

服务器 SSH 密码 ip
master ssh 172.18.0.2 123456 172.18.0.2
slave1 ssh 172.18.0.3 123456 172.18.0.3
slave2 ssh 172.18.0.4 123456 172.18.0.4

第一步我们需要在 evassh 服务器初始化虚拟服务器:

sh 复制代码
cd /home
wrapdocker
ulimit -f 1024000
docker load -i hbase-ssh2_v1.0.tar
docker-compose up -d

注意:请不要在各个虚拟服务器之间进行 ssh 登录,这种操作会导致无法保存配置数据。正确方法是:在虚拟服务器里执行 exit 后回到 evassh 服务器,再按上述方法登录各虚拟服务器。

配置免密登录

Hadoop 集群在启动脚本时,会去启动各个节点,此过程是通过 SSH 去连接的,为了避免启动过程输入密码,需要配置免密登录。

1、分别在 master、slave1、slave 生成密钥,命令如下:

sh 复制代码
ssh-keygen -t rsa

2、 在 master 复制 master、slave1、slave2 的公钥。

sh 复制代码
cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys
ssh root@slave1 cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys
ssh root@slave2 cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys

3、 分别在 slave1、slave2 复制 master 的 authorized_keys 文件。

sh 复制代码
ssh root@master cat ~/.ssh/authorized_keys>> ~/.ssh/authorized_keys

到此,免密已经成功,可以在各个虚拟服务器之间进行 ssh 登录,而不需要输入密码了。

准备Spark安装包

把 evassh 服务器的 /usr/local 目录下的 spark 安装包通过 SCP 命令上传到 master 虚拟服务器的 /usr/local 目录下。

sh 复制代码
scp -r /usr/local/spark-2.3.4-bin-hadoop2.7 root@172.18.0.2:/usr/local

密码为:123456。

配置环境变量

我们将 Spark 的安装目录配置到 /etc/profile 中(在文件末尾添加)。

不要忘了 source /etc/profile。

该步骤所有虚拟服务器节点均可执行。

修改 spark-env.sh 配置文件

首先生成一份 spark-env.sh 文件(master节点):

切换目录到:/usr/local/spark-2.3.4-bin-hadoop2.7/conf 执行命令:mv spark-env.sh.template spark-env.sh

修改 spark-env.sh 文件:

执行命令:vi spark-env.sh,添加以下内容:

sh 复制代码
#指定JAVA安装路径/usr/lib/jvm/jdk1.8.0_111
export JAVA_HOME=java安装路径
#指定SCALA安装位置,非必须配置,可不指定
export SCALA_HOME=scala安装路径
#指定spark master webui 端口,默认是 8080,跟 tomcat 冲突
SPARK_MASTER_WEBUI_PORT=8888
#指定Master节点IP或映射地址
export SPARK_MASTER_IP=master节点IP或映射地址

修改 slaves 文件

首先生成一份 slaves 文件(master节点)。

切换到 Spark 的 conf 目录下, 执行命令: mv slaves.template slaves

修改 slaves 文件, 执行命令: vi slaves 在该文件中加入作为 worker 节点 ip 或映射主机名。

sh 复制代码
master
slave1
slave2

分发安装包

把 master 节点的 spark 安装包分发到 slave1 节点和 slave2 节点(通过 scp 命令)。

sh 复制代码
scp -r spark-2.3.4-bin-hadoop2.7/ root@slave1:/usr/local

启动spark

切换到 master 节点安装目录的 /sbin 目录下 执行命令启动 Spark 集群:./start-all.sh

验证安装

输入 jps 命令查看。 master 节点有以下进程:

sh 复制代码
master
worker

slave1 节点有以下进程:

sh 复制代码
worker

slave2 节点有以下进程:

sh 复制代码
worker

编程要求

请按照步骤小心安装,安装完成后点击测评即可。

测试说明

点击测评后,后台会通过curl http://172.18.0.2:8888/ 命令获取页面,并取其中部分内容来判定你是否安装成功。

预期输出:

html 复制代码
   <li><strong>Alive Workers:</strong> 3</li>

课程视频《 Spark 完全分布式搭建总结》

答案代码

报错问题

docker load -i hbase-ssh2_v1.0.tar 加载的镜像时间较长多等一会;

docker-compose up -d 创建并启动服务器,报错了多试几次(平台的问题) ,直到 master、slave1、slave2 几个服务器节点都启动,都能 ping 通就行,可以通过 docker ps -n 3 看看容器创建几个了;

如果运气不好创建一半的时候挂了 ,出现 /master 已经存在但是 master 服务器还没启动的情况,使用 docker rm master 把它删了重新 docker-compose up -d 创建,或者自己启动 docker start master,slave1、slave2 同理;

注意 :使用 ssh 更换 educoder、master、slave1、slave2 几个服务器节点,没配置 IP 映射直接用 IP 访问。

避免来回切换,直接开四个命令行,在原来 educoder 的基础上再加三个命令行用于 master、slave1、slave2

sh 复制代码
# master
ssh 172.18.0.2
# slave1
ssh 172.18.0.3
# slave2
ssh 172.18.0.4

基本过程

  1. 加载并启动服务器;
  2. 进入 master、slave1、slave2 三个节点配置免密登录;
  3. 进入 educoder 节点将 Spark 文件分发给 master 节点;
  4. 在 master 节点上配置好环境,再将 Spark 文件分发给 slave1、slave2 节点;
  5. 运行 Spark
sh 复制代码
# step 1
cd /home
wrapdocker
ulimit -f 1024000
docker load -i hbase-ssh2_v1.0.tar
docker-compose up -d

# step 2
# 172.18.0.2、172.18.0.3、172.18.0.4, password=123456
ssh-keygen -t rsa # Press Enter three times

# 172.18.0.2
cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys
ssh root@172.18.0.3 cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys
ssh root@172.18.0.4 cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys

# 172.18.0.3、172.18.0.4
ssh root@172.18.0.2 cat ~/.ssh/authorized_keys>> ~/.ssh/authorized_keys

# step 3: educoder
scp -r /usr/local/spark-2.3.4-bin-hadoop2.7 root@172.18.0.2:/usr/local

# step 4: 172.18.0.2
vim /etc/profile

# add
export SPARK_HOME=/usr/local/spark-2.3.4-bin-hadoop2.7
export PATH=$PATH:$SPARK_HOME/bin


source /etc/profile

cd /usr/local/spark-2.3.4-bin-hadoop2.7/conf
cp spark-env.sh.template spark-env.sh
vi spark-env.sh

# add
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_111
export SPARK_MASTER_WEBUI_PORT=8888
export SPARK_MASTER_IP=172.18.0.2


vi slaves

# add(delete localhost if exists)
172.18.0.2
172.18.0.3
172.18.0.4

# step 4: scp spark to slave1 and slave2
scp -r /usr/local/spark-2.3.4-bin-hadoop2.7/ root@172.18.0.3:/usr/local
scp -r /usr/local/spark-2.3.4-bin-hadoop2.7/ root@172.18.0.4:/usr/local

# step 5: start
$SPARK_HOME/sbin/start-all.sh
相关推荐
计算机编程指导师1 小时前
【计算机毕设推荐】基于Hadoop+Spark的公共交通运营数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·数据分析·spark·交通
QYR_112 小时前
机械制造用固体润滑涂层市场分析:2032年全球市场规模预计达8.78亿元,CAGR为6.2%
大数据·人工智能·物联网
数字化顾问2 小时前
(144页PPT)数字化转型汽车企业数智化战略规划(附下载方式)
大数据
智慧物业老杨4 小时前
数字底座,重构小区治理秩序
大数据
计算机编程指导师4 小时前
【计算机毕设选题推荐】基于Hadoop的宫颈癌变进程光谱数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·数据分析·spark·毕业设计·宫颈癌变
Pniubi5 小时前
分布式锁分类讲解
分布式
guhunyihan5 小时前
无代码系统搭建平台,探索恐象 AI 带来的开发新范式
大数据·人工智能
计算机编程指导师5 小时前
【计算机毕设选题推荐】基于Hadoop+Spark的化妆品销售大数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·化妆品
benchmark_cc5 小时前
前复权数据每天可能变化,历史数据库应该覆盖还是保留原始价格?
大数据·python·pandas·量化交易·股票数据·quantdash
计算机编程指导师6 小时前
计算机毕设选题推荐:Hadoop大数据下的个体肥胖健康风险评估与可视化系统源码 毕业设计 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·肥胖健康风险