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




目录
相关文章
|
27天前
|
人工智能 API 数据安全/隐私保护
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
NextChat 是一个可以在 GitHub 上一键免费部署的私人 ChatGPT 网页应用,支持 GPT3、GPT4 和 Gemini Pro 模型。该项目在 GitHub 上获得了 63.8k 的 star 数。部署简单,只需拉取 Docker 镜像并运行容器,设置 API Key 后即可使用。此外,NextChat 还提供了预设角色的面具功能,方便用户快速创建对话。
118 22
使用 Docker 一键免费部署 63.8k 的私人 ChatGPT 网页应用
|
1月前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
373 11
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
10天前
|
Java 应用服务中间件 Docker
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
19 2
|
16天前
|
Java Linux Docker
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
什么是 Docker?如何将 Spring Boot 应用程序部署到 Docker?
32 3
|
1月前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
114 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
23天前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
28天前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理
|
28天前
|
Docker 微服务 容器
使用Docker Compose实现微服务架构的快速部署
使用Docker Compose实现微服务架构的快速部署
55 1
|
20天前
|
持续交付 开发者 Docker
掌握Docker容器化技术,加速软件开发与部署
掌握Docker容器化技术,加速软件开发与部署
39 0
|
28天前
|
前端开发 开发者 Docker
深入探索Docker Compose:简化多容器应用的部署
深入探索Docker Compose:简化多容器应用的部署
59 0