环境:ubuntu 18.04
大数据技术与应用赛项平台环境
安装完Ubuntu之后,除了需要新建用户、设置密码之外,我们还要设置root密码,虽然Ubuntu默认有root超级管理员账户,但是具体的密码我们可以自行设置
1.启动Ubuntu
启动Ubuntu,有图形界面的,启动终端即可
2.终端输入sudo passwd root
sudo passwd root
验证测试:
验证:输入su - 后输入超级管理员账户的密码
更换下载源,不更换的话安装docker时会很慢,可以选择阿里或者清华源
sudo apt install vim
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 备份
sudo vi /etc/apt/sources.list #添加清华源
清华源:
ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
#更新源
sudo apt update
(方便连接xshell工具)
sudo apt install openssh-server -y
解决windows Ubuntu 之间复制粘贴问题:
sudo apt-get autoremove open-vm-tools -y //卸载已有的工具
sudo apt-get install open-vm-tools -y //安装工具open-vm-tools
sudo apt-get install open-vm-tools-desktop -y //安装open-vm-tools-desktop
ubuntu下安装asbru-cm工具:
Asbru-CM是一种开源的配置管理工具,用于管理和部署服务器配置。它提供了一个Web界面,使用户可以轻松地管理和监控多台服务器的配置。
sudo apt install curl -y
curl -s https://packagecloud.io/install/repositories/asbru-cm/asbru-cm/script.deb.sh | sudo bash
sudo apt install asbru-cm -y
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release -y
gpgkey:是用来验证软件的真伪 ——防伪的
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
2.2.4 下载仓库文件
sudo echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
由于docker安装的时候自带设置启动,所以直接查看进程是否启动就可以了
ps aux|grep docker
安装成功
sudo service docker start # 启动Docker
sudo service docker stop # 停止Docker
sudo service docker restart # 重启Docker
sudo service docker status # 查看Docker状态
#查看docker容器
docker ps #查看当前运行的容器
docker ps -a #查看所有容器
docker rm -f $(docker ps -aq) #删除所有容器
docker images #查看docker镜像
#导入镜像包,两者都会恢复为镜像
docker load < /home/hj/大数据比赛环境包/bigdata.tar
docker load -i < /home/hj/大数据比赛环境包/bigdata.tar
#导入容器包,两者都会恢复为镜像
docker import 路径
#删除镜像(镜像有创建过容器则需要删除容器才可以删除镜像)
docker rmi 镜像名或镜像ID
#删除所有容器
docker rm -f $(docker ps -aq)
docker rm 容器
#启动容器
docker start 容器id
#运行容器
docker exec -it 容器id /bin/bash
#将容器导成镜像
sudo docker commit -a "镜像作者" -m "提交成镜像的说明信息" 容器的名称 新镜像名称:标签
docker 上传文件到容器
docker cp /home/hj/clickhouse-21.9.4.35(tgz) master:/opt/
从容器中上传文件到本地
docker cp master:/opt/ /home/hj
docker images
参数 | 含义 |
---|---|
REPOSITORY | 镜像所在的仓库名称 |
TAG | 镜像标签(版本) |
IMAGEID | 镜像ID |
CREATED | 镜像的创建日期(不是获取该镜像的日期) |
SIZE | 镜像大小 |
docker search 镜像名
要想获取某个镜像,我们可以使用pull命令,从仓库中拉取镜像到本地。
如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。
docker pull 仓库名称/标签
镜像有创建过容器则需要删除容器才可以删除镜像(或者直接强制删除)
#普通删除
docker rmi 镜像名或镜像ID
#强制删除
docker rmi -f 镜像名或镜像ID
#方法1
docker load < 镜像包
#方法2
docker load -i < 镜像包
docker save –o /opt/导出名称.tar 镜像名称:标签
docker run [option] 镜像名:tag [向启动容器中传入的命令]
常用可选参数说明:
参数 | 意义 |
---|---|
-i | 表示以“交互模式”运行容器 |
-t | 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。 |
–name | 为创建的容器命名 |
-v | 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录,即 宿主机目录:容器中目录),可以使用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后 共享到容器上。 |
-d | 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不 会自动登录容器,如果只加-i -t 两个参数,创建后就会自动进去容器)。 |
-p | 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p 做多个端口映射 |
-e | 为容器设置环境变量 |
–network | 指定网桥 |
docker exec -it 容器名或容器ID /bin/bash
docker ps #查看当前运行的容器
docker ps –a #查看当前所有的容器
docker start 容器名或容器ID
docker stop 容器名或容器ID
(运行中的容器不能删除)
docker rm 容器名或容器ID
docker commit [OPTIONS] CONTAINER [REPOSITORY]:[TAG]
OPTIONS说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
$ docker commit 容器名 镜像名:tag
Docker在启动时会开启一个虚拟网桥设备docker0,默认的地址为172.17.0.1/16,容器启动后都会被桥接到docker0上,并自动分配到一个ip地址。
bridge 桥接网络模式: |
---|
1、为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,默认为该模式 |
2、为容器分配独立IP,具有很好的网络隔离性,服务不会跟宿主机上的服务发送端口冲突问题 |
3、主机和容器间通过桥接的方式进行通信 |
4、只能单机使用,不适合跨主机docker服务间通信 |
host 主机本地网络模式: |
---|
1、docker容器共享主机的ip、端口号等等网络资源,如果单机部署 |
2、只能单机使用,不适合跨主机docker服务间通信 |
3、这种网络模式效率最高 |
overlay 集群网络模式: |
---|
多节点集群下统一分配服务独立ip |
跨机器节点上的docker服务间能互相通信 |
支持主机节点和集群网络内的节点间互相通信 |
支持节点间加密通信 注:windows机器节点不支持加密通信 |
docker network ls #查看所有网络
docker network inspect 网络 #查看网络的相关信息
#自定义创建的默认default bridge
docker network create --driver bridge --subnet 192.168.1.1/24 --gateway 192.168.1.1 mynet #自定义创建一个网络mynet
docker network rm 网络id #删除网络
Pull一个centos7镜像,在此镜像基础上安装ssh服务,开放端口,上传jdk、hadoop等组件等操作,封装成hadoop大数据环境
# 选择一个已有的os镜像作为基础
FROM centos:7
# 安装openssh-server和sudo软件包
RUN yum install -y --nogpgcheck openssh-server sudo
#安装openssh-clients
RUN yum install -y --nogpgcheck openssh-clients
# 修改ssh配置文件,方便后面通过root用户进行ssh远程登录
RUN sed -i 's/ GSSAPIAuthentication yes /#GSSAPIAuthentication yes/g' /etc/ssh/sshd_config
RUN sed -i 's/ GSSAPICleanupCredentials no /#GSSAPICleanupCredentials no/g' /etc/ssh/sshd_config
#安装initscripts,方便 ip addr 查询网络状态
RUN yum install -y --nogpgcheck initscripts
#安装防火墙
RUN yum install firewalld -y
#安装which hadoop版本号查看需要用到
RUN yum install which -y
#mysql 初始化报错 ,缺少libnuma.so.1情况,缺啥补啥
RUN yum install numactl -y
RUN yum install libaio -y
RUN yum install libnuma.so.1 -y
# 添加用户root,密码123,并且将此用户添加到sudoers里
RUN echo "root:123" | chpasswd
RUN echo "root ALL=(ALL) ALL" >> /etc/sudoers
# 启动sshd服务并且暴露22端口
RUN mkdir /var/run/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
RUN mkdir /opt/{software,module}
#封装:docker build -t"centos-ssh-root" .
编辑好脚本后,使用build命令开始运行
格式:docker build -t”镜像名称” .
docker build -t"centos-ssh-root" .
查看创建的镜像:
封装的系统只是完成了ssh服务的安装,开放22端口,配置root用户。并没有达到大数据环境的使用要求,接下来在这个封装好的系统上,再进行封装,上传大数据环境需要的组件
#软件包根据自己所需的填写
FROM centos-ssh-root
COPY apache-flume-1.9.0-bin.tar.gz /opt/software/
COPY apache-hive-3.1.2-bin.tar.gz /opt/software/
COPY flink-1.14.0-bin-scala_2.12.tgz /opt/software/
COPY hadoop-3.1.3.tar.gz /opt/software/
COPY hbase-2.2.3-bin.tar.gz /opt/software/
COPY jdk-8u162-linux-x64.tar.gz /opt/software/
COPY kafka_2.12-2.4.1.tgz /opt/software/
COPY maxwell-1.29.0.tar.gz /opt/software/
COPY redis-6.2.6.tar.gz /opt/software/
COPY scala-2.12.0.tgz /opt/software/
COPY spark-3.1.1-bin-hadoop3.2.tgz /opt/software/
COPY clickhouse-21.9.4.35 /opt/software/
COPY mysql /opt/software/
COPY zookeeper-3.4.6.tar.gz /opt/software/
COPY sqoop-1.4.2.bin__hadoop-2.0.0-alpha.tar.gz /opt/software/
#封装:docker build -t"bigdata" .
编辑好脚本后,使用build命令开始运行
格式:docker build -t”镜像名称” .
docker build -t"bigdata" .
查看新封装的镜像:
集群规划,一主两从
master:
docker run -id --name master --hostname master --net mynet --privileged=true -v /sys/fs/cgroup:/sys/fs/cgroup -P -p 50070:50070 -p 8088:8088 bigdata /usr/sbin/init
slave1:
docker run -id --name slave1 --hostname slave1 --net mynet --privileged=true -P bigdata /usr/sbin/init
slave2:
docker run -id --name slave2 --hostname slave2 --net mynet --privileged=true -P bigdata /usr/sbin/init
#docker端口映射(略)
iptables -t nat -vnL #查看端口映射
iptables -t nat -A DOCKER -p tcp --dport 8089 -j DNAT --to-destination 192.168.12.10:8088 #添加端口映射
iptables -t nat -vnL DOCKER --line-number #显示端口行号
iptables -t nat -D DOCKER {行号} #删除规则
进入容器:
docker exec -it master bash
完成