使用docker部署大数据集群
Easul Lv6

在deepin安装docker

我的deepin版本为20.4

BASH
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# 更新仓库
sudo apt-get update
# 如果安装过老版本,则先删除老版本docker
sudo apt-get remove docker.io docker-engine
# 安装密钥管理(add-apt-repository ca-certificates 等)与下载(curl 等)相关的工具
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
# 提示被下边的软件代替,则安装这个
sudo apt install software-properties-common
# 下载安装秘钥
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -
# 查看秘钥是否安装成功
sudo apt-key fingerprint 0EBFCD88
# 查看系统基于的debian版本
cat /etc/debian_version
# deepin20对应debian10,所以将最后的stable前的单词改为buster
# 其他版本可以从这里查看:https://www.debian.org/releases/index.zh-cn.html
sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/debian buster stable"
###############################################################
#
# 添加仓库的时候如果出现:No module named 'softwareproperties'
# 则是因为自己将官方的python3改为了自己的,临时换回官方的python3,然后再次添加即可
sudo mv /usr/bin/python3 /usr/bin/python3.tmp.bak
sudo ln -s /usr/bin/python3.7 /usr/bin/python3
# 用完了再换回来即可
sudo rm -rf /usr/bin/python3
sudo mv /usr/bin/python3.tmp.bak /usr/bin/python3
#
###############################################################
#
# 添加仓库的时候如果出现: aptsources.distro.NoDistroTemplateException: Error: could not find a distribution template for Deepin/apricot
# 那么就手动添加仓库即可
sudo vim /etc/apt/sources.list

# 加入下边这一行的仓库
deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/debian buster stable

# 然后可以指定更新仓库的操作
sudo apt-get update
###############################################################
# 安装docker-ce
sudo apt-get install docker-ce
# 查看docker版本
docker version
# 验证docker是否被正确安装并且能够正常使用,能够正常下载,并能够正常执行,则说明docker正常安装。
sudo docker run hello-world
# 让普通用户也能运行docker,将username改为自己的用户名
# 默认情况下,普通用户运行docker会有权限问题,每次运行都得加sudo,很麻烦。把你的账号加到docker用户组后就不用加sudo了
# 然后注销用户重新登录即可
sudo usermod -aG docker username
# 在https://cr.console.aliyun.com/#/accelerator 申请专属自己的加速链接
# 在镜像工具=》镜像加速器中,复制加速器地址
# 然后配置镜像地址
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
# 关闭docker自启动
sudo systemctl disable docker

官方提供Deepin安装docker
deepin安装docker辅助参考
No module named ‘softwareproperties
aptsources.distro.NoDistroTemplateException…

centos容器的安装,运行和配置

BASH
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# 在host添加ip与域名的映射
sudo vim /etc/hosts

172.18.12.10 master
172.18.12.20 slave1
172.18.12.30 slave2

# 自己手动启动docker
sudo systemctl start docker
# 查看都有哪些容器
docker ps -a
# 删除hello-world的容器
docker rm -f 容器id
# 查看都有哪些镜像
docker image
# 删除hello-world的镜像
docker rmi -f hello-world
# 拉取centos7
docker pull centos:7
# 查看是否拉取成功
docker images
# 查看当前网络模式
docker network ls
# 创建一个新的bridge网络,用于给容器指定ip
docker network create --driver bridge --subnet=172.18.12.0/16 --gateway=172.18.1.1 hadoop
# 创建容器并指定容器ip
# 运行centos7的容器,不加/bin/bash,容器运行后会立即停止,同时这里指定了主机和容器名
# 加privileged可以进行systemctl,否则会报错
docker run -itd --privileged -h master --name master --network=hadoop --ip 172.18.12.10 centos:7 /usr/sbin/init
# 进入容器的命令行模式
docker exec -it master /bin/bash

# 进入master后的操作
# 更新仓库
yum update
# 安装网络工具包
yum install -y net-tools
# 安装ssh服务
yum install -y openssh-server
yum install -y openssh-clients
systemctl start sshd
systemctl enable sshd
# 安装sudo
yum install -y sudo
# 新增普通用户
useradd easul
# 修改普通用户密码
passwd easul
# 修改root用户密码
passwd
# 设置easul可以用sudo执行root的所有命令,且使用的时候不用输入密码
su root
chmod u+w /etc/sudoers
vi /etc/sudoers

# 可以找到与这个命令相同的示例下添加
easul ALL=(ALL) NOPASSWD: ALL

# 这样就可以用普通ssh登录了
# 退出容器并停止docker
docker stop master
# 导出容器
cd ~/Downloads
docker export master > centos-master.tar
# 将归档文件导入镜像
docker import centos-master.tar centos:easul-hadoop-v1
# 创建子结点并运行
docker run -itd --privileged -h slave1 --name slave1 --network=hadoop --ip 172.18.12.20 centos:easul-hadoop-v1 /usr/sbin/init
docker run -itd --privileged -h slave2 --name slave2 --network=hadoop --ip 172.18.12.30 centos:easul-hadoop-v1 /usr/sbin/init
# 使用ssh进入从结点
ssh easul@master
ssh easul@slave1
ssh easul@slave2

docker指定IP,添加非root用户,安装ssh等

其他配置

BASH
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 在每个结点设置对应的hosts
sudo vi /etc/hosts

172.18.12.10 master
172.18.12.20 slave1
172.18.12.30 slave2

# 设置免密登录
# 生成公私钥
ssh-keygen
# 创建共享密钥
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 修改共享密钥的权限
chmod 600 ~/.ssh/authorized_keys
# 使用scp在服务器间共享密钥
# 格式为:用户名@服务器:目录
scp ~/.ssh/authorized_keys easul@slave1:~/.ssh/
# 步骤为在master生成共享密钥,追加到authorized_keys,然后复制到slave1
# 然后slave1生成共享密钥,追加到authorized_keys,然后复制到slave2
# 然后slave2生成共享密钥,追加到authorized_keys,然后覆盖到slave1,master
# 从而实现每个结点都有相同的共享密钥,从而免密登录
ssh slave1

其余安装

BASH
1
2
3
# 每个结点都需要安装
# 其他所需软件
sudo yum install -y which exec unzip wget

剩下的就只有环境配置中的8和11需要处理一下
然后从hadoop集群开始处理即可

 评论