Docker 上部署一主两从Hadoop集群 | [Centos7](上)

简介: 写在前面配置前须知集群规划step0 可能会遇到的问题及解决方式step1 开启docker拉取镜像step2 创建容器step3 免密登录配置1. ip查看2. 设置主机名3. 主机名与ip地址映射4. 免密登录5. 免密登录效果***bug fix1.0 /etc/hosts修改完成后重

写在前面


配置前须知


  1. 请用root用户登录虚拟机,以保证有充分的操作权限
  2. 可以使用第三方终端来连接虚拟机,这样会让我们配置的效率更高
  3. 有良好的心态来应对可能出现的意料之外的问题,有问题可以留言或私信,博主将会第一时间回复
  4. 在中途配置的过程中,尽量不要重启虚拟机,以免配置失效,如果重启,可能需要重新配置/etc/下的文件
  5. 配置过程中的主机名等请自行修改为自己的个人所需信息


第三方终端可以使用Windows自带的cmd,也可以使用之前博主推荐过的Tabby,详见往期博客


集群规划


一主两从

291781ba10314651a6b3b1c0349b4843.png


step0 可能会遇到的问题及解决方式


CentOS7 启动Docker后进入tty命令行界面无法退出的解决方式 链接

CentOS7下 Docker 重启容器后防火墙因重置失效的解决方式  链接


step1 开启docker拉取镜像


Docker 镜像查看:

docker images

d2b0380b389c400eaf3351efb4da253d.png


拉取镜像:

docker pull registry.cn-beijing.aliyuncs.com/jing-studio/centos7-hadoop

进行中:

7b92e9551e974ebcaf3fd99894003dd0.png


结束:

560da8f49d42493598ea5072fa5da432.png


step2 创建容器


DMaster315:

docker run -d --name DMaster315 -h DMaster315 \
 -p 50070:50070 --privileged=true \
registry.cn-beijing.aliyuncs.com/jing-studio/centos7-hadoop /usr/sbin/init

528581a9a2684c058f7d1fa1188dabe1.png


DSlave01-315 && DSlave02-315:

docker run -d --name DSlave01-315 -h DSlave01-315 \
--privileged=true \
registry.cn-beijing.aliyuncs.com/jing-studio/centos7-hadoop /usr/sbin/init
docker run -d --name DSlave02-315 -h DSlave02-315 \
--privileged=true \
registry.cn-beijing.aliyuncs.com/jing-studio/centos7-hadoop /usr/sbin/init

b5a3b2d82e2e4cb5bdb36d329564481b.png


docker images查看:

8fac2d83f5404577bcc6f81325c39626.png


如果说你是直接在虚拟机的终端中操作的命令,可能会遇见跳转到了命令行模式,而没有了图形化界面,可以参考博主的这篇博客


CentOS7 启动Docker后进入tty命令行界面无法退出的解决方式:进入图形化界面


step3 免密登录配置


1. ip查看


如果此时你下载了第三方终端,建议开启三个标签页同时连接虚拟机,并使得三个标签页分别进入docker的三个机器:一个进入DMaster,一个进入DSlave01,另一个进入DSlave02


请先确认容器已经开启(docker ps查看所有已经开启的容器),如果未开启,请用命令docker ps -a查看想要开启的容器的id,然后用命令docker start 容器id来开启

命令:


进入DMaster315,并进入该机器的命令行终端
docker exec -it DMaster315 /bin/bash
进入DSlave01-315,并进入该机器的命令行终端
docker exec -it DSlave01-315 /bin/bash
进入DSlave02-315,并进入该机器的命令行终端
docker exec -it DSlave02-315 /bin/bash


进入容器查看IP:

命令是:ip addr

172.17.0.2/16 DMaster315

31315ecb53fa445fa8707c308622e6ee.png


172.17.0.3/16 DSlave01-315

3dfce6b24fcd4cbfa7186ba2864f027f.png


172.17.0.4/16 DSlave02-315

7f778b3f8c724f44a4e16f6ea6310f39.png


整理一下:

172.17.0.2 DMaster315
172.17.0.3 DSlave01-315
172.17.0.4 DSlave02-315


2. 设置主机名


DMaster315

d97064226a8b453c9df7b84a99b55839.png


vi /etc/sysconfig/network

需要写入:

