2020系统综合实践 第4次实践作业

一.使用Docker-compose实现Tomcat+Nginx负载均衡

(1)理解nginx反向代理原理;

(2)nginx代理tomcat集群,代理2个以上tomcat;

构建以下目录及文件

docker-compose.yml

default.conf

index.html

运行docker-compose
docker-compose up -d

(3)nginx的负载均衡策略

轮询策略测试负载均衡

此时三者轮流出现

权重策略测试负载均衡
修改default.conf

很明显可以看到3>2>1

二.使用Docker-compose部署javaweb运行环境

使用老师给的教程中的应用

docker-compose.yml

default.conf

jdbc.properties

修改上述两个文件 注意端口号要对准 不然后续可能会出现连不上的情况

运行后进入http://10.0.2.15:5050/ssmgrogshop_war

进行简单的数据库操作 此处以插入举例

三.使用Docker搭建大数据集群环境

(1)搭建hadoop环境

创建以下目录结构

Dockerfile

source.list

创建并运行容器

sudo docker build -t ubuntu:18.04 .
sudo docker run -it --name ubuntu ubuntu:18.04

(2))容器初始化

安装必要工具

apt-get update
apt-get install vim # 用于修改配置文件
apt-get install ssh # 分布式hadoop通过ssh连接
/etc/init.d/ssh start # 开启sshd服务器
vim ~/.bashrc # 在文件末尾添加/etc/init.d/ssh start,实现ssd开机自启

实现ssh无密码登陆

cd ~/.ssh       
ssh-keygen -t rsa # 一直按回车即可
cat id_rsa.pub >> authorized_keys #这一步要在~/.ssh目录下进行

安装jdk

apt install openjdk-8-jdk
vim ~/.bashrc       # 在文件末尾添加以下两行,配置Java环境变量:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
export PATH=$PATH:$JAVA_HOME/bin
source ~/.bashrc 
java -version #查看是否安装成功

安装hadoop

docker cp ./build/hadoop-3.1.3.tar.gz 容器ID:/root/build
cd /root/build
tar -zxvf hadoop-3.1.3.tar.gz -C /usr/local
vim ~/.bashrc  
export HADOOP_HOME=/usr/local/hadoop-3.1.3
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$JAVA_HOME/bin
source ~/.bashrc # 使.bashrc生效
hadoop version

(3)配置hadoop集群

进入配置目录
cd /usr/local/hadoop-3.1.3/etc/hadoop

hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ # 在任意位置添加

core-site.xml

<configuration>
          <property> 
                  <name>hadoop.tmp.dir</name>
                  <value>file:/usr/local/hadoop-3.1.3/tmp</value>
                  <description>Abase for other temporary directories.</description>
          </property>
          <property>
                  <name>fs.defaultFS</name>
                  <value>hdfs://master:9000</value>
          </property>
</configuration>

hdfs-site.xml

<configuration>
        <property>
                <name>dfs.replication</name>
                <value>1</value>
        </property>
        <property>
                <name>dfs.namenode.name.dir</name>
		        <value>file:/usr/local/hadoop-3.1.3/tmp/dfs/name</value>
	</property>
	<property>
                <name>dfs.datanode.data.dir</name>
                <value>file:/usr/local/hadoop-3.1.3/tmp/dfs/data</value>
	</property>
	<property>
                <name>dfs.permissions.enabled</name>
                <value>false</value>
        </property>
</configuration>

mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>yarn.app.mapreduce.am.env</name>
        <value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.3</value>
    </property>
    <property>
        <name>mapreduce.map.env</name>
        <value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.3</value>
    </property>
    <property>
        <name>mapreduce.reduce.env</name>
        <value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.1.3</value>
    </property>
</configuration>

yarn-site.xml

<?xml version="1.0" ?>
<configuration>
<!-- Site specific YARN configuration properties -->
        <property>
               <name>yarn.nodemanager.aux-services</name>
               <value>mapreduce_shuffle</value>
        </property>
        <property>
               <name>yarn.resourcemanager.hostname</name>
               <value>Master</value>
        </property>
        <!--虚拟内存和物理内存比,不加这个模块程序可能跑不起来-->
        <property>
               <name>yarn.nodemanager.vmem-pmem-ratio</name>
               <value>2.5</value>
        </property>
</configuration>

进入脚本目录
cd /usr/local/hadoop-3.1.3/sbin
对于start-dfs.sh和stop-dfs.sh文件,添加下列参数

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

对于start-yarn.sh和stop-yarn.sh,添加下列参数

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

(4)构建镜像

docker commit 容器ID ubuntu/hadoop

(5)利用构建好的镜像运行主机


# 第一个终端
docker run -it -h master --name master ubuntu/hadoop
# 第二个终端
docker run -it -h slave01 --name slave01 ubuntu/hadoop
# 第三个终端
docker run -it -h slave02 --name slave02 ubuntu/hadoop

三个终端分别打开/etc/hosts,根据各自ip修改为如下形式

172.17.0.3      master
172.17.0.4      slave01
172.17.0.5      slave02

在master结点测试ssh;连接到slave结点

ssh slave01
ssh slave02
exit #退出

master主机上修改workers
vim /usr/local/hadoop-3.1.3/etc/hadoop/workers

slave01
slave02

测试Hadoop集群

#在master上操作
cd /usr/local/hadoop-3.1.3
bin/hdfs namenode -format      #首次启动Hadoop需要格式化
sbin/start-all.sh              #启动所有服务
jps                            #分别查看三个终端

(6)运行Hadoop实例程序

bin/hdfs dfs -mkdir -p /user/hadoop/input
bin/hdfs dfs -put ./etc/hadoop/*.xml /user/hadoop/input
bin/hdfs dfs -ls /user/hadoop/input

执行实例并查看运行结果

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep /user/hadoop/input output 'dfs[a-z.]+'
bin/hdfs dfs -cat output/*

四.总结

这次实验量很大做的磕磕碰碰,大概从下午两点做到晚上两点,发现很多问题,到现在其实还不明白为什么这样就可以,还是得继续学习。
总而言之 第一个实验没什么问题,第二个实验有老师的参考程序大体没什么问题 主要粗心在把容器名字打重复了找了一个多小时bug,第三个实验就量大综合,能搞懂的话能进步很多。
最后还是感谢各位帮助我的大佬orz.

原文地址:https://www.cnblogs.com/zhangjiusi/p/12900574.html