1.2.1什么是HDFS

总目录:https://blog.csdn.net/qq_41106844/article/details/105553392

Hadoop - 子目录:https://blog.csdn.net/qq_41106844/article/details/105553369

 

这一篇从存储模型,结构模型,角色,优缺点,读写流程和其他方面说明HDFS。

概述

HDFS(Hadoop Distributed File System),是Hadoop项目中常见的一种 分布式文件系统,在Hadoop项目中,HDFS解决了文件分布式存储的问题。

存储模型

存储最小单位:字节

操作最小单位:Block(块)

块的特性:

    Block分散存储在各个节点   

    同一文件Block大小相同,文件和文件之间不同

    Block可以设置副本数,副本数不能超过节点数量    

块的修改:

    上传文件时可以设置块大小和副本数量

    已上传文件的Block副本数可以调整,大小不能调整

    只支持一次写入多次读写,同一时间只能有一个操作者

    可以使用append追加数据 

结构模型

1.主节点NameNode保存文件元数据MateData(一个虚拟的目录树,指向数据本身)

2.从节点DataNode保存数据本身Block块

3.从节点和主节点保持心跳,提交自身保存的Block块列表。

4.HdfsClient(客户端)和NameNode交互元数据信息。

5.HdfsClient和DataNode交互文件Block数据

 

 
20155953-0a1ae4a56e2e5e3b.jpg
hdfs工作原理.jpg

hdfs工作原理讲解:
1.用户把1T数据传给client(客户端),并告诉他,分成64M大小一块,每一块有三个副本数量。

2.client把1T数据分成很多个64M数据块,他把第一个数据块传给NN,告诉他:帮我保存一个64M的数据块,并且复制三份。

3.NN通过心跳获取自己的DN,并对如何分配做出规划,返回给client。

4.client通过NN分配的DN地址找到DN,把数据传给DN。

5.DN获取数据后,会保持心跳告诉NN,我这里保存了什么数据块。

角色

角色分为 NameNode(NN),DataNode(DN),SccondaryNameNode(SNN)。

我们先来简述一下每个角色干什么的:

NN:分配工作的

DN:干活的

SNN:记录/帮助NN干活的

NN:

1.基于内存存储:

    ①只存在在内存中,不会和硬盘发生交换

    ②持久化(导图中会细说)

2.主要功能:

    ①接受客户端的读写服务

    ②收集DataNode汇报的Block列表信息

3.元数据信息:

    ①文件owership(文件归属)和permissions(文件权限)  

    ②文件大小,时间

    ③Block偏移量(导图中会细说)

    ④Block副本位置

总的来说,NN是领导,负责文件的读写协调。

DN:

    1.本地磁盘目录存储数据(Block),文件形式

    2.同时存储Block的元数据信息文件

    3.启动DN时会向NN汇报block信息

    4.通过向NN发送心跳保持联系(三秒一次)

    5.如果NN10分钟没有受到DN的心跳,则认为其已经宕机,并copy其上的Block到其他DN

总的来说,DN就是干活的,负责文件的保管。

SNN:

    1.NN一部分功能的迁出 (见导图)

    2.辅助NN的合并

NN的狗腿子

 

 
20155953-02e25c47a7209e6e.jpg
SNN合并.jpg

SNN合并流程详解:

1.一个新的NN,会生成一个空的edits和一个空的fsimage。

2.当时间过去一个小时,或者edits文件大小大于64M时,SNN会获取NN的edits和fsimage,组合成fsimage.ckpt返回给NN。

3.edits传输给SNN后,NN会生成一个新的edits。

4.当新的edits达到64M或过去一个小时后,会再次传输给SNN。

5.SNN通过对edits和上一次处理的fsimage.ckpt组合后产生一个新的fsimage.ckpt传输回NN。

优缺点

优点:

高容错性

适合批处理

适合大数据处理

可构建在廉价机器上

缺点:

低延迟数据访问

小文件存储

并发写入、文件随机修改

读写流程

 

 
20155953-ba180de5ad169bd9.jpg
读流程.jpg

读流程详解:

1.Client和DFS取得联系

2.通过DFS获得和NN的联系,获取块的位置。

3.通过NN反馈的Block列表清单,找到保存块的DN。

4,5.读取DN中保存的块(距离优先)

6.关闭连接

 
20155953-9edfffd194402d2b.jpg
写流程.jpg

写流程详解:

1.Client和DFS取得联系。

2.通过DFS,Client和NN取得联系,获得文件块分配列表。

3.通过和第一个DN进行管道连接传输需要他保存的Block。

4.在传输的同时通过DN获取其他DN,开始并行传输。

5.每个DN都获得自己需要保存的Block后,向CN汇报完成。

6.Client得到汇报后,关闭和DN之间的连接。

7.将工作完成的信息汇报给NN,之后NN负责DN的存活。

 

 

安全模式

1.NN启动时,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作。

2.一旦在内存中建立文件系统元数据的映射,创建一个新的fsimage文件和一个新的edits log文件。

3.此刻NN运行在安全模式。既NN的文件系统对于客服端来说是只读的。(一切操作都会失效)

4.在此刻NN收集DN的报告,当数据块达到最小副本数以上时,会被认为是安全的。

5.当确认文件块安全一段时间后,安全模式会解除。

6.当检测文件块副本数不够时,会复制到达到最小副本数。

7.文件块由块列表形式存储在DN中。

block放置策略

第一个副本:放置在上传文件的DN

第二个副本:放置在第一个副本之外的机架的节点上

第三种副本:与第二个副本相同的机架的节点上

更多副本:随机放置

 

 

 
20155953-9a259bc35f74874e.jpg
HDFS(理论)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒 暄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值