NETWORKING=yes
HOSTNAME=DMaster315


d70db6abf4d64febbe94ce5758ca7601.png


DSlave01-315

vi /etc/sysconfig/network


ad763350d7514e91b26b70930163ed4a.png


需要写入:

NETWORKING=yes
HOSTNAME=DSlave01-315


86479d81180e4c23967f5a5016c664a3.png


DSlave02-315:

vi /etc/sysconfig/network

4d8b5a361a254fe18bb733d93f90033e.png


需要写入:

NETWORKING=yes
HOSTNAME=DSlave02-315


511204b651dc4afcb4e93f73f28aff1f.png


3. 主机名与ip地址映射


在三个机器上操作

修改/etc/hosts

使得三个机器该文件都有以下三行:

172.17.0.2 DMaster315
172.17.0.3 DSlave01-315
172.17.0.4 DSlave02-315


DMaster315:

2357bce31034404187abb40aa9aeaa60.png


DSlave01-315:

0b21c83452554d10be2a5b5717daf4f5.png


DSlave02-315:

b37427fc27ae471a9ec312cd3a269c23.png


4. 免密登录


安装passwd

yum install passwd

eb7a86a59f0840829c8cdaffb95a6835.png


修改root密码,需要两次输入相同密码

DMaster315修改密码:

770ed1454cea4e4a874837b15738c43a.png


DSlave01-315:

a3679f89fc6a40d7b9ac173752f40e27.png


DSlave02-315:

365ece0adcea4413a81ec4baffb37a61.png


查看各个机器~/.ssh下是否有密钥文件(id_rsa.pub文件)

如果没有需要自己生成,已经有的话,查看三个机器的密钥文件是否相同


  1. 如果相同的话,只需要在三个机器分别连接其他机器


  1. 如果不相同的话,参考本人博客进行配置

查看authorized_keys中是否包含有三个机器的id_rsa.pub


  1. 如果有,便不用追加进入authorized_keys


  1. 如果没有,需要将文件追加进入authorized_keys


  1. 如果和博主一样三个机器均已经含有id_rsa.pub文件,并且authorized_keys 文件中已经含有三个机器的id_rsa.pub文件,可以不必进行任何修改


5. 免密登录效果


DMaster315 ssh 其他机器

19b9a07862114243ae412745a5f71aa0.png


DSlave01-315 ssh 其他机器:

6c18a0a5755243a39342ce5c5551a5fc.png


DSlave02-315 ssh 其他机器:

c80872e3217f4cb98859e6ed6d2a9e8f.png


免密登陆成功


***bug fix1.0 /etc/hosts修改完成后重启容器失效


在配置完/etc/hosts之后,由于一些原因就关闭了虚拟机,再次打开之后发现免密登录失效

查看之后得知,在每次重启之后,/etc/hosts就会重置,因为运行容器是以挂载的方式进行的,所以就会在下次登陆的时候失效:

5e76a1e7dd8d4de2996168b1f6721898.png


可以参考博客

解决方式:

要在三个机器的/etc/hosts中都含有ip和主机名的映射

在三个机器的~/.bashrc中分别添加:

为了方便复制:

是>>追加写,切勿少了一个大于号


# add 2 lines to fix the problem : restart container ,/etc/hosts reset
echo "172.17.0.3 DSlave01-315" >> /etc/hosts
echo "172.17.0.4 DSlave02-315" >> /etc/hosts
echo "172.17.0.2 DMaster315" >> /etc/hosts


Dmaster315:

19df5e3c03424ee99ea4e7177fb1c55d.png


DSlave01-315:

83df3d727802409a8272505e7644a9a6.png


DSlave02-315:

6717a4d7965a4082bbcda6f77d219ba7.png


然后必须要source ~/.bashrc必须在三个机器上均进行source操作




目录
相关文章
|
9月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
3962 4
|
9月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
413 5
|
9月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
2732 8
|
9月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
910 6
|
9月前
|
存储 搜索推荐 数据库
🚀 RAGFlow Docker 部署全流程教程
RAGFlow是开源的下一代RAG系统,融合向量数据库与大模型,支持全文检索、插件化引擎切换,适用于企业知识库、智能客服等场景。支持Docker一键部署,提供轻量与完整版本,助力高效搭建私有化AI问答平台。
7972 8
|
9月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
1188 4