简单快速入手hdfs

mac2022-06-30  105

为什么会存在这篇文章,是因为我产生了以下问题,为了理清关系并解决疑惑。

什么是hdfs?

需要搭建什么样的环境?

hdfs只是一个名词,还是需要人为的去搭建环境?

很多文章都在说hdfs的原理,我就想知道需不需要我去搭建?

 

来自hadoop官网的截图:

  简单点,hadoop处理大数据,那么必然面对数据的存储问题,所以有了hdfs(分布式文件存储系统)。

  hdfs是hadoop的重点组件之一,提供对数据存储的接口访问。

 

须知:

a.

分布式。

如果一个文件非常大,单台服务器无法处理

第一步,分割成小文件

第二步,将小文件分散到多台服务器之上。服务器并行计算,提高效率。

这就是一个分布式的存储。

b.

副本。

为防止因为各种原因造成的文件丢失(比如,由某台机器损坏而导致的文件丢失),对一个文件,我们应该存储几个副本,备份。

c.

hdfs的原理与hdfs的实现

1.hdfs的原理

  (1)先解释NameNode与DateNode:什么是?&&存在的原因

      由一台服务器到多台服务器

      服务器集群:将很多服务器集中起来一起进行同一种服务,集群可以利用多个计算机进行并行计算从而获得很高的计算速度。

      HDFS部署在一个比较大的服务器集群上。

    为了可以更好的提高效率,我们从众多的服务器中选择一台,让她作为一个中心服务器,负责调度 、对其他服务器是否正常工作以及存储了哪些数据进行一个记录。

    想想,当你要查找一个文件时,通过在中心服务器中的相应记录中查找确定文件位置快,还是在海量的数据中逐一对比查找快,必然是前者效率更高。

    这台中心服务器,我们称她为NameNode。其他服务器,称之为DateNode。

    NameNode:一个中心服务器。主节点 ,管理结点 , 知道DateNode的存活状态  存储数据的元数据信息。

    DateNode :从节点 ,要告诉NameNode她上块的位置 ,利用系统本身的文件系统存储真实的文件块。

 NameNodeDateNode存储基于内存存储(不会和磁盘发生交换)本地磁盘目录存储数据,文件形式主要功能

(1)接受客户端的读写服务

(2)知道DateNode的存活状态

(3)存储数据的元数据信息

(2)收集DateNode汇报的Block列表信息

(1)启动DateNode时会向NameNode汇报block信息

(2)通过向NameNode发送心跳保持与其联系(3秒一次),如果NameNode10分钟没有收到DateNode的心跳,则认为其已经lost,并copy其上的block到其他的DateNode

 

(2)以上传a.txt为例。

   

图解:  

当客户端上传存储文件a.txt时, 如默认以128M大小分割文件,200M的a.txt文件分割成两个数据块进行存储,128M与72M。

1.客户端向NameNode发送上传文件a.txt的请求

2.NameNode返回客户端允许上传的信息

3.客户端将数据块上传到元数据中

4.NameNode根据请求,并结合DateNode的信息,返回DateNode的ip

5.客户端与DateNode1建立连接。与此同时,DateNode1与DateNode3之间也建立传输数据的通道,直到最后一个为止。依次返回传输数据通道建立完毕信息 , 直到响应给客户端。dn*把接收到的packet保存到指定的目录中 , 并且把packet继续往后发 , 直到最后一个。发送完毕后反方向追个返回ack应答 , 保证packet的安全稳定 , 直到返回给客户端。

  待第一块上传完毕 , 客户端按照上述流程走一遍 , 上传第二个块 , 从第3步开始 , 重新发起请求 , 寻找可用的dn位置 待所有块上传完毕 , 客户端把信息告知NameNode , NameNode把信息同步到文件系统的元数据中。

 

在说HDFS的原理时,只谈NameNode与DateNode是浅尝辄止的,还可以深入的谈一谈NameNode持久化(fsimage、edits、redis)、secondary NameNode、副本放置策略、hdfs读取或写入文件的过程详解等。

2.hdfs的环境搭建

  (1)hadoop多节点集群安装配置,环境配置成功。

          可以参考一步步教你Hadoop多节点集群安装配置

  (2)修改配置文件。(这一步,指定NameNode与DateNode)

  (3)启动hdfs。

(2)(3)可以参考HDFS环境搭建及命令演示

最新回复(0)