Docker容器搭建大数据集群

首先准备好Centos7(之前准备好的模板机)



安装Docker

更新yum包(期间选择全选’y’)

yum update

安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖

yum install -y yum-utils device-mapper-persistent-data lvm2

docker一键部署 docker一键部署大数据集群_docker

设置yum源为阿里云

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

docker一键部署 docker一键部署大数据集群_容器_02

安装Docker

yum -y install docker-ce

docker一键部署 docker一键部署大数据集群_容器_03

  • 检查安装是否成功
docker -v

docker一键部署 docker一键部署大数据集群_容器_04

设置ustc的镜像

  • 创建docker目录
mkdir -p /etc/docker

docker一键部署 docker一键部署大数据集群_docker_05

  • 编辑daemon.json
vim /etc/docker/daemon.json

docker一键部署 docker一键部署大数据集群_docker_06

{
  "registry-mirrors": ["https://yxzrazem.mirror.aliyuncs.com"]
}

启动Docker(完成此步骤最好保存快照,以免后面环境出错难以恢复)

systemctl start docker

docker一键部署 docker一键部署大数据集群_docker一键部署_07

  • 查看是否启动成功
systemctl status docker

docker一键部署 docker一键部署大数据集群_hive_08

Hadoop集群安装准备

基础镜像准备

  • 拉取centos镜像
docker pull centos:7.5.1804
  • 创建docker-hadoop
mkdir docker-hadoop

docker一键部署 docker一键部署大数据集群_大数据_09

  • 把jdk上传~/docker-hadoop
  • 创建Dockerfile
vim Dockerfile
FROM centos:7.5.1804
#安装JDK
RUN mkdir -p /opt/software && mkdir -p /opt/service
ADD jdk-8u212-linux-x64.tar.gz /opt/service

#安装语言包
RUN yum -y install kde-l10n-Chinese glibc-common vim
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
RUN echo "LANG=zh_CN.UTF-8" >> /etc/locale.conf

#解决login环境变量失效问题
RUN touch /etc/profile.d/my_env.sh
RUN echo -e "export LC_ALL=zh_CN.UTF-8\nexport JAVA_HOME=/opt/service/jdk1.8.0_212\nexport PATH=\$PATH:\$JAVA_HOME/bin" >> /etc/profile.d/my_env.sh

#安装ssh服务
#更换国内阿里云yum源
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
RUN sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
RUN yum makecache

#安装sshd
RUN yum install -y openssh-server openssh-clients vim net-tools lrzsz
RUN sed -i '/^HostKey/'d /etc/ssh/sshd_config
RUN echo 'HostKey /etc/ssh/ssh_host_rsa_key' >> /etc/ssh/sshd_config

#生成ssh-key
RUN ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key

#更改root用户登录密码
RUN echo 'root:123456' | chpasswd

#声明22端口 
EXPOSE 22
#容器运行时启动sshd
RUN mkdir -p /opt
RUN echo '#!/bin/bash' >> /opt/run.sh
RUN echo '/usr/sbin/sshd -D' >> /opt/run.sh
RUN chmod +x /opt/run.sh
#CMD ["/opt/run.sh"]
CMD [ "/usr/sbin/init"]
  • 生成基础镜像
docker build -t hadoopbase:1.0 ./
  • 查看镜像是否成功构建
docker images

docker一键部署 docker一键部署大数据集群_大数据_10

  • 测试镜像
  • 起一个容器测试
docker run -itd --name test -p 222:22 hadoopbase:1.0
  • 可以新打开一个xshell窗口,IP地址和宿主机一致,端口号改为222即可连接

集群环境配置

  • 创建三个容器
docker create -it --name hadoop102 --privileged=true -h hadoop102 hadoopbase:1.0 /usr/sbin/init
docker create -it --name hadoop103 --privileged=true -h hadoop103 hadoopbase:1.0 /usr/sbin/init
docker create -it --name hadoop104 --privileged=true -h hadoop104 hadoopbase:1.0 /usr/sbin/init

