Windows家庭版下基于Docker的hadoop、Spark集群搭建

Windows家庭版下基于Docker的hadoop、Spark集群搭建


1、实验目的

(1)掌握在docker的安装方法;
(2)熟悉docker基本命令;
(3)基于Docker创建spark集群。


2、实验平台

操作系统:可以使windows或者Linux
Spark版本:2.4.5;
Hadoop版本:2.7。


3、实验内容和要求

3.1 docker环境安装

3.1.1 开启Hyper-V

新建hyperv.cmd文件,内容如下:

pushd "%~dp0"

dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt

for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"

del hyper-v.txt

Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

如下
在这里插入图片描述
然后以管理员身份执行hyperv.cmd文件,若需重启即重启。
然后打开控制面板——程序——启用或关闭Windows功能,如下

在这里插入图片描述


3.1.2 伪装成win10专业版

以管理员身份打开cmd
执行如下命令:

REG ADD "HKEY_LOCAL_MACHINE\software\Microsoft\Windows NT\CurrentVersion" /v EditionId /T REG_EXPAND_SZ /d Professional /F

3.1.3 下载Docker for Windows

我用的是百度网盘里的,直接下载安装,完成后桌面上会有如下图标:
在这里插入图片描述
打开右下角会有小鲸鱼标志,进入setting可进行镜像源以及其他的配置
在这里插入图片描述

显示已经安装完成。


3.2 基于docker创建spark集群

3.2.1 拉取centos镜像

我拉的是centos8

docker pull daocloud.io/library/centos:latest

接下来查看一下拉的镜像

docker images

看到如下:

在这里插入图片描述


3.2.2 ip设置

按顺序启动masterslave1slave2,这样不会造成ip紊乱。


3.2.3 创建容器

执行如下代码,创建容器masterslave1slave2

docker run -d --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup --name master -h master -p 50070:50070 -p 8080:8080 -p 7077:7077 -p 18088:18088 daocloud.io/library/centos /usr/sbin/init

上面是创建master容器,创建slave容器时只需将master替换成容器名并删去端口部分代码即可。例如创建slave1代码如下

docker run -d --privileged -ti -v /sys/fs/cgroup:/sys/fs/cgroup --name slave1 -h slave1  daocloud.io/library/centos /usr/sbin/init

创建完后,输入命令

docker ps -a

可以看到创建的三个容器以及他们的容器名、状态,如下
在这里插入图片描述
可以输入不同的容器id来进入容器,具体命令如下

docker exec -it 容器id /bin/bash 

想要退出的话按Ctrl+P+Q即可。
例如进入master容器,如下

在这里插入图片描述


3.2.4 配置ssh实现节点间免密登陆

先换yum源,执行如下命令

yum -y install wget
mv /etc/yum.repos.d/CentOS-Base.repo  /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
yum makecache

安装openssh

yum -y install openssh openssh-server openssh-clients
systemctl start sshd

修改配置文件,使得master设置ssh登录自动添加known_hosts,ssh自动接收新的密钥

vi /etc/ssh/ssh_config

将原来的StrictHostKeyChecking ask设置StrictHostKeyChecking为no,再执行

systemctl restart sshd

对于slave节点,只安装,不修改配置文件
slave节点执行如下命令

yum -y install openssh openssh-server openssh-clients
systemctl start sshd

三个节点修改hosts文件

vi /etc/hosts

如下
修改hosts文件
公钥的互相分发
在三个节点上执行如下命令

ssh-keygen -t rsa

只需一路按回车

cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys

然后将各自 ~/.ssh/authorized_keys文件中的秘钥复制到其他两个节点的 ~/.ssh/authorized_keys文件中去(进入容器,修改 ~/.ssh/authorized_keys文件)
图上为三个节点的密钥
master执行

ssh root@slave1
ssh root@slave2

可登陆两个slave节点,输入exit退回master节点。


3.2.5 Ansible安装

下载镜像源和Ansible

yum -y install epel-release
yum -y install ansible

编辑host文件

vi /etc/ansible/hosts

内容如下:

[cluster]
master
slave1
slave2

[master]
master

[slaves]
slave1
slave2

3.2.6 修改docker的hosts文件

由于 /etc/hosts 文件在容器启动时被重写,直接修改内容在容器重启后不能保留,为了让容器在重启之后获取集群 hosts,使用了一种启动容器后重写hosts的方法。需要在修改 ~/.bashrc 文件,在末尾追加以下指令

:>/etc/hosts
cat >>/etc/hosts<<EOF
127.0.0.1 localhost
172.17.0.2 master
172.17.0.3 slave1
172.17.0.4 slave2
EOF

然后执行命令

source ~/
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值