云计算-webservice-springcloud-hadoop-docker-openstack

简介: 云计算-webservice-springcloud-hadoop-docker-openstack

本学期源代码下载链接

webservice1-1

很简单,不上代码了



1-2 springcloud

创建项目

配置文件,启动心脏节点

访问心脏节点


配置文件,写代码,启动1个服务节点

服务节点代码

访问服务http://127.0.0.1:8766/hi

、观察心脏节点信息

在局域网中 手机 再次访问 服务节点

2-1搭建hadoop

搭建hadoop3.2.1平台

在hadoop3.2.1基础上,使用了nginx 作为请求hadoop的转发代理,进一步增加负载能力

hadoop云服务

主要配置文件

Cd /cloudcomput/hadoop-3.2.1/etc/hadoop
/cloudcomput/hadoop-3.2.1/etc/hadoop/core-site.xml
/cloudcomput/hadoop-3.2.1/etc/hadoop/mapred-site.xml
/cloudcomput/hadoop-3.2.1/etc/hadoop/hdfs-site.xml
/cloudcomput/hadoop-3.2.1/etc/hadoop/yarn-site.xml
#一键重置本地免密登陆
(chattr -i /root/.ssh/authorized_keys) && (rm -rf /root/.ssh) && (mkdir /root/.ssh) && (ssh-keygen -t dsa -P ‘’ -f ~/.ssh/id_dsa) && (cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys) && (chmod 700 ~/.ssh) && (chmod 644 ~/.ssh/authorized_keys) && (ssh localhost -o StrictHostKeyChecking=no)
##一键重新配置hadoop,并启动
(/cloudcomput/hadoop-3.2.1/sbin/stop-all.sh)&&(rm -rf /cloudcomput/hadoop-3.2.1/tmp) && (mkdir /cloudcomput/hadoop-3.2.1/tmp)&&(hadoop namenode -format)&&(/cloudcomput/hadoop-3.2.1/sbin/start-all.sh)
#一键重置本地免密登陆
(chattr -i /root/.ssh/authorized_keys) && (rm -rf /root/.ssh) && (mkdir /root/.ssh) && (ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa) && (cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys) && (chmod 700 ~/.ssh) && (chmod 644 ~/.ssh/authorized_keys) && (ssh localhost -o StrictHostKeyChecking=no)
##重新配置hadoop
(/cloudcomput/hadoop-3.2.1/sbin/stop-all.sh)&&(rm -rf /cloudcomput/hadoop-3.2.1/tmp) && (mkdir /cloudcomput/hadoop-3.2.1/tmp)&&(hadoop namenode -format)&&(/cloudcomput/hadoop-3.2.1/sbin/start-all.sh)

访问hadoop 服务

hadoop云服务

搭建完成

查看日志

查看文件系统

🧪实验2-2 haoop 编程

本实验在 搭建好的 hadoop 平台上进行操作

hadoop平台

我借鉴类编程,面向对象的思想,封装了,pyhdfs 中的一些方法,进一步简化了hadoop编程,在java中可能进行hadoop编程需要导入很多包,但是python中只需要import 我编写的hadoop访问接口即可


二次封装hadoop访问


一行代码即可操作hadoop


导入我实现的 pyhdfs 的二次封装包


#导入我编写的hadoop访问类

import cloudcomput.hadoop_file_oprate as hdfs根据url ,为了简化实验,没有设置密码,获得连接

先创建一个本地文件 temp_file1.txt

上传文件之前先查看haoop已有的文件,即文件夹

创建文件夹


检查文件夹内部为空

上传文件

查看某个文件内容


实验2-3 mapreduce求最高气温

部分原始数据
2014010114
2014010216
2014010317
2014010410


#!/usr/local/python3/bin/python3
import sys
for line in sys.stdin:
    fields = line.split()
    for item in fields:
        print(item[:4], ' ', item[-2:])

