- 理论知识1. Docker
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,容器性能开销极低。
Docker 能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,开发者可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,可以大大减少编写代码和在生产环境中运行代码之间的延迟。
1.快速,一致地交付应用程序。Docker 允许开发人员使用应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。
2.响应式部署和扩展。Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。
3.在同一硬件上运行更多工作负载。Docker 轻巧快速,它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案。
- HDFS
HDFS(Hadoop Distributed File System),作为Google File System(GFS)的实现,是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上。它所具有的高容错、高可靠性、高可扩展性、高获得性、高吞吐率等特征为海量数据提供了不怕故障的存储,为超大数据集(Large Data Set)的应用处理带来了很多便利。
HDFS由四部分组成,HDFS Client、NameNode、DataNode和Secondary NameNode。
HDFS是一个主/从(Mater/Slave)体系结构,HDFS集群拥有一个NameNode和一些DataNode。NameNode管理文件系统的元数据,DataNode存储实际的数据。
HDFS特点:高容错性、可构建在廉价机器上;适合批处理;适合大数据处理;流式文件访问。
HDFS局限:不支持低延迟访问;不适合小文件存储;不支持并发写入;不支持修改。
HDFS结构图
- 实验目的与环境要求1. 实验目的****
1.熟悉常用的Linux命令
2.熟悉Docker的安装和操作(对镜像的操作、对容器的操作、dockerfile文件简单使用)
掌握HDFS的安装,基于Docker创建一主三从4个节点的HDFS集群。
- 环境要求****
Windows10专业版,Docker Desktop 4.5.1,CentOS7,Hadoop2.7.1
- 实验过程1. 安装Docker Desktop
Docker 官方网站https://www.docker.com下载Docker Desktop for windows。安装过程与普通windows软件没有区别。
安装好后,出现如下界面
本实验中,可以不开启Hyper-V,可以不配置国内镜像。
- 创建四台centos虚拟机
导入2个image文件: Centos7-hadoop2.tar和spark_dave.tar. 导入命令 docker load -i 文件名 注意:文件名和路径中不可以中文。导入成功后,源tar文件可以删除。
顺序运行如下指令,创建4个Centos虚拟机,作为下一步HDFS的节点主机。
#创建master
docker run -d -it --privileged -P -p 50070:50070 -p 8888:8088 -p 8900:8080 --name master -h master --add-host slave01:172.17.0.3 --add-host slave02:172.17.0.4 --add-host slave03:172.17.0.5 centos7-hadoop2 /usr/sbin/init
#创建slave01
docker run -it -d -P --privileged --name slave01 -h slave01 --add-host master:172.17.0.2 --add-host slave02:172.17.0.4 --add-host slave03:172.17.0.5 centos7-hadoop2 /usr/sbin/init
#创建slave02
docker run -it -d -P --privileged --name slave02 -h slave02 --add-host slave01:172.17.0.3 --add-host master:172.17.0.2 --add-host slave03:172.17.0.5 centos7-hadoop2 /usr/sbin/init
#创建slave03
docker run -it -d -P --privileged --name slave03 -h slave03 --add-host slave01:172.17.0.3 --add-host slave02:172.17.0.4 --add-host master:172.17.0.2 centos7-hadoop2 /usr/sbin/init
创建成功后,Docker界面中出现4个虚拟机。如下图所示。
- 配置四台centos虚拟机SSH登录设置
配置ssh的目的是:方便在master上统一对集群进行Hadoop部署。配置公钥和私钥的目的是:让集群主机之间的ssh登录不需要密码,否则每次都要输入密码。
#先打开四个终端窗口,分别执行以下命令,连接到四台机器
docker exec -it master /bin/bash
docker exec -it slave01 /bin/bash
docker exec -it slave02 /bin/bash
docker exec -it slave03 /bin/bash
在master上执行
su hdfs #切换到hdfs账号
ssh-keygen -t rsa #生成hdfs账号的key,
在master上执行,将master的公钥文件拷贝到slave节点和本机
ssh-copy-id master
ssh-copy-id slave01
ssh-copy-id slave02
ssh-copy-id slave03
- 分发HDFS配置文件
向四台centos虚拟机分发HDFS配置文件。
docker exec master mv /usr/local/hadoop-2.7.1 /usr/local/hadoop
docker exec master chown -R hdfs:hdfs /usr/local/hadoop
docker exec master mv /usr/local/spark2.2.1 /usr/local/spark
docker exec master chown -R hdfs:hdfs /usr/local/spark
docker exec slave01 mv /usr/local/hadoop-2.7.1 /usr/local/hadoop
docker exec slave01 chown -R hdfs:hdfs /usr/local/hadoop
docker exec slave01 mv /usr/local/spark2.2.1 /usr/local/spark
docker exec slave01 chown -R hdfs:hdfs /usr/local/spark
docker exec slave02 mv /usr/local/hadoop-2.7.1 /usr/local/hadoop
docker exec slave02 chown -R hdfs:hdfs /usr/local/hadoop
docker exec slave02 mv /usr/local/spark2.2.1 /usr/local/spark
docker exec slave02 chown -R hdfs:hdfs /usr/local/spark
docker exec slave03 mv /usr/local/hadoop-2.7.1 /usr/local/hadoop
docker exec slave03 chown -R hdfs:hdfs /usr/local/hadoop
docker exec slave03 mv /usr/local/spark2.2.1 /usr/local/spark
docker exec slave03 chown -R hdfs:hdfs /usr/local/spark
在master上执行,将做好的配置文件(在/usr/local/dave_etc/目录下)拷贝到master和其他slave机器
cd /usr/local/dave_etc/
scp -r * master:/usr/local/hadoop/etc/hadoop
scp -r * slave01:/usr/local/hadoop/etc/hadoop
scp -r * slave02:/usr/local/hadoop/etc/hadoop
scp -r * slave03:/usr/local/hadoop/etc/hadoop
- 启动HDFS服务
#切换用户
su hdfs
/usr/local/hadoop/bin/hdfs namenode -format
/usr/local/hadoop/sbin/start-dfs.sh # 会自动启动一主三从的相应服务
- 向HDFS上传大文件
tar -zcvf /usr/local/hadoop/spark.tar.gz /usr/local/spark/ # 产生一个大文件
/usr/local/hadoop/bin/hdfs dfs -ls /
/usr/local/hadoop/bin/hdfs dfs -mkdir /test # 创建test目录
/usr/local/hadoop/bin/hdfs dfs -put /usr/local/hadoop/spark.tar.gz /test # 将刚压缩的文件上传到/test目录上
/usr/local/hadoop/bin/hdfs dfs -ls /test # 查看文件是否上传成功
访问访问http://localhost:50070主页,查看文件的存储细节
- 小结
版权归原作者 dejiedoor 所有, 如有侵权,请联系我们删除。