docker一键部署 docker一键部署大数据集群_docker一键部署_11

  • 创建脚本
  • 先进入目录/usr/local/bin/
cd /usr/local/bin/

docker一键部署 docker一键部署大数据集群_大数据_12

  • 把pipework拷贝上传上去
  • 创建docker.sh
vim docker.sh

docker一键部署 docker一键部署大数据集群_hive_13

#!/bin/bash

#启动容器
docker start hadoop102
docker start hadoop103
docker start hadoop104

#搭建网桥,下面8.8.8.80是宿主机的IP
brctl addbr br0; \
ip link set dev br0 up; \
ip addr del 8.8.8.80/24 dev ens33; \
ip addr add 8.8.8.80/24 dev br0; \
brctl addif br0 ens33; \
ip route add default via 8.8.8.1 dev br0

#睡眠5秒
sleep 5

#给容器配置ip和网关
pipework br0 hadoop102 8.8.8.102/24@8.8.8.2
pipework br0 hadoop103 8.8.8.103/24@8.8.8.2
pipework br0 hadoop104 8.8.8.104/24@8.8.8.2
  • 增加脚本执行权限并下载工具
chmod 777 docker.sh
chmod 777 pipework
yum install bridge-utils

docker一键部署 docker一键部署大数据集群_容器_14

  • 执行脚本
docker.sh
  • 用xshell连接三个容器
  • 配置主机和ip映射,三台容器都需要执行
vim /etc/hosts
  • 配置如下
8.8.8.102 hadoop102
8.8.8.103 hadoop103
8.8.8.104 hadoop104

docker一键部署 docker一键部署大数据集群_容器_15

  • 配置免密登录
  • 设置公钥和私钥(此步骤需要在三台容器都执行)
#输入命令后一直按回车
ssh-keygen -t rsa
  • 拷贝公钥(此步骤需要在三台容器都执行)
#输入命令之后会输入yes,然后输入密码
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104

Hadoop安装

  • 在三台机子都运行如下命令
#安装所需要的工具
yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static tree iotop git
  • 创建分发文件脚本(写在hadoop102上102是我们的主机)
cd ~
mkdir bin
cd bin
touch my_rsync.sh
#提升权限
chmod 744 my_rsync.sh
vim my_rsync.sh
#!/bin/bash

