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操作




目录
相关文章
|
5天前
|
消息中间件 监控 RocketMQ
Docker部署RocketMQ5.2.0集群
本文详细介绍了如何使用Docker和Docker Compose部署RocketMQ 5.2.0集群。通过创建配置文件、启动集群和验证容器状态,您可以快速搭建起一个RocketMQ集群环境。希望本文能够帮助您更好地理解和应用RocketMQ,提高消息中间件的部署和管理效率。
149 91
|
6天前
|
存储 NoSQL Redis
Docker 部署 Redis
在使用 Docker 部署 Redis 时,为实现数据持久化,需正确挂载容器内的数据目录到宿主机。推荐命令如下: ``` docker run -d --name redis -v /mnt/data/redis:/data -p 6379:6379 redis ``` 该命令将宿主机的 `/mnt/data/redis` 目录挂载到容器的 `/data` 目录,确保 Redis 数据持久化。此路径更通用,适合大多数场景。避免使用不匹配的挂载路径,如 `/var/lib/redis` 或 `/mnt/data/redis` 到非默认目录,以防止数据无法正确持久化。
|
13天前
|
JavaScript 前端开发 Docker
如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
通过这些步骤,可以确保您的Next.js应用在多核服务器上高效运行,并且在Docker环境中实现高效的容器化管理。
72 44
|
16天前
|
网络协议 Linux 网络安全
docker centos镜像 npm安装包时报错“npm ERR! code ECONNRESET”
通过上述步骤,您可以有效解决在 Docker 中使用 CentOS 镜像安装 npm 包时遇到的 "npm ERR! code ECONNRESET" 错误。希望这些方法能帮助您顺利进行 npm 包的安装。
93 26
|
21天前
|
存储 关系型数据库 MySQL
美团面试:MySQL为什么 不用 Docker部署?
45岁老架构师尼恩在读者交流群中分享了关于“MySQL为什么不推荐使用Docker部署”的深入分析。通过系统化的梳理,尼恩帮助读者理解为何大型MySQL数据库通常不使用Docker部署,主要涉及性能、管理复杂度和稳定性等方面的考量。文章详细解释了有状态容器的特点、Docker的资源隔离问题以及磁盘IO性能损耗,并提供了小型MySQL使用Docker的最佳实践。此外,尼恩还介绍了Share Nothing架构的优势及其应用场景,强调了配置管理和数据持久化的挑战。最后,尼恩建议读者参考《尼恩Java面试宝典PDF》以提升技术能力,更好地应对面试中的难题。
|
24天前
|
SQL Java Maven
docker部署apollo
docker部署apollo步骤
|
1月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
58 23
|
数据可视化 应用服务中间件 虚拟化
docker(14):centos7 安装docker hub harbor,可视化registry
1,Harbor 容器应用的开发和运行离不开可靠的镜像管理。从安全和效率等方面考虑,部署在私有环境内的Registry是非常必要的。Project Harbor是由VMware公司中国团队为企业用户设计的Registry server开源项目,包括了权限管理(RBAC)、LDAP、审计、管理界面、自我注册、HA等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支
2240 0
|
6天前
|
Ubuntu API 网络虚拟化
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
121 15
|
6天前
|
网络协议 API Docker
Docker+consul容器服务的更新与发现
通过本文的介绍,我们详细探讨了如何结合Docker和Consul来实现容器服务的更新与发现。通过Consul的服务注册和发现功能,可以高效地管理和监控容器化服务,确保系统的高可用性和可扩展性。希望本文能帮助您在实际项目中更好地应用Docker和Consul,提高系统的可靠性和管理效率。
39 23