目录标题
一.所需资源:
1. 三台机器centos7物理机:192.168.50.12,192.168.50.13,192.168.50.14 .
2. 要求跨物理节点搭建docker hadoop集群,实现与物理机同网段虚拟化平台,便于以后集群动态扩展
3. 实现kettle8 etl工具访问
4. 所需资源(`建议版本和我一致`)
- 大数据资源
hadoop-2.7.7 下载链接: hbase-1.2.6 下载链接: hive-2.3.6(包含数据库驱动) 下载链接:
- 辅助资源
pipwork-master(配置docker容器和宿主机在同一网段)下载链接: keychain(做集群互信)下载链接: phoenix(hbase客户端连接,或代码链接)下载链接: (hbase客户端连接)下载链接: kettle8(etl工具)下载链接:
二.docker 环境搭建
1.Docker 是一个开源的应用容器引擎,可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
轻量级虚拟机(操作系统层虚拟化),这个解释到位:https://www.cnblogs.com/kex1n/p/6933039.html
我是虚拟机装的Centos7,linux 3.10 内核,docker官方说至少3.8以上,建议3.10以上(ubuntu下要linux内核3.8以上, RHEL/Centos 的内核修补过, centos6.5的版本就可以——这个可以试试)
2.内核查看uname -a
3,把yum包更新到最新(新环境或测试环境可随意操作,生产环境酌情慎重更新
)
yum update -y
4. 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
5,设置yum源(选择其中一个)
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)
6.查看所有仓库中所有docker版本,并选择特定版本安装yum list docker-ce --showduplicates | sort -r
7.安装Docker,我选的是docker-ce-18.03.1.ce
yum install docker-ce-18.03.1.ce
8.启动Docker 加入开机启动
systemctl start docker
systemctl enable docker
9.更改Docker存储路径
停止docker服务: systemctl stop docker && systemctl status docker
创建更改路径: mkdir /data/service/docker -p
迁移原来数据:mv /var/lib/docker/* /data/service/docker/
修改docker.service配置文件:
vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --graph /data/service/docker
重新加载配置文件systemctl daemon-reload
启动docker服务
systemctl start docker
systemctl enable docker
systemctl status docker
查看修改是否成功
[yukw@yfb ~]$ docker info | grep Dir
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
WARNING: the devicemapper storage-driver is deprecated, and will be removed in a future release.
WARNING: devicemapper: usage of loopback devices is strongly discouraged for production use.
Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
Docker Root Dir: /data/service/docker ## 查看修改成功
三. 创建docker镜像
1.拉取基础cenos7镜像docker pull centos:7
2.build Dockfile 生成ssh功能的基础镜像 vim Dockfile
写入以下内容
# SSH_Dockerfile的作用是为干净的contos镜像添加 vim,ifconfig,ssh基本的功能,
#From centos的作用在于告诉docker对那个镜像进行配置
From centos:7
#WORKDIR 为进入容器时的路径。我们在这里设置时root的家目录
WORKDIR /root
#安装vim编辑工具,RUN是dockerfile的一个关键字,运行linux的指令
RUN yum install -y vim
RUN yum install -y git
RUN yum install -y wget
#安装ifconfig工具,这里是centos8,ifconfig存在于net-tools-2.0-0.51.20160912git.el8.x86_64中,那么我们就安装这个组件
RUN yum install -y net-tools.x86_64
#以下两个安装的是ssh
RUN yum install -y openssh-server
RUN yum install -y openssh-clients
#这里手动创建/root/.ssh目录,这里存放id_rsa , id_rsa.pub , authorized_keys, 以及known_hosts文件,这一步 是为了下一步的生成公密钥对提供存放地点
RUN mkdir .ssh
#echo root | chpasswd的作用在于 非交互式创建容器的密码,这是为了方便在dockerfile中就能完成root密码的设置,因为SSH登录时需要使用有密码的root用户(一般来说,很多功能都需要带有密码的root)
RUN ssh-keygen -t rsa -f /root/.ssh/id_rsa -N "" && echo "root:root" | chpasswd
#anthorized_keys 是两台机器SSH免密登录,登录方需要存放被登录方公钥的地方。为了让镜像拥有更多的功能,我们这里直接把本机的公钥复制一份给authorized_keys,以便启动多个容器时,直接免密登录。(这里不明白的小伙伴可以参看一下SSH免密登录的知识)
RUN cp .ssh/id_rsa.pub .ssh/authorized_keys
RUN mkdir /var/run/sshd
# 使镜像直接开启22端口。这个是SSH连接的端口
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
# SSH_Dockerfile的作用是为干净的contos镜像添加 vim,ifconfig,ssh基本的功能,
#From centos的作用在于告诉docker对那个镜像进行配置
From centos:7
#WORKDIR 为进入容器时的路径。我们在这里设置时root的家目录
WORKDIR /root
#安装vim编辑工具,RUN是dockerfile的一个关键字,运行linux的指令
RUN yum install -y vim
#安装ifconfig工具,这里是centos8,ifconfig存在于net-tools-2.0-0.51.20160912git.el8.x86_64中,那么我们就安装这个组件
RUN yum install -y net-tools.x86_64
#以下两个安装的是ssh
RUN yum install -y openssh-server
RUN yum install -y openssh-clients
#这里手动创建/root/.ssh目录,这里存放id_rsa , id_rsa.pub , authorized_keys, 以及known_hosts文件,这一步 是为了下一步的生成公密钥对提供存放地点
RUN mkdir .ssh
#echo root | chpasswd的作用在于 非交互式创建容器的密码,这是为了方便在dockerfile中就能完成root密码的设置,因为SSH登录时需要使用有密码的root用户(一般来说,很多功能都需要带有密码的root)
RUN ssh-keygen -t rsa -f /root/.ssh/id_rsa -N "" && echo "root:root" | chpasswd
#anthorized_keys 是两台机器SSH免密登录,登录方需要存放被登录方公钥的地方。为了让镜像拥有更多的功能,我们这里直接把本机的公钥复制一份给authorized_keys,以便启动多个容器时,直接免密登录。(这里不明白的小伙伴可以参看一下SSH免密登录的知识)
RUN cp .ssh/id_rsa.pub .ssh/authorized_keys
RUN mkdir /var/run/sshd
# 使镜像直接开启22端口。这个是SSH连接的端口
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
3.上述的意思为:以centos为基础镜像,安装服务并启动,构建docker: docker build -t="centos-ssh" .
4.生成名为centos-ssh的镜像,可通过docker images
查看
5.生成images后,建立docker容器
四.docker服务与物理机器同网段
1.使用pipwork建立独立网桥(注意,以下阶段不可远程,必须在机房完成!!!,重启网络会断网)
2.建立pipwork的软连接,ln -s /app/local/xx/pipwork-master/pipwork /usr/bin/pipwork
(改为自己的路径)
3.删除以前网桥,docker0为你启动时自动建立
ip link set dev docker0 down
yum install bridge-utils
brctl delbr docker0
4.接下来比较关键,修改物理机所有网卡cd /etc/sysconfig/network-scripts
1)单网卡
vim ifcfg-eth33
TOOTPROTO='none'
BRIDGE=br0 #桥接网卡
2)多网卡
五.机器互信
下载地址
wget https://github.com/funtoo/keychain
下载后解压缩,将keychain拷贝到bin目录
cp keychain /usr/bin/
修改用户配置文件
#vim ~/.bash_profile
keychain ~/.ssh/id_rsa
. ~/.keychain/$HOSTNAME-sh
# source ~/.bash_profile
六.搭建分布式hadoop平台
待开发。。
七.搭建hbase平台及客户端连接服务(phoenix)
待开发。。
八.搭建hive平台
待开发。。
九.kettle连接大数据服务
sudo systemctl --force --force reboot
待开发。。