#参数预处理
if [ $# -lt 1 ]
then
	echo '参数不能为空!!!'
	exit
fi

#遍历集群中的机器一次分发内容
for host in hadoop103 hadoop104
do
	#依次分发内容
	for file in $@
	do
		#判断当前文件是否存在
		if [ -e $file ]
		then
			#存在
			#1.获取当前文件的目录结构
			pdir=$(cd -P $(dirname $file); pwd)
			#2.获取当前的文件名
			fname=$(basename $file)
			#3.登录目标机器,创建同一目录结构
			ssh $host "mkdir -p $pdir"
			#4.依次把要分发的文件或目录进行分发
			rsync -av $pdir/$fname $host:$pdir
		else
			#不存在
			echo "$file 不存在"
			exit
		fi
	done
done
  • 将hadoop导入到/opt/software文件下(hadoop102上操作)
cd /opt/software/

docker一键部署 docker一键部署大数据集群_docker_16

  • 将其解压到/opt/service/
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/service/
  • 进入目录查看
cd /opt/service/

docker一键部署 docker一键部署大数据集群_docker一键部署_17

  • 将hadoop添加到环境变量
  • 第一步到hadoop家目录下获取路径
cd /opt/service/hadoop-3.1.3/
pwd

docker一键部署 docker一键部署大数据集群_容器_18

  • 第二步:打开/etc/profile.d/my_env.sh文件
vim /etc/profile.d/my_env.sh
  • 第三步:在my_env.sh中添加如下配置
#HADOOP_HOME
export HADOOP_HOME=/opt/service/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADDOP_HOME/sbin
  • 第四步:刷新配置文件
source /etc/profile.d/my_env.sh
  • 修改配置文件,进入$HADOOP_HOME/etc/hadoop
cd $HADOOP_HOME/etc/hadoop
  • 修改core-site.xml
vim core-site.xml
  • 修改内容如下
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:9820</value>
    </property>
    <!-- 指定hadoop数据的存储目录 -->
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/service/hadoop-3.1.3/data</value>
    </property>


        <property>
            <name>hadoop.http.staticuser.user</name>
            <value>root</value>
    </property>


        <property>
            <name>hadoop.proxyuser.root.hosts</name>
            <value>*</value>
    </property>

        <property>
            <name>hadoop.proxyuser.root.groups</name>
            <value>*</value>
    </property>

        <property>
            <name>hadoop.proxyuser.root.groups</name>
            <value>*</value>
    </property>

</configuration>
  • 配置hdfs-site.xml
vim hdfs-site.xml
  • 文件配置如下
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- nn web端访问地址-->
	<property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop102:9870</value>
    </property>
	<!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>
</configuration>
  • 配置yarn-site.xml
vim yarn-site.xml
  • 文件配置如下
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
</property>
<!-- 环境变量的继承 -->
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<!-- yarn容器允许分配的最大最小内存 -->
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>4096</value>
</property>
<!-- yarn容器允许管理的物理内存大小 -->
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
</property>
<!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
</configuration>
  • 配置mapred-site.xml
vim mapred-site.xml
  • 配置如下
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
  • 把文件分发到各个主机(使用前面所写的分发脚本)
cd $HADOOP_HOME
my_rsync.sh /opt/service/hadoop-3.1.3/
#把环境变量配置也分发过去,因为我们图方便用的root用户登录,所以可以直接用分发脚本
my_rsync.sh /etc/profile.d/my_env.sh
  • 格式化namenode
cd $HADOOP_HOME
hdfs namenode -format
  • 配置群起脚本(hadoop102上执行下面步骤)
  • 先修改配置
vim /opt/service/hadoop-3.1.3/etc/hadoop/workers
  • 配置内容如下(切记不能有然后空格和空行)
hadoop102
hadoop103
hadoop104
  • 分发刚才修改之后的文件
my_rsync.sh /opt/service/hadoop-3.1.3/etc/hadoop/workers
  • 回到home目录,并创建编写脚本
cd ~/bin
touch my_cluster.sh
chmod 744 my_cluster.sh
vim my_cluster.sh
  • 脚本内容如下
#!/bin/bash

if [ $# -lt 1 ]
then
	echo '参数不能为空!!!'
	exit
fi

case $1 in
"start")
	#启动HDFS集群
	echo "===========启动HDFS集群============"
	ssh hadoop102 /opt/service/hadoop-3.1.3/sbin/start-dfs.sh
	
	#启动YARN集群
	echo "===========启动YARN集群============"
	ssh hadoop103 /opt/service/hadoop-3.1.3/sbin/start-yarn.sh
;;
"stop")
	#启动HDFS集群
	echo "===========停止HDFS集群============"
	ssh hadoop102 /opt/service/hadoop-3.1.3/sbin/stop-dfs.sh
	
	#启动YARN集群
	echo "===========停止YARN集群============"
	ssh hadoop103 /opt/service/hadoop-3.1.3/sbin/stop-yarn.sh
;;
*)
	echo '参数错误!!!'
;;
esac
  • 在环境变量中添加如下几个配置
vim /etc/profile
#添加在末尾
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
  • 使用分发脚本把/etc/profile分发下去,并source /etc/profile(三台机子都需要执行source命令)
