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




目录
相关文章
|
10天前
|
监控 前端开发 Linux
centos7系统安装部署zabbix5.0
【9月更文挑战第23天】在CentOS 7系统上部署Zabbix 5.0的步骤包括:安装MariaDB数据库及必要软件包,配置Zabbix仓库,设置数据库并导入Zabbix数据库架构,配置Zabbix服务器与前端参数,启动相关服务,并通过浏览器访问Web界面完成安装向导。
|
7天前
|
应用服务中间件 Docker 容器
docker应用部署---Tomcat的部署配置
这篇文章介绍了如何使用Docker部署Tomcat服务器,包括搜索和拉取Tomcat镜像、创建容器并设置端口映射和目录映射,以及如何创建一个HTML页面并使用外部机器访问Tomcat服务器。
docker应用部署---Tomcat的部署配置
|
7天前
|
关系型数据库 MySQL 数据安全/隐私保护
docker应用部署---MySQL的部署配置
这篇文章介绍了如何使用Docker部署MySQL数据库,包括搜索和拉取MySQL镜像、创建容器并设置端口映射和目录映射、进入容器操作MySQL,以及如何使用外部机器连接容器中的MySQL。
docker应用部署---MySQL的部署配置
|
8天前
|
前端开发 应用服务中间件 nginx
docker部署本地前端项目思路
docker部署本地前端项目思路
23 7
|
7天前
|
应用服务中间件 nginx Docker
docker应用部署---nginx部署的配置
这篇文章介绍了如何使用Docker部署Nginx服务器,包括搜索和拉取Nginx镜像、创建容器并设置端口映射和目录映射,以及如何创建一个测试页面并使用外部机器访问Nginx服务器。
|
8天前
|
分布式计算 Hadoop Java
Hadoop集群搭建,基于3.3.4hadoop和centos8【图文教程-从零开始搭建Hadoop集群】,常见问题解决
本文是一份详细的Hadoop集群搭建指南,基于Hadoop 3.3.4版本和CentOS 8操作系统。文章内容包括虚拟机创建、网络配置、Java与Hadoop环境搭建、克隆虚拟机、SSH免密登录设置、格式化NameNode、启动Hadoop集群以及通过UI界面查看Hadoop运行状态。同时,还提供了常见问题的解决方案。
Hadoop集群搭建,基于3.3.4hadoop和centos8【图文教程-从零开始搭建Hadoop集群】,常见问题解决
|
14天前
|
存储 Kubernetes Cloud Native
部署Kubernetes客户端和Docker私有仓库的步骤
这个指南涵盖了部署Kubernetes客户端和配置Docker私有仓库的基本步骤,是基于最新的实践和工具。根据具体的需求和环境,还可能需要额外的配置和调整。
29 1
|
消息中间件 存储 网络协议
Docker多主机搭建RabbitMQ集群
本文通过docker swarm建立多主机的Rabbitmq集群,自带配置文件,无需再次配置,直接启动即可 3台主机,分别为: test01:192.168.1.10,角色:manager test02:192.168.1.20,角色:worker test03:192.168.1.30,角色:worker 配置好各自的hostname
661 0
|
13天前
|
Linux iOS开发 Docker
Docker:容器化技术的领航者 —— 从基础到实践的全面解析
在云计算与微服务架构日益盛行的今天,Docker作为容器化技术的佼佼者,正引领着一场软件开发与部署的革命。它不仅极大地提升了应用部署的灵活性与效率,还为持续集成/持续部署(CI/CD)提供了强有力的支撑。
192 69
|
1天前
|
Kubernetes Cloud Native 持续交付
云原生之旅:Docker容器化与Kubernetes集群管理
【9月更文挑战第33天】在数字化转型的浪潮中,云原生技术如同一艘航船,带领企业乘风破浪。本篇文章将作为你的航海指南,从Docker容器化的基础讲起,直至Kubernetes集群的高级管理,我们将一起探索云原生的奥秘。你将学习到如何封装应用、实现环境隔离,以及如何在Kubernetes集群中部署、监控和扩展你的服务。让我们启航,驶向灵活、可伸缩的云原生未来。
下一篇
无影云桌面