0


基于Docker搭建hdfs分布式实验环境

    1. 理论知识1. Docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,容器性能开销极低。

Docker 能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,开发者可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,可以大大减少编写代码和在生产环境中运行代码之间的延迟。

1.快速,一致地交付应用程序。Docker 允许开发人员使用应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。

2.响应式部署和扩展。Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。

3.在同一硬件上运行更多工作负载。Docker 轻巧快速,它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案。

      1. 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. 实验目的****

1.熟悉常用的Linux命令

2.熟悉Docker的安装和操作(对镜像的操作、对容器的操作、dockerfile文件简单使用)

  1. 掌握HDFS的安装,基于Docker创建一主三从4个节点的HDFS集群。

      1. 环境要求****

Windows10专业版,Docker Desktop 4.5.1,CentOS7,Hadoop2.7.1

    1. 实验过程1. 安装Docker Desktop

Docker 官方网站https://www.docker.com下载Docker Desktop for windows。安装过程与普通windows软件没有区别。

安装好后,出现如下界面

本实验中,可以不开启Hyper-V,可以不配置国内镜像。

      1. 创建四台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个虚拟机。如下图所示。

      1. 配置四台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

      1. 分发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

      1. 启动HDFS服务

#切换用户

su hdfs

/usr/local/hadoop/bin/hdfs namenode -format

/usr/local/hadoop/sbin/start-dfs.sh # 会自动启动一主三从的相应服务

      1. 向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主页,查看文件的存储细节

    1. 小结
标签: hadoop 大数据 docker

本文转载自: https://blog.csdn.net/u013242054/article/details/127435948
版权归原作者 dejiedoor 所有, 如有侵权,请联系我们删除。

“基于Docker搭建hdfs分布式实验环境”的评论:

还没有评论