my_rsync.sh /etc/profile
source /etc/profile
  • 在$HADOOP_HOME/sbin路径下查找start-dfs.sh和stop-dfs.sh两个文件,在其顶部都添加上
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
  • 顺便在start-yarn.sh和stop-yarn.sh两个文件顶部也分别加上
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
  • 然后使用分发脚本把sbin分发下去
my_rsync.sh /opt/service/hadoop-3.1.3/sbin/*
  • 编写一个脚本方便查看集群状态
cd ~/bin
vim my_jps.sh
  • 内容如下
#!/bin/bash

#查看集群中所有的状态

for host in hadoop102 hadoop103 hadoop104
do
	echo "=========$host========="
	ssh $host jps
done
chmod 744 my_jps.sh
  • 在hadoop102上运行测试
#就使用刚才所写的群起脚本
my_cluster.sh start
  • 在物理机上访问8.8.8.102:9870

如果有3个就证明成功,建议在此保留一份快照

搭建MySQL【主机上】(hadoop102是我们的主机)

1.卸载Linux自带的MySQL
  • 1.1查自带的软件
#如果查询有没有结果就可以跳过卸载步骤
rpm -qa | grep -E mysql\|mariadb
  • 1.2卸载
#后面的mariadb-libs-5.5.68-1.el7.x86_64是前一步查询出的结果
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
2.正式安装MySQL
  • 上传MySQL软件包
cd /opt/software/
  • 在/opt/software/目录下创建一个文件来收纳tar包的解压文件
mkdir mysql-rpm
tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar -C ./mysql-rpm/

docker一键部署 docker一键部署大数据集群_容器_19

  • 到刚才解压到的包
cd /opt/software/mysql-rpm/
#安装依赖,防止MySQL安装报错
yum install -y libaio numactl
#安装MySQL,严格按照顺序安装
rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
  • 检查是否安装完成
rpm -qa | grep mysql

docker一键部署 docker一键部署大数据集群_容器_20

  • 初始化数据库
mysqld --initialize --user=mysql
  • 启动MySQL服务
systemctl start mysqld
  • 查看MySQL状态
  • 查看临时密码
cat /var/log/mysqld.log | grep password

docker一键部署 docker一键部署大数据集群_容器_21

  • 复制好刚才查看到的临时密码,登录MySQL
#不建议把刚才复制的密码直接粘贴到-p之后,建议下面命令回车之后再粘贴密码
mysql -uroot -p

docker一键部署 docker一键部署大数据集群_hive_22

  • 修改密码
set password = password('123456');

docker一键部署 docker一键部署大数据集群_hive_23

  • 修改远程连接,修改之后就可以使用Navicat连接MySQL
use mysql;
update user set host = '%' where user = 'root';
flush privileges;

docker一键部署 docker一键部署大数据集群_hive_24

搭建Hive集群(Hadoop103和Hadoop104)

  • 上传hive安装包
cd /opt/software/

docker一键部署 docker一键部署大数据集群_hive_25

  • 解压包
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/service/
  • 查看软件包,并修改名字
cd /opt/service/
mv apache-hive-3.1.2-bin/ hive-3.1.2
  • 配置环境变量
vim /etc/profile.d/my_env.sh
#hive
export HIVE_HOME=/opt/service/hive-3.1.2
export PATH=$PATH:$HIVE_HOME/bin

docker一键部署 docker一键部署大数据集群_docker_26

source /etc/profile.d/my_env.sh
  • 解决日志冲突
  • 删除jar包
cd /opt/service/hive-3.1.2/lib/
rm -rf log4j-slf4j-impl-2.10.0.jar
  • hive元数据配置到MySQL
cd $HIVE_HOME/conf
touch hive-site.xml
vim hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- jdbc连接的URL -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</value>
</property>

    <!-- jdbc连接的Driver-->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
</property>

	<!-- jdbc连接的username-->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>

    <!-- jdbc连接的password -->
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
</property>

    <!-- Hive默认在HDFS的工作目录 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
    
   <!-- Hive元数据存储的验证 -->
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
   
    <!-- 元数据存储授权  -->
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>
</configuration>
  • 将MySQL的JDBC驱动拷贝到Hive的lib目录下
cd $HIVE_HOME/lib

上传驱动包

  • 初始化源数据库
  • 回到hadoop102,连接MySQL创建数据库
mysql -uroot -p123456

docker一键部署 docker一键部署大数据集群_hive_27

create database metastore;

docker一键部署 docker一键部署大数据集群_docker_28

  • 回到hadoop103,初始化Hive元数据库
schematool -initSchema -dbType mysql -verbose

docker一键部署 docker一键部署大数据集群_大数据_29

  • 启动测试Hive
  • 首先要启动Hadoop集群
#启动好Hadoop集群之后在hadoop103执行命令
hive

docker一键部署 docker一键部署大数据集群_hive_30

  • 最后把文件和配置好的环境变量分发到hadoop104
scp -r /opt/service/hive-3.1.2/ root@hadoop104:/opt/service/
  • 环境变量也发送到hadoop104
scp -r /etc/profile.d/my_env.sh root@hadoop104:/etc/profile.d/

docker一键部署 docker一键部署大数据集群_容器_31

  • 此时Hive集群已完成

搭建Flume 【主机】

  • 上传安装包到/opt/software/
cd /opt/software/

docker一键部署 docker一键部署大数据集群_容器_32

  • 解压软件包
tar -zxvf apache-flume-1.9.0-bin.tar.gz -C /opt/service/
  • 修改名字
cd /opt/service/
mv apache-flume-1.9.0-bin/ flume-1.9.0

docker一键部署 docker一键部署大数据集群_大数据_33

  • 配置环境变量
vim /etc/profile.d/my_env.sh
#flume
export FLUME_HOME=/opt/service/flume-1.9.0
export PATH=$PATH:$FLUME_HOME/bin

docker一键部署 docker一键部署大数据集群_容器_34

  • source /etc/profile.d/my_env.sh
  • 解决与Hadoop的冲突
cd $FLUME_HOME/lib
rm -rf guava-11.0.2.jar

到此就已经安装完成

搭建Zookeeper(hadoop102上操作)

  • 先停掉Hadoop集群
#在hadoop102执行
my_cluster.sh stop
  • 上传软件包到/opt/software/
cd /opt/software/
  • 解压软件包
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/service/
  • 修改解压之后的名字
cd /opt/service/
mv apache-zookeeper-3.5.7-bin/ zookeeper-3.5.7

docker一键部署 docker一键部署大数据集群_docker_35

  • 创建数据目录
cd /opt/service/zookeeper-3.5.7/
mkdir zkData
  • 修改配置文件
cd /opt/service/zookeeper-3.5.7/conf/
mv zoo_sample.cfg zoo.cfg
vim zoo.cfg
  • 修改dataDir
dataDir=/opt/service/zookeeper-3.5.7/zkData

server.2=hadoop102:2888:3888
server.3=hadoop103:2888:3888
server.4=hadoop104:2888:3888

docker一键部署 docker一键部署大数据集群_容器_36

  • 给集群配标号
cd /opt/service/zookeeper-3.5.7/zkData/
touch myid
vim myid

在文件中输入2

docker一键部署 docker一键部署大数据集群_docker一键部署_37

  • 分发文件,讲zookeeper分发到集群
cd /opt/service/
my_rsync.sh zookeeper-3.5.7/

docker一键部署 docker一键部署大数据集群_大数据_38

  • 到另外两个容器中修改myid文件,hadoop103对应3,hadoop104对应4
cd /opt/service/zookeeper-3.5.7/zkData/
vim myid

docker一键部署 docker一键部署大数据集群_docker_39

docker一键部署 docker一键部署大数据集群_hive_40

  • 封装zookeeper集群启停脚本(hadoop102容器上操作)
cd ~/bin/
touch zk_cluster.sh
chmod 744 zk_cluster.sh
vim zk_cluster.sh
#!/bin/bash

if [ $# -lt 1 ]
then
	echo '参数不能为空!!!'
	exit
fi

for host in hadoop102 hadoop103 hadoop104
do
	case $1 in
	"start")
		echo "$1*****$host*******ZK**********"
		ssh $host /opt/service/zookeeper-3.5.7/bin/zkServer.sh $1
	;;
	"stop")
		echo "$1*****$host*******ZK**********"
                ssh $host /opt/service/zookeeper-3.5.7/bin/zkServer.sh $1
	;;
	"status")
		echo "$1*****$host*******ZK**********"
                ssh $host /opt/service/zookeeper-3.5.7/bin/zkServer.sh $1
	;;
	*)
		echo '参数有误!!!'
		exit
	;;
	esac
done

到此zookeeper集群就搭建完成

搭建HBASE集群

  • 上传软件包到hadoop102的/opt/software/目录下
cd /opt/software/

docker一键部署 docker一键部署大数据集群_hive_41

  • 解压安装包
tar -zxvf hbase-2.0.5-bin.tar.gz -C /opt/service/
  • 配置环境变量
vim /etc/profile.d/my_env.sh
#hbase
export HBASE_HOME=/opt/service/hbase-2.0.5
export PATH=$PATH:$HBASE_HOME/bin

docker一键部署 docker一键部署大数据集群_大数据_42

source /etc/profile.d/my_env.sh
  • 修改配置文件
#先到目录下
cd /opt/service/hbase-2.0.5/conf/
vim hbase-env.sh
  • 打开export HBASE_MANAGES_ZK=false配置
vim hbase-site.xml
<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://hadoop102:9820/hbase</value>
    </property>

    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>

    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>hadoop102,hadoop103,hadoop104</value>
    </property>
</configuration>
vim regionservers
hadoop102
hadoop103
hadoop104

docker一键部署 docker一键部署大数据集群_hive_43

  • 分发文件
cd /opt/service/
my_rsync.sh hbase-2.0.5/
my_rsync.sh /etc/profile.d/my_env.sh
  • 启动测试
#启动Hadoop集群
my_cluster.sh start
#启动zookeeper集群
zk_cluster.sh start
#启动Hbase
start-hbase.sh
  • 在物理机访问8.8.8.102:16010

若进程和我一样,并且能访问web那个界面证明hbase就安装成功了

搭建SQOOP集群

  • 我们在hadoop103上配置
  • 上传软件包到/opt/software/
cd /opt/software/
  • 解压软件包
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /opt/service/
  • 修改名字
mv sqoop-1.4.7.bin__hadoop-2.6.0/ sqoop-1.4.7
  • 配置环境变量
vim /etc/profile.d/my_env.sh
#sqoop
export SQOOP_HOME=/opt/service/sqoop-1.4.7
export PATH=$PATH:$SQOOP_HOME/bin

docker一键部署 docker一键部署大数据集群_容器_44

source /etc/profile.d/my_env.sh
  • 修改配置文件
cd $SQOOP_HOME/conf
#重命名配置文件
mv sqoop-env-template.sh sqoop-env.sh
vim sqoop-env.sh

docker一键部署 docker一键部署大数据集群_docker一键部署_45

  • 拷贝jdbc驱动到sqoop的lib
#到了这个目录上传驱动
cd $SQOOP_HOME/lib
  • 验证连接
sqoop list-databases --connect jdbc:mysql://hadoop102:3306/ --username root --password 123456

docker一键部署 docker一键部署大数据集群_docker_46

如此便成功安装sqoop

搭建Kafaka集群(hadoop102上操作)

  • 上传软件包到/opt/software/
cd /opt/software/
  • 解压软件包
tar -zxvf kafka_2.11-2.4.1.tgz -C /opt/service/
  • 修改名字
cd /opt/service/
mv kafka_2.11-2.4.1/ kafka
  • 配置环境变量
vim /etc/profile.d/my_env.sh
#kafka
export KAFKA_HOME=/opt/service/kafka
export PATH=$PATH:$KAFKA_HOME/bin

docker一键部署 docker一键部署大数据集群_hive_47

  • 分发文件(分发完之后三个容器都运行一下 source /etc/profile.d/my_env.sh)
my_rsync.sh /etc/profile.d/my_env.sh
  • 修改配置文件
cd $KAFKA_HOME/config
vim server.properties
  • 修改broker.id
broker.id=2

docker一键部署 docker一键部署大数据集群_容器_48

  • 修改log.dirs
log.dirs=/opt/service/kafka/logs

docker一键部署 docker一键部署大数据集群_hive_49

  • 修改zookeeper.connect
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka

docker一键部署 docker一键部署大数据集群_docker一键部署_50

  • 分发文件
cd /opt/service/
my_rsync.sh kafka/
  • 修改另外两个容器的broker.id
  • 到hadoop103
vim /opt/service/kafka/config/server.properties

docker一键部署 docker一键部署大数据集群_docker一键部署_51

  • 到hadoop014
vim /opt/service/kafka/config/server.properties

docker一键部署 docker一键部署大数据集群_容器_52

  • 启动测试
  • 编写群起脚本
cd ~/bin/
touch kafka_all.sh
chmod 744 Kafka_all.sh
vim kafka_all.sh
#!/bin/bash

for host in hadoop102 hadoop103 hadoop104
do
	ssh $host kafka-server-start.sh -daemon /opt/service/kafka/config/server.properties
done
  • 启动之前一定要先启动zookeeper,可以先查看状态(只启动zookeeper就可以了,其他东西尽量关掉)
my_jps.sh

docker一键部署 docker一键部署大数据集群_容器_53

  • 启动kafka
kafka_all.sh
#查看所有jps
my_jps.sh

docker一键部署 docker一键部署大数据集群_大数据_54

如果和我进程一样就说明成功安装好了kafka

搭建Spark集群

  • 上传文件到/opt/software
cd /opt/software
  • 解压文件
tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/service/
  • 修改文件名
cd /opt/service
mv spark-3.0.0-bin-hadoop3.2/ spark-standalone
  • 修改配置文件
cd /opt/service/spark-standalone/conf/
#修改文件名
mv slaves.template slaves
vim slaves
hadoop102
hadoop103
hadoop104

docker一键部署 docker一键部署大数据集群_大数据_55

mv spark-env.sh.template spark-env.sh
vim spark-env.sh
export JAVA_HOME=/opt/service/jdk1.8.0_212
SPARK_MASTER_HOST=hadoop102
SPARK_MASTER_PORT=7077

docker一键部署 docker一键部署大数据集群_大数据_56

  • 分发文件
cd /opt/service/
my_rsync.sh spark-standalone/
  • 启动集群
cd /opt/service/spark-standalone/
sbin/start-all.sh
  • 使用my_jps.sh查看进程
  • 访问web ui
8.8.8.102:8080

docker一键部署 docker一键部署大数据集群_容器_57

  • 如此便安装成功

搭建Redis

  • 上传文件到/opt/software/
cd /opt/software/
  • 解压文件
tar -zxvf redis-5.0.2.tar.gz -C /opt/service/
  • 进入解压目录执行make命令
#先下载依赖包
yum -y install gcc automake autoconf libtool make
cd /opt/service/redis-5.0.2/
make
  • 执行make install 创建快捷方式
cd /opt/service/redis-5.0.2/
make install

docker一键部署 docker一键部署大数据集群_docker_58

  • 启动redis
redis-server

docker一键部署 docker一键部署大数据集群_hive_59

  • 如此便完全安装成功了