#!/usr/local/python3/bin/python3
import sys
result={}
for line in sys.stdin:
kvs=line.strip().split(’ ')
k=kvs[0]
v=kvs[3]
if k in result:
if int(result[k])< int(v):
result[k]=str(v)
else:
result[k]=str(v)
for k,v in result.items():
print(’%s\t%s’ %(k,v))

脚本 run.sh 内容

# 配置 hadoop 的 执行命令 在安装路径的bin 文件中
HADOOP_CMD="/cloudcomput/hadoop-3.2.1/bin/hadoop"
# 配置 配置 streaming jar包的 路径
STREAM_JAR_PATH="/cloudcomput/hadoop-3.2.1/share/hadoop/tools/lib/hadoop-streaming-3.2.1.jar"
#配置 需要 计算的 输入文件的路径
#如果有 多个文件可以书写为 /{文件夹名称}/*.txt   或者其他格式  
INPUT_FILE_PATH_1="/shiyan2/input.txt"
#配置 输出文件的 文件夹目录
OUTPUT_PATH="/output"
# 在执行之前如果 存在 输出文件夹 原本会报错 ,
#所以执行之前先删除 output 文件夹 , 再 导出文件
$HADOOP_CMD fs -rm -r skipTrash $OUTPUT_PATH
# Step 1.
# hadoop jar  streaming.jar
$HADOOP_CMD jar $STREAM_JAR_PATH   \
-input $INPUT_FILE_PATH_1   \
-output $OUTPUT_PATH   \
-mapper  ./map.py   \
-reducer ./reduce.py  \
-file ./map.py   \
-file ./reduce.py  \
#配置 mapper 步骤的 算法py文件
#即  可以在 子节点进行的计算
#配置 reducer 步骤的 算法py文件
#需要 汇总计算 的文件

最后结果

2001 29

2007 99

2008 37

2010 17

2012 32

2013 29

2014 17

2015 99


2-4 日志分析

实验目的:统计不同ip登陆我服务器的次数

日志原料: 某django项目的近期日志,一共78.6mb

单行数据类型为 uwsgi标准日志输出

66.249.64.220 - - [03/Dec/2019:07:46:30 +0800] “GET /static/js/bootstrap-select.min.js HTTP/1.1” 200 33387 “https://www.limengkai.work/” “Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Safari/537.36”

编写 maplog程序

#!/Library/Frameworks/Python.framework/Versions/3.6/bin/python3
#指定编译环境
import sys
for line in sys.stdin:
fields = line.split()
print(fields[0],’ ‘,fields[3])
编写reducelog
#!/Library/Frameworks/Python.framework/Versions/3.6/bin/python3
#指定编译环境
import sys
result={}
for line in sys.stdin:
kvs=line.strip().split(’ ')
# print(kvs)
# 切分后格式[‘121.28.69.77’, ‘’, ‘’, ‘[16/Oct/2019:10:35:15’]
# 代表ip
k=kvs[0]
#代表访问时间
v=kvs[3]
#访问次数
c=0
if k in result:
    # print(k,v)
        result[k]=str(int(result[k])+1)
else:
    result[k]=str(1)


for k,v in result.items():

print(’%s\t%s’ %(k,v))

本地运行部分数据检测脚本正确性

101.132.100.6 1
101.132.102.45 1
101.132.104.157 5
101.132.110.72 4
101.132.114.23 5
101.132.144.145 1
101.132.156.172 2
101.132.159.51 5
101.132.166.245 9
101.132.177.14 1
101.132.182.68 1
101.132.188.111 1
101.132.191.83 4
101.132.193.68 2
101.132.69.5 1
101.132.78.36 4
101.132.97.53 1
101.198.186.223 25
101.228.126.192 1

检查脚本无误后,编写run.sh 脚本

# 配置 hadoop 的 执行命令 在安装路径的bin 文件中
HADOOP_CMD="/cloudcomput/hadoop-3.2.1/bin/hadoop"
# 配置 配置 streaming jar包的 路径
STREAM_JAR_PATH="/cloudcomput/hadoop-3.2.1/share/hadoop/tools/lib/hadoop-streaming-3.2.1.jar"
#配置 需要 计算的 输入文件的路径
#如果有 多个文件可以书写为 /{文件夹名称}/*.txt   或者其他格式  
INPUT_FILE_PATH_1="/sy3/temp_file1.txt"
#配置 输出文件的 文件夹目录
OUTPUT_PATH="/sy3output"
# 在执行之前如果 存在 输出文件夹 原本会报错 ,
#所以执行之前先删除 output 文件夹 , 再 导出文件
$HADOOP_CMD fs -rm -r skipTrash $OUTPUT_PATH
# Step 1.
# hadoop jar  streaming.jar
$HADOOP_CMD jar $STREAM_JAR_PATH   \
-input $INPUT_FILE_PATH_1   \
-output $OUTPUT_PATH   \
-mapper  ./maplog.py   \
-reducer ./reducelog.py  \
-file ./maplog.py   \
-file ./reducelog.py  \

#配置 mapper 步骤的 算法py文件

#即 可以在 子节点进行的计算

#配置 reducer 步骤的 算法py文件

#需要 汇总计算 的文件

目录结构

定linux 定期执行 crontab

#查看当前电脑上的所有定时任务

crontab -l

0 7 */1 * * /amyscript/sendemail.sh

20 5 1,2,3,4,5 * * /amyscript/sendtoxxx1.sh

20 5 6,7 * * /amyscript/sendtoxxx2.sh


#更改服务器上的定时任务

crontab -e

#更改成功的提示

crontab: installing new crontab


添加 该脚本 定期执行即可

查看hadoop 运算的日志计算 job

http://xxxxx:8088/cluster/app/application_1575331470326_0002

20191203180442409.png


Finish job还没有结束

已经计算了 5分9秒

20191203180451991.png

由于日志文件较大,服务器2g 运行,所以会等待一段时间


等待运行结束后

运行日志


20191203180517491.png


部分结果,结果很长有上千 ip,其中我本人用得最多的,几个ip高达10万次

120.78.231.236 4
121.224.7.5 1
121.28.69.77 182393
121.28.69.79 1
121.28.69.82 7
121.28.69.83 8744
121.28.69.87 1
121.28.69.88 2656
61.157.96.12 5
61.157.96.14 134
61.182.207.142 37189
61.219.11.153 22
62.138.6.176 3
63.32.131.24 1
63.33.200.193 39

20191203180534689.png

日志分析结果很有趣,发现还有来自德国 A类 的ip访问

199.102.164.164 1

2.56.8.17 1

200.19.156.22 1

经过ip查询

2.56.8.17来自德国法兰克福

实验3 ec2操作


实验四

Centos 安装docker

yum install docker

由于国内 pull 镜像很慢,所以我在阿里云做了自己的仓库来提高速度

访问我的镜像仓库

查看一个我的nginx

运行90个nginx 容器服务

在 58810到58899


/直接复制粘贴到终端,如果出现半角错误,请现在记事本纠正

for (( i = 10; i <= 15; i++ ))
do
 (docker run -tdi     --name   mynginx$i  -p 588$i:80   registry.cn-hangzhou.aliyuncs.com/mkmk/nginx:v1 'bash') && (docker exec -d mynginx$i 'bash'  -c "nginx" )
done

请随意访问 (极少的端口可能已经被其他程序占用)

http://limengkai.work:58810/

http://limengkai.work:58899/

他们都是相互独立的nginx 镜像

docker启动我制作的jupyter镜像

操作hadoop

http://limengkai.work:64891/

密码 zhaozhihong

连接hadoop, 进行python hadoop编程

Hadoop 创建文件夹 python实现

5-1 openstack 实验

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
IDE Linux KVM
云计算|OpenStack|社区版OpenStack---基本概念科普(kvm的驱动类别和安装)
云计算|OpenStack|社区版OpenStack---基本概念科普(kvm的驱动类别和安装)
136 0
|
1月前
|
存储 消息中间件 数据库
云计算|OpenStack|社区版OpenStack安装部署文档(八--- 存储服务cinder的安装部署---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(八--- 存储服务cinder的安装部署---Rocky版)
120 0
|
1月前
|
运维 数据可视化 Linux
云计算|OpenStack|社区版OpenStack安装部署文档(七--- 仪表盘服务dashboard的安装部署---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(七--- 仪表盘服务dashboard的安装部署---Rocky版)
90 0
|
1月前
|
Ubuntu Linux 网络安全
云计算|OpenStack|社区版OpenStack(实务操作---cloud-init的使用)
云计算|OpenStack|社区版OpenStack(实务操作---cloud-init的使用)
198 0
|
1月前
|
云计算 数据安全/隐私保护 虚拟化
云计算|OpenStack|社区版OpenStack安装部署文档(十一--- 如何获取镜像---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(十一--- 如何获取镜像---Rocky版)
73 0
|
19天前
|
监控 安全 云计算
云端防御战线:云计算环境下的网络安全策略构建高效稳定的Docker容器监控体系
【5月更文挑战第27天】 在数字化时代的浪潮中,云计算已成为企业与个人存储和处理数据的重要平台。然而,随着云服务使用率的飙升,网络威胁也愈发狡猾且复杂。本文将深入探讨在云计算环境中维护网络安全的挑战及策略,重点分析信息安全的关键组成部分,并提出多层次防御模型以增强云环境的数据保护能力。通过剖析最新的安全技术与实践,我们旨在为读者提供一套全面的网络安全解决方案蓝图。
|
1月前
|
IDE Linux KVM
云计算|OpenStack|社区版OpenStack安装部署文档(十二--- openstack的网络模型解析---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(十二--- openstack的网络模型解析---Rocky版)
92 0
|
1月前
|
安全 Devops 虚拟化
【专栏】虚拟化技术与云计算平台 OpenStack:硬件虚拟化、操作系统级虚拟化和容器化
【4月更文挑战第28天】本文探讨虚拟化技术原理,如硬件虚拟化、操作系统级虚拟化和容器化,以及开源云计算平台OpenStack如何利用这些技术提供优势。OpenStack支持多种虚拟化技术,具备开源灵活性、多租户架构、可扩展性、插件式设计和成本效益。未来,OpenStack将在容器化、DevOps、跨云策略和安全合规性方面发挥更大作用,助力企业数字化转型。
|
1月前
|
Kubernetes 云计算 开发者
云计算中的容器化技术:Docker与Kubernetes的实践
云计算中的容器化技术:Docker与Kubernetes的实践
294 0
|
1月前
|
存储 边缘计算 监控
探索未来科技趋势:虚拟化技术与云计算平台OpenStack的概念与实践
在迅猛发展的信息技术时代,企业和组织对于高效、可扩展的计算资源需求日益增长。虚拟化技术和云计算平台OpenStack应运而生,为企业提供了一种灵活、可靠的解决方案。本文将深入探讨虚拟化技术与OpenStack的概念和实践,展示它们在现代科技领域中的重要性和应用前景。
118 3