文章目录
第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 模式。
示例集群信息
以下表格为本教程所用示例集群节点信息:
节点名称节点角色masterworker,masterslave1workerslave2worker
我们准备了三台虚拟服务器,连接方式如下:
服务器SSH密码ipmasterssh 172.18.0.2123456172.18.0.2slave1ssh 172.18.0.3123456172.18.0.3slave2ssh 172.18.0.4123456172.18.0.4
第一步我们需要在 evassh 服务器初始化虚拟服务器:
cd /home
wrapdocker
ulimit-f1024000docker load -i hbase-ssh2_v1.0.tar
docker-compose up -d
注意:请不要在各个虚拟服务器之间进行 ssh 登录,这种操作会导致无法保存配置数据。正确方法是:在虚拟服务器里执行 exit 后回到 evassh 服务器,再按上述方法登录各虚拟服务器。
配置免密登录
Hadoop 集群在启动脚本时,会去启动各个节点,此过程是通过 SSH 去连接的,为了避免启动过程输入密码,需要配置免密登录。
1、分别在 master、slave1、slave 生成密钥,命令如下:
ssh-keygen -t rsa
2、 在 master 复制 master、slave1、slave2 的公钥。
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 文件。
ssh root@master cat ~/.ssh/authorized_keys>> ~/.ssh/authorized_keys
到此,免密已经成功,可以在各个虚拟服务器之间进行 ssh 登录,而不需要输入密码了。
准备Spark安装包
把 evassh 服务器的 /usr/local 目录下的 spark 安装包通过 SCP 命令上传到 master 虚拟服务器的 /usr/local 目录下。
scp-r /usr/local/spark-2.3.4-bin-hadoop2.7 [email protected]:/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
,添加以下内容:
#指定JAVA安装路径/usr/lib/jvm/jdk1.8.0_111exportJAVA_HOME=java安装路径
#指定SCALA安装位置,非必须配置,可不指定exportSCALA_HOME=scala安装路径
#指定spark master webui 端口,默认是 8080,跟 tomcat 冲突SPARK_MASTER_WEBUI_PORT=8888#指定Master节点IP或映射地址exportSPARK_MASTER_IP=master节点IP或映射地址
修改 slaves 文件
首先生成一份 slaves 文件(master节点)。
切换到 Spark 的 conf 目录下, 执行命令:
mv slaves.template slaves
修改 slaves 文件, 执行命令:
vi slaves
在该文件中加入作为 worker 节点 ip 或映射主机名。
master
slave1
slave2
分发安装包
把 master 节点的 spark 安装包分发到 slave1 节点和 slave2 节点(通过 scp 命令)。
scp-r spark-2.3.4-bin-hadoop2.7/ root@slave1:/usr/local
启动spark
切换到 master 节点安装目录的 /sbin 目录下 执行命令启动 Spark 集群:
./start-all.sh
验证安装
输入 jps 命令查看。 master 节点有以下进程:
master
worker
slave1 节点有以下进程:
worker
slave2 节点有以下进程:
worker
编程要求
请按照步骤小心安装,安装完成后点击测评即可。
测试说明
点击测评后,后台会通过
curl http://172.18.0.2:8888/
命令获取页面,并取其中部分内容来判定你是否安装成功。
预期输出:
<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
**
# masterssh172.18.0.2
# slave1ssh172.18.0.3
# slave2ssh172.18.0.4
基本过程
- 加载并启动服务器;
- 进入
master、slave1、slave2
三个节点配置免密登录; - 进入
educoder
节点将Spark
文件分发给master
节点; - 在
master
节点上配置好环境,再将Spark
文件分发给slave1、slave2
节点; - 运行
Spark
# step 1cd /home
wrapdocker
ulimit-f1024000docker 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.2cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys
ssh [email protected] cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys
ssh [email protected] cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys
# 172.18.0.3、172.18.0.4ssh [email protected] cat ~/.ssh/authorized_keys>> ~/.ssh/authorized_keys
# step 3: educoderscp-r /usr/local/spark-2.3.4-bin-hadoop2.7 [email protected]:/usr/local
# step 4: 172.18.0.2vim /etc/profile
# addexportSPARK_HOME=/usr/local/spark-2.3.4-bin-hadoop2.7
exportPATH=$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
# addexportJAVA_HOME=/usr/lib/jvm/jdk1.8.0_111
exportSPARK_MASTER_WEBUI_PORT=8888exportSPARK_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 slave2scp-r /usr/local/spark-2.3.4-bin-hadoop2.7/ [email protected]:/usr/local
scp-r /usr/local/spark-2.3.4-bin-hadoop2.7/ [email protected]:/usr/local
# step 5: start$SPARK_HOME/sbin/start-all.sh
版权归原作者 撕得失败的标签 所有, 如有侵权,请联系我们删除。