Hadoop-HDFS概述

HDFS(Hadoop Distributed File System)hadoop 分布式 文件系统

  • HDFS组成:

NameNode(nn):

1、用来存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表和块所在的DataNode等。
2、维护文件系统的统一目录树
3、接受客户端的请求
4、监控和管理 DataNode

DataNode(dn):

1、在本地文件系统存储文件块数据,以及块数据的校验。
2、执行上传或者下载任务
3、 通过心跳(3s)向 NameNode 汇报自身状况
如果 NameNode 超过 10 min 没有收到汇报,就认为这个 DateNode 挂了
-Secondary NameNode(2nn):
1、用来监控HDFS状态的辅助后台程序,每个一段时间获取HDFS的元数据快照
2、定期合并 NameNode 的 fsimage 和 edits 文件,减少启动时间。
fsimage 是 hdfs 的目录树:记录了统一目录树中文件和节点的对应关系
3、 作为 NameNode 的冷备份
在 NameNode 数据丢失以后,
可以拷贝 SecondaryNameNode 的 fsimage.ckpt 给 NameNode,
恢复目录树到最后一次合并的状态,
丢失最后一次合并后执行的操作数据

这个操作需要重启集群,所以叫做冷备份

什么是Fsimage和edits

在 hdfs 中的创建、删除和上传等操作都需要修改 fsimage 文件
这些操作是频繁执行的,频繁执行 IO 操作比较消耗资源

所以 hdfs 启动的时候会 fsimage 读入内容,
后续的修改操作全部在内存执行,修改完成后不再覆盖本地内容

为了防止断电等意外情况导致数据丢失,
hdfs 会把每个操作记录在 edits 文件中,保存在硬盘上

重启 hdfs 的时候,会对 fsimage 执行 edits 中记录操作,得到重启前

的目录树

为了减少重启时对 fsimage 执行 edits 中记录操作消耗的时间,
需要定期(checkpointer)有 SecondaryNameNode 合并 fsimage 和 edits 文件

checkpointer:
1. 3600s
2. 当 edits 达到 64M 的时候

无论达到那个条件,都执行合并,合并以后两个条件都归零,重新计数

合并流程:
  1. SecondaryNameNode 从 NameNode 下载 fsimage 和 edits,合并为 fsimage.ckpt 文件
  2. NameNode 新建 edits.new 记录合并期间的操作
  3. SecondaryNameNode 发送合并后的 fsimage.ckpt 给 NameNode
  4. NameNode 重命名 fsimage.ckpt 为 fsimage,edits.new 为 edits

hdfs 对于文件是按 block(块) 进行存储的
每个文件会按照 block size(128M) 切分多个为多个 block 存储在 DataNode 上
对于每个 block 还会进行 replication 操作
replication:备份数,默认是 3,文件总共存 3 份

Ps : 这些东西都是当初学习大数据的时候,自己做的笔记。现在分享出来希望能给有需要的人带来帮助。

发布了15 篇原创文章 · 获赞 8 · 访问量 9441

猜你喜欢

转载自blog.csdn.net/qq_42684504/article/details/101619032