分布式文件系统
第1关:初识分布式文件系统
- 请在下列选项中选择不是描述分布式文件系统的一项()
C. 分布式文件系统只能通过本地节点管理存储资源
- 以下哪些属于分布式文件系统的特点()
A.可以组建集群存储系统。
B. 可扩展性强,增加存储节点和追踪器都比较容易。
D. 在对个文件副本之间就进行负载均衡,可以通过横向扩展来确保性能的提升。
- 下列是分布式文件存储服务的为()
C. Ceph
D. HDFS
第2关:常见的分布式文件系统介绍
- 以下关于GFS 的描述正确的是()
C. Google 公司公布了 GFS 的技术细节,但并没有作为开源软件发布。
- 关于下列叙述错误的是()
B、Ceph 是一个优秀的、可靠的、可扩展的、成熟的分布式文件系统。
D、Mogilefs 支持多节点冗余,不能实现自动的文件复制。
- 下列叙述正确的是()
A. GridFS 是 MongoDB 的一个内置功能,它提供一组文件操作的 API 以利用 MongoDB 存储文件。
B. Lustre 适合存储小文件、图片的分布式系统研究。
C. TFS 是一个高可扩展、高可用、高性能、面向互联网服务的分布式文件系统,主要针对海量的非结构化数据。
机器学习基本含义
- 机器学习数据集可划分为训练集和测试集
A. 对
- 下列属于监督学习的有
A.分类
B. 回归
- 机器学习致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。
A. 对
机器学习概述
第1关:监督学习与无监督学习
- 在____学习中,每个实例都是由一个输入对象(通常为矢量)和一个期望的输出值(也称为监督信号)组成。
A. 监督
- 有监督算法常见的有哪些?
A. KNN
B.线性回归算法
C. 决策树
- 聚类是监督学习的代表,这样的表述正确吗?
B. 不正确
- 无监督学习的方法分为以下哪些类?
A. 基于概率密度函数估计的直接方法
B. 基于样本间相似性度量的简洁聚类方法
- 监督学习和无监督学习有以下哪些区别?
A. 训练样本不同
B. 核心
C. 可解释性不同
D. 规律性不通
第2关:训练、验证、测试与评估
- 通过作业可以知道不同学生学习情况、进步的速度快慢这一过程属于以下哪种?
B. 验证
- 常用的评估方法有哪些?
A. k折交叉验证
B. 自助法
C. 留出法
- 在数据集较小难以有效划分训练集和测试集时很有用。
B. 自助法
- 评价指标有以下哪几种?
A. 召回率(Recall)
B. 准确率(Accuracy)
C. F1_score
D. 精确率(Precision)
- 学习器在训练集上的误差称为____,在新样本上的误差称为____。
“训练误差”(training error),“泛化误差”(generalizationerror)
- k折交叉验证是留一法的特例,这种表达正确吗?
不正确
镜像
第1关:Hello Docker !
#注意如果想在右侧使用命令行模拟操作,请先输入 #service docker start #否则将不能执行docker命令 #拉取busybox官方镜像,启动容器并执行输出"Hello Docker" #拉取busybox官方最新镜像 docker pull busybox #********** Begin *********# ocker pull busybox:latest docker run --name first_docker_container busybox:latest echo "Hello Docker" #********** End **********#
第2关:拉取镜像
#注意如果想在右侧使用命令行模拟操作,请先输入 #service docker start #否则将不能执行docker命令 #拉取busybox:1.27镜像 #********** Begin *********# docker pull busybox:1.27 #********** End **********#
容器镜像的导入导出
第1关:导入导出容器
任务描述
本关任务是学习导入导出容器,要求学习者参照示例完成将busyboxContainer容器的文件系统保存为一个tar包,通过该tar包导入一个busybox:v1.0镜像。
相关知识
将 "容器的文件系统"保存到 tar 包
docker export是将“容器的文件系统”导出为一个tar包。注意是操作的对象是容器!它的具体语法如下:
docker export [OPTIONS] CONTAINER
其中:
- docker export: Docker将容器导出到tar包的命令关键词;
- OPTIIONS: 命令选项,-o指定写到一个文件中,而不是标准输出流中;
- Container: 需要导出到tar包的容器。
例如,将容器container1的“文件系统”保存到tar包,对应的语句如下:
docker export container1 > container1.tar 或者 docker export container1 -o container1.tar
从tar包导入一个镜像
docker import使用docker export导出的tar包加载为一个镜像。它的具体语法如下:
docker import [OPTIONS] 文件|URL|- [镜像名]
其中:
- docker import: Docker从tar包加载镜像的命令关键词;
- OPTIIONS: 命令选项;
- 文件|URL|: 指定docker import的对象,可以是文件或者某个URL;
- [镜像名]: 以<仓库名>:<标签>的方式来指定。
例如,从container1.tar中加载镜像,镜像名为test:v1.0,对应的语句如下:
docker cat container1.tar | docker import - test:v1.0
实例
在本机以ubuntu镜像为基础创建了一个容器,并在容器的/dir1目录下创建了1.txt和2.txt两个文件,然后将改容器导出为tar文件。
[root@localhost step2]# docker run -it ubuntu /bin/bash root@a2864c3ed14f:/# touch /dir1/1.txt root@a2864c3ed14f:/# touch /dir1/2.txt [root@localhost tempdir]# docker export a286 > ubuntu-test.tar [root@localhost tempdir]# ls ubuntu-test.tar
执行cat ubuntu-test.tar | docker import - ubuntu:test命令,将导出的tar包(ubuntu-test.tar)导入成一个镜像,镜像名为ubuntu:test。然后使用ubuntu:test创建一个容器,查看容器中/dir1的内容,发现1.txt和2.txt都存在。
[root@localhost tempdir]# cat ubuntu-test.tar | docker import - ubuntu:test sha256:34be0173049d9f177d84117a786bc02de18c9c84137ea9c61288810c0917c671
docker export 和 docker save的区别
首先,两者的操作对象不同。docker save是将一个镜像保存为一个tar包,而docker export是将一个容器快照保存为一个tar包。
然后,docker export导出的容器快照文件将丢弃所有的历史记录和元数据信息,即仅保存容器当时的快照状态;而docker save保存的镜像存储文件将保存完整记录,体积也要大。下图就能够很好的说明,ubuntu:test仅仅占97.8MB而ubuntu:latest却占了120MB。
[root@localhost step2]# docker images ubuntu REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu test 34be0173049d 5 seconds ago 97.8 MB ubuntu latest 14f60031763d 2 weeks ago 120 MB [root@localhost tempdir]# docker run ubuntu:test ls /dir1 1.txt 2.txt
任务要求
本关的编程任务是补全step3/imexport.sh文件中的内容,要求实现导入导出容器。具体要求如下,
- 将busyboxContainer容器的文件系统保存为一个tar包;
- 通过该tar包导入一个busybox:v1.0镜像。
本关涉及的代码文件step3/imexport.sh的代码框架如下:
#!/bin/bash #以busybox为镜像创建一个容器,容器名为busyboxContainer docker run --name busyboxContainer busybox echo "hello" #1.然后将busyboxContainer导出为容器快照:busybox.tar #********** Begin *********# #********** End **********# #2.最后使用该容器快照导入镜像,镜像名为busybox:v1.0。 #********** Begin *********# #********** End **********#
测评说明
下面是对平台如何评测你所实现功能的说明及样例测试。本关的测试文件是step3/imexporttest.sh。
具体测试过程如下:
- 平台运行step3/imexport.sh;
- 平台运行step3/imexporttest.sh,并以标准输入方式提供测试输入;
- 平台获取step3/imexporttest.sh的输出,然后将其与预期输出比较,如果一致则测试通过;否则测试失败。
以下是平台对step3/imexport.sh的样例测试集: 测试输入: 无 测试输出: success
参考答案:
#以busybox为镜像创建一个容器,容器名为busyboxContainer #拉取busybox 最新镜像,实际生产中,docker pull 这一步可以省略,docker run的时候会自己去拉取。 docker pull busybox docker run --name busyboxContainer busybox echo "hello" #1.然后将busyboxContainer导出为容器快照:busybox.tar #********** Begin *********# docker export busyboxContainer > busybox.tar.gz #********** End **********# #2.最后使用该容器快照导入镜像,镜像名为busybox:v1.0 #********** Begin *********# cat busybox.tar.gz | docker import - busybox:v1.0 #********** End **********#
openstack环境体验
直接测评
Docker安装与描述
apt-get remove docker docker-engine docker.io containerd runc apt-get update apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7EA0A9C3F273FCD8 add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" apt-get update apt-get install docker-ce docker-ce-cli containerd.io service docker start apt-get install docker-ce=5:19.03.5~3-0~ubuntu-bionic docker-ce-cli=5:19.03.5~3-0~ubuntu-bionic containerd.io docker --v systemctl status docker
第2关:创建和应用docker命令操作容器
Hadoop环境搭建与使用 useradd -m hadoop -s /bin/bash #这里我们登录的是root账号,不需要sudo #sudo useradd -m hadoop -s /bin/bash # 如果当前用户不是root用户需要使用sudo passwd hadoop adduser hadoop sudo su hadoop sudo apt-get install openssh-server passwd root sudo service ssh start cd ~/.ssh/ ssh-keygen -t rsa cat ./id_rsa.pub >> ./authorized_keys ssh localhost
第3关:安装Java
cd /usr/lib sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件 sudo tar -zxvf /data/bigfiles/jdk-19_linux-x64_bin.tar.gz -C /usr/lib/jvm #把JDK文件解压到/usr/lib/jvm目录下 cd /usr/lib/jvm #进入jvm文件夹中 ls #查看文件 vim /etc/profile #配置环境 export JAVA_HOME=/usr/local/java/jdk1.8.0_144 export JRE_HOME=/usr/local/java/jdk1.8.0_144/jre export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin source /etc/profile
第4关:安装 Hadoop-单机配置
tar -zvxf /data/bigfiles/hadoop-3.3.4.tar.gz -C /usr/local # 解压到/usr/local中 cd /usr/local/ #进入hadoop解压后的文件夹 mv ./hadoop-3.3.4/ ./hadoop # 将文件夹名改为hadoop cd /usr/local/hadoop ./bin/hadoop version cd /usr/local/hadoop mkdir ./input cp ./etc/hadoop/*.xml ./input # 将配置文件作为输入文件 ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep ./input ./output 'dfs[a-z.]+' cat ./output/* # 查看运行结果
第5关:安装Hadoop-伪分布式配置
Storm搭建与使用
第1关:Storm在Linux环境配置
第2关:Spark Shell的应用
Spark环境搭建与使用
第1关:安装Spark
第2关: Shell的应用
第3关:通过 Spark API 编写一个独立应用程序
第4关:使用Maven对Java独立应用程序进行编译打包
第5关:使用Maven对Scala独立应用程序进行编译打包
认识 OpenStack
第1关:OpenStack 的应用前景
- OpenStack 属于一下哪一类服务?
C. IaaS
- OpenStack 的优点包括
A.免费开源
B. 方便二次开发
C. 组件配置灵活
D.模块松耦合
- OpenStack 相当于以下哪个概念
B. 操作系统
OpenStack 的组件
- OpenStack 中提供认证管理服务的组件是
C. Keystone
- OpenStack 中提供镜像注册服务的组件是
B. Glance
- OpenStack 中提供计算服务的组件是
B. Nova
- OpenStack中提供网络服务的组件是
D. Neutron
- 云平台中虚拟机的创建、开机、关机、挂起、暂停、调整、迁移、重启、销毁等操作由哪个 OpenStack 服务负责?
C. Nova
- OpenStack 框架中负责管理身份验证、服务规则和服务令牌功能的模块是
D. Keystone
环境准备
第1关:环境准备
Docker基础实战教程一:入门
第1关:Hello Docker !
#注意如果想在右侧使用命令行模拟操作,请先输入 #service docker start #否则将不能执行docker命令 #拉取busybox官方镜像,启动容器并执行输出"Hello Docker" #拉取busybox 最新镜像,实际生产中,docker pull 这一步可以省略,docker run的时候会自己去拉取。 docker pull busybox #********** Begin *********# docker run --name my_container busybox:latest echo "Hello Docker" #********** End **********#
第2关:拉取镜像
#注意如果想在右侧使用命令行模拟操作,请先输入 #service docker start #否则将不能执行docker命令 #拉取busybox:1.27镜像 #********** Begin *********# docker pull busybox:1.27 #********** End **********#
第3关:启动一个容器
#注意如果想在右侧使用命令行模拟操作,请先输入 #service docker start #否则将不能执行docker命令 #创建并启动一个容器,容器名为firstContainer,具备busybox的运行环境。并输出hello world #拉取最新镜像 docker pull busybox #********** Begin *********# docker run --name 'firstContainer' busybox echo "hello world" #********** End **********#
第4关:停止一个容器
#!/bin/bash #注意如果想在右侧使用命令行模拟操作,请先输入 #service docker start #否则将不能执行docker命令 #以ubuntu镜像为基础,创建并在后台启动了一个名为firstContainer的容器(-d看不懂没关系,下一关会介绍的) #拉取ubutun 最新镜像,实际生产中,docker pull ubutun可以省略,docker run的时候会自己去拉取。 docker pull ubuntu docker run -itd --name firstContainer ubuntu /bin/bash #将firstContainer容器停止! #********** Begin *********# docker stop firstContainer #********** End **********#
第5关:进入一个容器
#注意如果想在右侧使用命令行模拟操作,请先输入 #service docker start #否则将不能执行docker命令 #基于ubuntu镜像创建并在后台启动一个名为container2的容器 #拉取ubutun 最新镜像,实际生产中,docker pull ubutun可以省略,docker run的时候会自己去拉取。 docker pull ubuntu docker run -itd --name container2 ubuntu /bin/bash #由于测试环境不允许从终端输入,所以请使用docker exec完成任务 #********** Begin *********# docker exec container2 mkdir 1.txt #********** End **********#
第6关:删除容器
#!/bin/bash #注意如果想在右侧使用命令行模拟操作,请先输入 #service docker start #否则将不能执行docker命令 #拉取ubutun ,busybox最新镜像,实际生产中,docker pull 这一步可以省略,docker run的时候会自己去拉取。 docker pull ubuntu docker pull busybox #创建两个容器 docker run -itd ubuntu /bin/bash docker run busybox echo "hello world" #删除所有容器 #********** Begin *********# docker rm -f $(docker ps -aq) #********** End **********#
Docker基础实战教程二:镜像管理
第1关:基于Commit定制镜像
#以busybox镜像创建一个容器,在容器中创建一个hello.txt的文件。 #拉取busybox 最新镜像,实际生产中,docker pull 这一步可以省略,docker run的时候会自己去拉取。 docker pull busybox docker run --name container1 busybox touch hello.txt #将对容器container1做出的修改提交为一个新镜像,镜像名为busybox:v1 #********** Begin *********# docker commit container1 busybox:v1 #********** End **********#
第2关:基于save保存镜像与基于load加载镜像
#!/bin/bash #首先拉取一个busybox镜像 docker pull busybox:latest #1.将busybox:latest镜像保存到tar包 #********** Begin *********# docker save busybox:latest > busybox.tar #********** End **********# #删除busybox:latest镜像 docker rmi busybox:latest #2.从tar包加载busybox:latest镜像 #********** Begin *********# docker load < busybox.tar #********** End **********#
第3关:导入导出容器
#以busybox为镜像创建一个容器,容器名为busyboxContainer #拉取busybox 最新镜像,实际生产中,docker pull 这一步可以省略,docker run的时候会自己去拉取。 docker pull busybox docker run --name busyboxContainer busybox echo "hello" #1.然后将busyboxContainer导出为容器快照:busybox.tar #********** Begin *********# docker export busyboxContainer > busybox.tar.gz #********** End **********# #2.最后使用该容器快照导入镜像,镜像名为busybox:v1.0 #********** Begin *********# cat busybox.tar.gz | docker import - busybox:v1.0 #********** End **********#
第4关:删除镜像
#!/bin/bash #以busybox为基础镜像创建一个容器,容器名为container3 #拉取busybox 最新镜像,实际生产中,docker pull 这一步可以省略,docker run的时候会自己去拉取。 docker pull busybox docker run --name container3 busybox:latest echo "hello" #然后将busybox:latest镜像删除 #********** Begin *********# docker rm container3 #删除容器 docker rmi busybox #删除镜像 #********** End **********#
第5关:构建私有Registry
#!/bin/bash #构建一个私人仓库 docker pull registry:2 docker run -d -p 5000:5000 --restart=always --name myregistry registry:2 #拉取busybox镜像 docker pull busybox #1.使用docker tag给busybox加上一个标签localhost:5000/my-busybox:latest #********** Begin *********# docker tag busybox:latest localhost:5000/my-busybox:latest #********** End **********# #2.将localhost:5000/my-busybox:latest镜像推送到私人仓库 #********** Begin *********# docker push localhost:5000/my-busybox:latest #********** End **********# #删除本地镜像 docker rmi localhost:5000/my-busybox:latest #3.从私人仓库拉取localhost:5000/my-busybox:latest镜像 #********** Begin *********# docker pull localhost:5000/my-busybox:latest #********** End **********# #删除私人仓库并将私人仓库中的镜像也删除掉 docker rm -vf myregistry
Docker基础实战教程三:Dockerfile
第1关:初识 Dockerfile
#创建一个空文件夹,并进入其中 mkdir newdir1 cd newdir1 #创建一个Dockerfile文件 touch Dockerfile #假设我的Dockerfile文件为 #FROM ubuntu #RUN mkdir dir1 #可以这么写: # echo 'FROM ubuntu' > Dockerfile # echo 'RUN mkdir dir1'>> Dockerfile #输入Dockerfile文件内容 #********** Begin *********# #以busybox为基础镜像 #在基础镜像的基础上,创建一个hello.txt文件 echo 'FROM busybox' > Dockerfile echo 'RUN touch hello.txt' >> Dockerfile #********** End **********# #使用Dockerfile创建一个新镜像,镜像名为busybox:v1 docker build -t busybox:v1 .
第2关:docker build、COPY和ADD
#创建一个空文件夹,并进入其中 mkdir newdir2 cd newdir2 #创建一个文件夹dir1,将其压缩,然后删除dir1 mkdir dir1 && tar -cvf dir1.tar dir1 && rmdir dir1 #创建一个Dockerfile文件 touch Dockerfile #假设我的Dockerfile文件为 #FROM ubuntu #RUN mkdir dir1 #可以这么写: # echo 'FROM ubuntu' > Dockerfile # echo 'RUN mkdir dir1'>> Dockerfile #输入Dockerfile文件内容 #********** Begin *********# echo 'FROM busybox' > Dockerfile #并将上下文目录下的dir1.tar“解压提取后”,拷贝到busybox:v3的/ echo 'ADD dir1.tar /' >> Dockerfile #********** End **********# #文件内容完毕,在当前文件夹中执行 #********** Begin *********# #以该Dockerfile构建一个名为busybox:v3的镜像 docker build -t busybox:v3 . #********** End **********#
第3关:CMD 和 ENTRYPOINT 指令
#创建一个空文件夹,并进入其中 mkdir newdir3 cd newdir3 #创建一个Dockerfile文件 touch Dockerfile #假设我的Dockerfile文件为 #FROM ubuntu #RUN mkdir dir1 #可以这么写: # echo 'FROM ubuntu' > Dockerfile # echo 'RUN mkdir dir1'>> Dockerfile #输入Dockerfile文件内容 #********** Begin *********# #以busybox为基础镜像 echo 'FROM busybox' > Dockerfile echo 'ENTRYPOINT ["df"]'>> Dockerfile echo 'CMD ["-Th"]'>> Dockerfile #********** End **********# #文件内容完毕,在当前文件夹中执行 #********** Begin *********# #以该Dockerfile构建一个名为mydisk:latest的镜像 docker build -t mydisk:latest . #********** End **********#
第4关:ENV、EXPOSE、WORKDIR、ARG 指令
#创建一个空文件夹,并进入其中 mkdir newdir4 cd newdir4 #创建一个Dockerfile文件 touch Dockerfile #假设我的Dockerfile文件为 #FROM ubuntu #RUN mkdir dir1 #可以这么写: # echo 'FROM ubuntu' > Dockerfile # echo 'RUN mkdir dir1'>> Dockerfile #输入Dockerfile文件内容 #********** Begin *********# #以busybox为基础镜像 echo 'FROM busybox' > Dockerfile #声明暴露3000端口 echo 'EXPOSE 3000' >>Dockerfile #将变量var1=test设置为环境变量 echo 'ENV var1=test '>>Dockerfile #设置工作目录为/tmp echo 'WORKDIR /tmp'>>Dockerfile #在工作目录下创建一个1.txt文件 echo "RUN touch 1.txt" >> Dockerfile #********** End **********# #文件内容完毕,在当前文件夹中执行 #********** Begin *********# #以该Dockerfile构建一个名为testimage:v1的镜像 docker build -t testimage:v1 . #********** End **********#
第5关:ONBUILD 和 VOLUME 指令
直接评测
第6关:镜像构建时的缓存机制
直接测评