HDFS架构
HDFS架构HDFS的全称为 Hadoop Distributed File System,是解决分布式存储的分布式文件体系
HDFS采用 Master/Slave 架构存储数据,且支持NameNode的HA
HDFS的优缺点
长处:
(1)高容错性
(2)得当大数据处置惩罚
(3)流式数据访问
(4)可构建在便宜的呆板
缺点:
(1)不得当低延时数据访问场景
(2)不得当小文件存取场景
(3)不得当并发写入,文件随机修改场
HDFS架构重要包含客户端(Client),NameNode(NN),DataNode(DN) 和SecondaryNameNode(SNN)四个紧张组成部分。
NameNode:
管理文件体系的Namespace元数据
一个HDFS集群只有一个Active的NN
DataNode:
数据存储节点,保存和检索Block
一个集群可以有多个数据节点
SecondaryNameNode:
合并NameNode的edit.log到fsimage文件中
辅助NN将内存中元数据信息长期化
HDFS的重要流程
https://i-blog.csdnimg.cn/direct/bdd9542235504e40bf9706119db1b00e.png#pic_center(图片侵权可删)
(1)客户端向NameNode发起哀求,获取元数据信息,这些元数据信息包括定名空间、块映射信息及 DataNode 的位置信息等。
(2)NameNode 将元数据信息返回给客户端
(3)客户端获取到元数据信息后,到相应的 DataNode 上读/写数据
(4)相干联的 DataNode 之间会相互复制数据,以达到 DataNode 副本数的要求
(5)DataNode 会定期向 NameNode 发送心跳信息,将自身节点的状态信息报告给 NameNode
(6)SecondaryNameNode 并不是 NameNode 的备份,SecondaryNameNode 会定期获取NameNode 上的 fsimage和 edits log 日记,并将二者进行合并,产生 fsimage.ckpt推送给 NameNode
NameNode 【元数据节点】
NameNode 是整个 Hadooop 集群中至关紧张的组件,它维护着整个 HDFS 树,以及文件体系树中所有的文件和文件路径的元数据信息,这些元数据信息包括文件名,命令空间,文件属性(文件天生的时间、文件的副本数、文件的权限)、文件数据块、文件数据块与所在 DataNode 之间的映射关系等。
NameNode的重要功能
https://i-blog.csdnimg.cn/direct/7265a9f4231c4c80a33db63a4d391e1f.png#pic_center(图片侵权可删)
一旦 NameNode 宕机或 NameNode 上的元数据信息破坏或丢失,根本上就会丢失 Hadoop 集群中存储的所有数据,整个 Hadoop 集群也会随之瘫痪。
DataNode 【数据节点】
DataNode 是真正存储数据的节点,这些数据以数据块的形式存储在 DataNode 上。
一个数据块包含两个文件:
一个是存储数据自己的文件,
一个是存储元数据的文件(这些元数据重要包括数据块的长度、数据块的查验和时间戳)
DataNode运行的工作机制
https://i-blog.csdnimg.cn/direct/400b612837e943fca3e273239c42e035.png#pic_center(图片侵权可删)
(1)DataNode启动之后,向 NameNode 注册。
(2)NameNode 返回注册乐成的消息给 DataNode。
(3)DataNode 收到 NameNode 返回的注册乐成的信息之后,会周期性地向 NameNode 上报当前 DataNode 的所有块信息。
DataNode 向 NameNode 发送所有数据块的默认时间周期是 1h。
(4)DataNode 周期性地向NameNode 发送心跳信息,NameNode 收到 DataNode 发来的心跳信息后,会将DataNode 需要执行的命令放入到心跳信息的返回数据中,返回给 DataNode。
DataNode 向 NameNode 发送心跳信息的默认时间周期是 3s。
(5)NameNode 凌驾一定的时间没有收到 DataNode 发来的心跳信息,则 NameNode 会以为对应的 DataNode 不可用。
默认的超时时间是10min。
(6)在存储上相互关联的 DataNode 会同步数据块,以达到数据副本数的要求。
SecondaryNameNode 【Hadoop的检查点(checkpoint)】
SecondaryNmaeNode并不是NameNode的备份,在NameNode发生故障时也不能立刻接管NameNode的工作
SecondaryNameNode在Hadoop运行的过程中具有两个作用:
一个是备份数据镜像
另一个是定期合并日记和镜像
SecondaryNameNode 定期合并 NameNode 中的 fsimage 和 edits log,可以或许防止 NameNode 重启时把整个 fsimage 镜像文件加载到内存,淹灭过长的启动时间。
SecondaryNameNode的重要工作流程:
https://i-blog.csdnimg.cn/direct/a22e7f531ddf498386a079e537ae6e4a.png#pic_center(图片侵权可删)
(1)SecondaryNameNode 会通知 NameNode 天生新的edits.log 日记文件。
(2)NameNode 天生新的 edits.log 日记文件,然后将新的日记信息写到新天生的 edits.log 日记文件中。
(3)SecondaryNameNode 复制 NameNode 上的 fsimage 镜像和 edits.log 日记文件,此时使用的是 http get 方式。
(4)SecondaryNameNode 将fsimage将镜像文件加载到内存中,然后执行 edits.log 日记文件中的操作,天生新的镜像文件 fsimage.ckpt。
(5)SecondaryNameNode 将 fsimage.ckpt 文件发送给 NameNode,此时使用的是 http post 方式。
(6)NameNode 将 edits.log 日记文件替换成新天生的 edits.log 日记文件,同样将 fsimage文件替换成 SecondaryNameNode 发送过来的新的 fsimage 文件。
(7)NameNode 更新 fsimage 文件,将此次执行 checkpoint 的时间写入 fstime 文件中。
补充: hadoop 中 fsimage 文件和 edits.log 文件的作用
它们共同构成了Hadoop分布式文件体系(HDFS)的元数据存储机制,共同用于长期化存储Hadoop分布式文件体系(HDFS)的定名空间信息和文件体系操作日记。
Hadoop 分布式文件体系(HDFS)旨在可靠地存储非常大的数据集,并以高带宽将这些数据集流式传输给用户应用步伐。为了实现这一目标,HDFS需要一种机制来管理文件体系的结构和内容,这正是 fsimage 文件和 edits.log 文件所承担的使命。
fsimage 文件现实上是一个快照,它展示了文件体系在某一时间点的状态,这个快照包括了所有数据块的位置、文件的属性以及目录树的结构等信息。
当 HDFS 启动或某个数据节点失败需要重启时,fsimage 文件提供了恢复文件体系状态所需的信息。
fsimage 文件对于确保数据的可靠性和体系的可用性至关紧张。
edits.log 文件则记录了对文件体系状态所做的所有修改操作。
每当有文件被创建、删除或修改时,相应的修改都会写入 edits.log 文件,这些修改操作随后会应用到 fsimage 文件上,以更新文件体系的快照状态。
edits.log 文件使得HDFS可以或许高效地处置惩罚大量的数据操作,同时保持对文件体系状态的实时反映。
这两个文件共同作用于Hadoop分布式文件体系的长期化。当HDFS启动时,它会使用 fsimage 文件来恢复文件体系的初始状态,然后通过回放 edits.log 文件中的操作日记来将文件体系恢复到最新状态。如许,即使体系瓦解大概需要重新启动,也可以或许确保文件体系的数据不会丢失,从而包管了体系的可靠性和稳定性。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]