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文件简单使用)

3. 掌握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. 小结

基于Docker搭建hdfs分布式实验环境相关推荐

  1. 基于docker搭建cephfs分布式文件

    目的 在一台机器上, 利用多块硬盘, 搭建一个cephfs文件系统. 具体来说就是1个mon, 1个mds, 1个mgr, 3个osd 注意 a. 使用vmware会很方便 b. 安装过程中会遇到很多 ...

  2. nvidia docker容器不支持中文的解决办法_用docker搭建深度学习实验环境

    tensorflow和pytorch官方都维护了不同版本的docker镜像.借助docker我们可以方便的搭建起深度学习实验环境. 但是想要在同一个容器内同时拥有tensorflow.pytorch. ...

  3. 使用 docker 搭建自己的实验环境——解决很多小伙伴论文复现环境搭建难题

    1. 问题描述 对于论文复现,大多数小伙伴都会遇到很多很多各种各样的问题.尽管我已经尽力回答所有人的留言,甚至为一些小伙伴免费提供了我自己购买的云服务器,但是依然很难解决 "如何让这些代码在 ...

  4. selenium===使用docker搭建selenium分布式测试环境

    准备: #请在此之前务必先了解,selenium grid :参考:selenium-grid ,下载地址, win-本地部署过程 >>>环境准备: Linux操作系统 >&g ...

  5. Linux系统Centos7 基于Docker搭建ELK分布式日志系统

    ELK 基本概述 ELK是Elasticsearch.Logstash.Kibana的简称,常常用于部署分布式系统日志服务. Elasticsearch:全球实时全文搜索和分析引擎,提供搜集.分析.存 ...

  6. 基于 Docker 搭建 Hadoop 平台

    基于 Docker 搭建完全分布式 Hadoop 平台 前言 环境 遇到的坑 折腾实录 一.构建镜像 1. 准备JDK和Hadoop 2. 构建centos-hadoop镜像 二.启动容器 三.集群搭 ...

  7. Docker搭建 Nginx+PHP+MySQL 环境并部署WordPress实践

    本文给大家分享的是作者基于Docker搭建 Nginx+PHP+MySQL 环境并部署WordPress的详细过程,非常的全面,有需要的小伙伴可以参考下 Docker基于LXC实现了把软件封装到一个完 ...

  8. 基于Docker搭建分布式消息队列Kafka

    本文基于Docker搭建一套单节点的Kafka消息队列,Kafka依赖Zookeeper为其管理集群信息,虽然本例不涉及集群,但是该有的组件都还是会有,典型的kafka分布式架构如下图所示.本例搭建的 ...

  9. 基于AI的计算机视觉识别在Java项目中的使用(三) —— 搭建基于Docker的深度学习训练环境

    深度学习在哪里? 我们已然生活在数字时代,一天24小时我们被数字包围.我们生活中的方方面面都在使用数字来表达.传递.存储.我们无时无刻不在接收数字信息,而又无时无刻不在生产数字信息. 在数字世界中,可 ...

最新文章

  1. 2015最火十大Android开源项目,是个程序员你就该看看!
  2. ubuntu16.04修改xfce下的gedit的背景颜色
  3. oracle数据库函数手册,Oracle分析函数参考手册(转)
  4. Java-环境搭建(Mac版)
  5. 数据标准化处理方法_机器学习系列-数据预处理-数据标准化(归一化)-理论
  6. 从2018百度前端技术学院看代码究竟应该怎么写(2)
  7. Java Keytool 命令行工具
  8. 基于模板的通用代码生成器LKGenerator(三)-模板示例
  9. isnull pivot server sql_使用SQL Server中的“Pivot”将行转换为列
  10. Android API中文文档(111) —— MailTo
  11. LeetCode—2.堆排序算法
  12. SAP EWM 根据物料号获得包装规格
  13. 二种方法js实现轮播图自动切换
  14. 机器学习读书笔记: 概率图模型
  15. FTRL之FM和LR实战(使用稀疏数据进行实战)
  16. 2022年按摩椅行业现状分析
  17. 微软ime日文输入法在假名输入模式下怎么快速输入英文
  18. SCCM更新卡住恢复处理方法
  19. 群晖(docker图形化界面)使用 SpeedTest 测速
  20. 《活出最乐观的自己》

热门文章

  1. Jupyter配置mxnet
  2. 最长回文串 马拉车算法 C++
  3. [翻译]Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neu
  4. MySQL——数据库日志
  5. 小鸽子主题童装是众多妈妈的放心选择。
  6. 机器学习与人脸识别1:如何理解机器学习
  7. 查看linux操作系统文件夹结构
  8. 有些事一转身就是一辈子
  9. FreeSwitch VoiceMail 语音信箱 研究
  10. @Valid注解是什么