基于Docker的分布式实时计算平台的Storm的部署过程
1.安装 docker
sudo apt update
sudo snap install docker
# 确认docker安装信息
sudo docker info
# 停止启动查看服务
sudo snap stop docker
sudo snap start docker
snap services
# 设置以非root用户身份运行docker命令
cat /etc/group |grep docker
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker #更新用户组
# 重启系统之后查看docker信息
docker info
安装docker与确认docker安装信息
2.搭建Docker集群
2.1Docker Ubuntu上安装ssh和连接ssh
docker pull ubuntu
# 启动镜像
docker run -it --name master -h master ubuntu bash
# 在容器中执行
apt install openssh-server
# 设置一个root密码
passwd
# 修改配置文件
vim /etc/ssh/sshd_config
# 注释 PermitRootLogin prohibit-password
# 添加 PermitRootLogin yes
/etc/init.d/ssh restart
update-rc.d ssh enable
#
ssh root@localhost
#
ssh-keygen -t rsa -P ''
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
进入容器,安装ssh
安装ssh
修改配置文件
2.2安装并配置Java环境
cd ~
wget https://download.oracle.com/otn/java/jdk/8u291-
b10/d7fc238d0cbf4b0dac67be84580cfb4b/jdk-8u291-linux-x64.tar.gz?
AuthParam=1620749617_c9ce7691a135d911c54bd08097d30c3b
#
mkdir /usr/lib/jvm
tar -zxvf jdk-8u291-linux-x64.tar.gz -C /usr/lib/jvm
vim ~/.bashrc
# 在文件末尾追加下面内容:
# set oracle jdk environment
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_291
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
#
source ~/.bashrc
java -version
wget这一步要去实际的官网复制相应的链接
安装并配置Java环境
2.3 制作Docker镜像
docker commit -a "wcf" -m "vim openssh jdk1.8" master wcf
/ubuntu:liu3.14
docker images
其中wcf是docker用户名,可以修改成自己想要的名字
2.4 运行容器
# 后台运行并启动命令sshd -D
docker run -d -p 2222:22 --name master -h master Docker用户名/ubuntu:liu3.14
/usr/sbin/sshd -D
docker run -d --name slave01 -h slave01 Docker用户名/ubuntu:liu3.14
/usr/sbin/sshd -D
docker run -d --name slave02 -h slave02 Docker用户名/ubuntu:liu3.14
/usr/sbin/sshd -D
# 启动容器bash
liu@lnu:~$ docker exec -it master bash
liu@lnu:~$ docker exec -it slave01 bash
liu@lnu:~$ docker exec -it slave02 bash
这里要注意master的容器会跟前面的容器名重复,用docker rename进行重命名。
3.部署Hadoop
3.1 hosts地址映射`
# 编辑所有节点 /etc/hosts
vim /etc/hosts
# 内容如下:
172.17.0.2 master
172.17.0.3 slave01
172.17.0.4 slave02
# shell脚本
root@master:~# vim /etc/profile.d/my_host.sh
# 内容如下:
echo 172.17.0.2 master >> /etc/hosts
echo 172.17.0.3 slave01 >> /etc/hosts
echo 172.17.0.4 slave02 >> /etc/hosts
root@master:~# source /etc/profile.d/my_host.sh
root@master:~#scp /etc/profile.d/my_host.sh slave01:/etc/profile.d
root@master:~#scp /etc/profile.d/my_host.sh slave02:/etc/profile.d
# 分别在slave节点运行
source /etc/profile.d/my_host.sh
修改文件配置时,主从节点都要修改。
3.2 ssh无密码互通
# Master节点可以SSH无密码登录到各个Slave节点
root@master:/#
cd ~/.ssh
rm ./id_rsa*
ssh-keygen -t rsa
cat ./id_rsa.pub >> ./authorized_keys
scp ~/.ssh/id_rsa.pub root@slave01:/root/
# 在slave01节点上,将SSH公匙加入授权:
root@slave01:/#
mkdir ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub
# 在slave02节点上进行相同操作
3.3安装 hadoop
root@master:/#
cd ~
wget https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-3.1.4/hadoop-
3.1.4.tar.gz
tar -zxvf hadoop-3.1.4.tar.gz -C /usr/local/
cd /usr/local
mv ./hadoop-3.1.4/ ./hadoop
/usr/local/hadoop/bin/hadoop version
# 配置运行环境
vim ~/.bashrc
# 添加如下配置:
# set hadoop environment config
export PATH=/usr/local/hadoop/bin:/usr/local/hadoop/sbin:$PATH
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
# 使配置生效
source ~/.bashrc
3.4 配置集群
# (1)修改文件workers
# (2)修改文件core-site.xml
# (3)修改文件hdfs-site.xml
# (4)修改文件mapred-site.xml
# (5)修改文件yarn-site.xml
# (6)修改文件hadoop-env.sh
# 上述5个文件全部配置完成以后,将master的/usr/local/hadoop复制到其他节点.
root@master: cd /usr/local
tar -zcf ~/hadoop.master.tar.gz ./hadoop
cd ~
scp ./hadoop.master.tar.gz slave01:/root
scp ./hadoop.master.tar.gz slave02:/root
# 在两个slave节点上运行
root@slave01: cd ~
tar -zxf ~/hadoop.master.tar.gz -C /usr/local
# 首次启动Hadoop集群时,需要先在master节点执行名称节点的格式化
root@master:~# hdfs namenode -format
# 配置root用户直接启动hadoop
root@master:~# vim /etc/profile.d/my_env.sh
# 添加的配置如下:
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
# 执行生效
root@master:~# source /etc/profile.d/my_env.sh
# 启动hadoop集群
# my_host.sh需要在各个节点上运行
source /etc/profile.d/my_host.sh
# my_env.sh需要在master节点上运行
root@master:~#
source /etc/profile.d/my_env.sh
start-all.dfs
首先配置六个文件,要进入hadoop/etc/hadoop下进行配置,相关的配置文件内容如下链接请点击
首次启动Hadoop集群时,需要先在master节点执行名称节点的格式化
4 部署Zookeeper
4.1 安装与集群配置
root@master:~# cd ~
wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-
zookeeper-3.7.0-bin.tar.gz
tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz -C /usr/local/
cd /usr/local
mv apache-zookeeper-3.7.0-bin/ zookeeper
cd zookeeper
mkdir data # 用户存储快照文件的目录
mkdir logs
cd conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
root@master:~# cd /usr/local/zookeeper/data
vim myid # 内容为1,对应server.1
cd /usr/local/
scp -r zookeeper slave01:/usr/local/
scp -r zookeeper slave02:/usr/local/
# 修改myid内容为2,对应server.2
root@slave01:/# vim /usr/local/zookeeper/data/myid
# 修改myid内容为3,对应server.3
root@slave02:/# vim /usr/local/zookeeper/data/myid
# 在master配置路径环境
root@master:~#
vim ~/.bashrc
source ~/.bashrc
root@master:~#
scp ~/.bashrc slave01:~/
scp ~/.bashrc slave02:~/
root@slave01:~# source ~/.bashrc
root@slave02:~# source ~/.bashrc
4.2 运行zookeeper
root@master:~# zkServer.sh start
root@slave01:~# zkServer.sh start
root@slave02:~# zkServer.sh start
# 测试ZooKeeper客户端
root@master:~#
zkServer.sh status
出现上图的即为成功
5 部署Storm
5.1 安装与集群配置`
root@master:~# cd ~
wget https://mirrors.tuna.tsinghua.edu.cn/apache/storm/apache-storm-
2.2.0/apache-storm-2.2.0.tar.gz
tar -zxvf apache-storm-2.2.0.tar.gz -C /usr/local/
cd /usr/local/
mv apache-storm-2.2.0/ storm
cd storm/conf
vim storm.yaml
root@master:/usr/local/storm# mkdir data
cd /usr/local/
scp -r storm slave01:/usr/local/
scp -r storm slave02:/usr/local/
# 在master配置路径环境
root@master:~#
vim ~/.bashrc
source ~/.bashrc
root@master:~#
scp ~/.bashrc slave01:~/
scp ~/.bashrc slave02:~/
root@slave01:~# source ~/.bashrc
root@slave02:~# source ~/.bashrc
5.2 启动storm集群
# 在master启动Hadoop集群
root@master:~#
start-all.sh
# 在所有节点启动zookeeper
root@master:~# zkServer.sh start
root@slave01:~# zkServer.sh start
root@slave02:~# zkServer.sh start
#
# Docker镜像的ubuntu没有python,需要安装用以执行storm启动脚本
apt install python -y
# 启动
root@master:/# storm nimbus
root@master:/# storm ui
root@slave01:/# storm supervisor
root@slave02:/# storm supervisor
root@master:/# curl http://172.17.0.2:9080
出现上图就是成功部署了Storm