系列文章目录
docker:环境安装
docker:Web迁移
docker:Haoop集群
文章目录
- 系列文章目录
- 前言
- 一、宿主机选择
- 二、环境准备
- 1.前置技术
- 2.网络环境
- 1. docker网卡
- 2. 分配IP
- 三、容器互联
- 三、Jdk和Hadoop安装
- 四、分发脚本
- 五、启动Hadoop
- 总结
前言
年前学习了docker的相关知识,过年休息了多半月,现在开始继续学习,这次要完成我之前多次做实验的一个设想,就是用docker进行Hadoop集群部署,真正的完成一次构建,导出运行。
一、宿主机选择
这里说一下我踩过的坑,具体原因还没有找到,在最初的设想里,我是想在我的Debian服务器上运行Centos镜像的,经过测试,会出现多个容器内部无法连接的现象,最终将宿主机和容器操作系统统一时这个问题消失了,具体原因未知,所以这里我依旧选择用Cenos7作为宿主机器。
二、环境准备
1.前置技术
我要docker完成我Hadoop专栏中前两章的集群搭建,有过了解后边会更容易看懂。
Hadoop专栏
以下内容我只会记录一些与专栏有差异的操作,相同的配置和操作将不会演示,所以你想从0搭一个集群,但是还没有基础,那现在赶紧退出。
2.网络环境
1. docker网卡
docker network create --subnet=172.18.0.0/16 hadoop-br
我们为Hadoop集群专门新建一个网络。用作集群内部的互联。
2. 分配IP
我们在新建容器的时候直接完成域名和IP的绑定,就不用在docker内修改host文件了,docker会把域名和IP的对应关系直接记录在指定的网络中。
docker run -d --privileged -it -v /opt/software:/opt/software --name hadoop102 --ip 172.18.0.2 -h hadoop102 -p 9870:9870 --net hadoop-br centos:centos7.9.2009 /usr/sbin/init
docker run -d --privileged -ti --name hadoop103 -h hadoop103 --net hadoop-br --ip 172.18.0.3 -p 8088:8088 centos:centos7.9.2009 /usr/sbin/init
docker run -d --privileged -ti --name hadoop104 -h hadoop104 --net hadoop-br --ip 172.18.0.4 centos:centos7.9.2009 /usr/sbin/init
这里顺便将一些需要的文件通过数据卷挂载进去,一些Hadoop的WebUI需要用的端口直接也加上。
三、容器互联
我们分别开三个终端,然后连接到三个容器。
docker exec -it hadoop102 bash
docker exec -it hadoop103 bash
docker exec -it hadoop104 bash
之后我们为每个终端创建新用户,这里和专栏内容一样,不演示。
然后为新用户添加root权限,最基本的Centos7镜像是没有的/etc/sudoers的。
需要为每一个容器安装sudo。
yum install sudo -y
然后即可编写/etc/sudoers文件。
但是当修改时会出现这个报错。
我们需要给其添加权限。
chmod 600 /etc/sudoers
然后可以正常修改了。
之后创建家目录和工作目录和专栏一样,不演示。
现在我们转换到新用户开始建立免密登录。
su atguigu
为三台电脑安装ssh
yum -y install openssh-clients openssh-server
我们在102上ping一下其它主机看看能否ping通。
能ping通就可以进行免密登录的配置。
先对ssh进行配置
vi /etc/ssh/ssh_config
然后重启一下ssh服务。
systemctl restart sshd
三台容器都要修改重启。
然后先手动ssh连接一下。
成功以后即可进行免密配置。
注意免密配置全程使用atguigu。
配置过程和专栏一样,不演示。
配置完成后测试一下。
三、Jdk和Hadoop安装
全程和专栏一致,不做演示。
四、分发脚本
在三个容器中安装rsync
sudo yum install rsync -y
然后编写分发脚本。
但是不知道为什么创建完之后无法直接调用,所以我们创造一个软连接。
sudo ln -s /home/atguigu/bin/xsync /usr/bin/xsync
然后尝试分发jdk和hadoop还有配置文件。
xsync /opt/module/
sudo xsync /etc/profile.d/my_env.sh
再分发配置文件的时候会出现这个问题。
因为我们用了sudo,所以这条命令使用root执行的,但我们没有给root用户设置免密,现在我们要设置一下。
Ctrl+D切换会root用户,然后设置密码,三台都设置。
passwd root
之后和atguigu一样设置免密。
ssh-keygen -t rsa
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104
现在切换到atguigu进行配置文件分发。
现在就可以正常分发了。
五、启动Hadoop
hadoop102执行
hdfs namenode -format
sbin/start-dfs.sh
hadoop103执行
sbin/start-yarn.sh
然后在Web查看。
ip:9870
ip:8088
总结
至此集群的基本框架搭建完毕,可以更加自己的需要选择保存镜像或者上传仓库。