• 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.

  • 相关阅读:
    练习44-继承和组合
    CF 1329B Dreamoon Likes Sequences
    CF 1362C Johnny and Another Rating Drop
    CF 1391D 505
    CF 1383B GameGame
    CF1360F Spy-string(暴力)
    Java 之 关键字与标识符
    Java 之 Java 注释与 API
    Java 之 第一个Java程序
    Java 之 Java开发环境
  • 原文地址:https://www.cnblogs.com/zhangjiusi/p/12900574.html
Copyright © 2020-2023  润新知