创立容器
# 创立自定义网络docker network create --subnet=172.18.0.0/16 mynetwork# 启动容器# cluster-masterdocker run -itd --privileged --name cluster-master -h cluster-master -p 18088:18088 -p 9870:9870 --net mynetwork --ip 172.18.0.2 centos:latest /usr/sbin/init# cluster-slavesdocker run -itd --privileged --name cluster-slave1 -h cluster-slave1 --net mynetwork --ip 172.18.0.3 centos:latest /usr/sbin/initdocker run -itd --privileged --name cluster-slave2 -h cluster-slave2 --net mynetwork --ip 172.18.0.4 centos:latest /usr/sbin/initdocker run -itd --privileged --name cluster-slave3 -h cluster-slave3 --net mynetwork --ip 172.18.0.5 centos:latest /usr/sbin/init# docker run -itd --privileged -v /System/Volumes/Data/data/personal/docker/hadoop/sys/fs/cgroup:/sys/fs/cgroup --name cluster-slave4 -h cluster-slave4 --net mynetwork --ip 172.18.0.6 centos:latest /usr/sbin/init
装置 OpenSSH 免密登录
master 装置 openSSH
# 进入master容器中docker exec -it cluster-master /bin/bash# 在容器外部执行yum -y install openssh openssh-server openssh-clients vim# 去掉文件 Port 22 PermitRootLogin(开启近程登录) yes PasswordAuthentication(应用明码) yesvim /etc/ssh/sshd_config# 启动 openSSHsystemctl start sshd# 生成ssh keyssh-keygen -t rsa # 一路回车就好cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
slave 装置 openSSH(slave1 slave2 slave3 同理装置)
# 进入master容器中docker exec -it cluster-slave1 /bin/bash# 在容器外部执行yum -y install openssh openssh-server openssh-clients vim# 去掉文件 Port 22 PermitRootLogin(开启近程登录) yes PasswordAuthentication(应用明码) yesvim /etc/ssh/sshd_config# 启动 openSSHsystemctl start sshd# 应用 master 的 ~/.ssh/*替换 slave1的~/.ssh/*systemctl start sshd
Ansible装置
yum -y install epel-releaseyum -y install ansible# 批改vi /etc/ansible/hosts`[cluster]cluster-mastercluster-slave1cluster-slave2cluster-slave3[master]cluster-master[slaves]cluster-slave1cluster-slave2cluster-slave3`
批改 hosts
:>/etc/hostscat >>/etc/hosts<<EOF127.0.0.1 localhost172.18.0.2 cluster-master172.18.0.3 cluster-slave1172.18.0.4 cluster-slave2172.18.0.5 cluster-slave3EOFsource ~/.bashrc# 散发至slaveansible cluster -m copy -a "src=~/.bashrc dest=~/"
装置 jdk和hodoop (四台机器都要装置)
# 将宿主机 jdk文件和hadoop文件挪动至docker容器docker cp ~/Download/hadoop-3.3.0.tar.gz 容器ID或容器名称:/optdocker cp ~/Download/jdk-8u261-linux-x64.tar.gz 容器ID或容器名称:/opt# 将文件挪动至 slavescp ./* root@cluster-slave1:/opt/scp ./* root@cluster-slave2:/opt/scp ./* root@cluster-slave3:/opt/# 解压tar -zxvf hadoop-3.3.0.tar.gztar -zxvf jdk-8u261-linux-x64.tar.gz# 配置环境变量 vim ~/.bashrc`# hadoopexport HADOOP_HOME=/opt/hadoop-3.3.0export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH#javaexport JAVA_HOME=/opt/jdk1.8.0_261export PATH=$JAVA_HOME/bin:$PATH`source ~/.bashrc
配置hadoop运行所需配置文件