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数据
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的狗腿子
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。
优缺点
优点:
高容错性
适合批处理
适合大数据处理
可构建在廉价机器上
缺点:
低延迟数据访问
小文件存储
并发写入、文件随机修改
读写流程
读流程详解:
1.Client和DFS取得联系
2.通过DFS获得和NN的联系,获取块的位置。
3.通过NN反馈的Block列表清单,找到保存块的DN。
4,5.读取DN中保存的块(距离优先)
6.关闭连接
写流程详解:
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
第二个副本:放置在第一个副本之外的机架的节点上
第三种副本:与第二个副本相同的机架的节点上
更多副本:随机放置