【Hadoop之hdfs】hdfs一些简单明了的总结(一篇足以,字少但都是精华)
文章目录
- 一、hdfs的优缺点
- 二、hdfs的体系结构
- 1、NameNode
- 2、SecondaryNameNode
- 3、DataNode
- 三、fsimage和edits文件
- 1、fsimage文件
- 2、edits文件
- 四、SecondaryNamenode的工作机制(小秘的工作日常)
- 五、hdfs集群的启动原理
- 六、HDFS的安全模式
- 七、HDFS的读写流程
- 1、写入流程
- 2、读取流程
- 八、NameNode 和 DataNode 之间的心跳机制
一、hdfs的优缺点
缺点:
- 对于低延迟(立即响应)的场景是不适合的。
- 不适合存储小文件(HDFS文件系统中,默认需要将存储的数据进行切割存储的,每一个块是128M,不管一个块中存放的是大文件还是小文件,都有元数据,这个元数据大约占用内存150字节,如果存放过多的小文件,会占用过多的块,从而消耗过多内存。)
- 不适合修改(文件上传之后无法修改)
优点:
- 适合大数据量的存储
- 一份变3份,很好的容错性。
二、hdfs的体系结构
1、NameNode
有且仅有一个(HA【高可用】除外),负责我们整个hdfs集群的管理工作。
管理其他的DataNode节点,并且记录各个块的信息。可以处理客户端的各种请求。
NameNode所记录的数据,其实是在内存中存放的。机器宕机了,内存数据消失。为了防止数据丢失,namenode 有两个帮手:fsimage 以及 edits 两种文件。
2、SecondaryNameNode
不是第二个nameNode ,其实是小秘。有且仅有一个。
可以帮助namenode 完成 fsimage 和 edits 的合并工作。
3、DataNode
数据节点,真正存储数据的地方,可以有1个,也可以有多个。
不定时的向namenode 发送心跳数据,每隔3秒发送一次。
三、fsimage和edits文件
1、fsimage文件
每隔一个小时,会将namenode中的内存数据备份一下,只保留最近的两次fsimage文件,其他的会删除掉,重启或修复namenode后,会自动加载fsimage数据到内存中
2、edits文件
fsimage每隔一小时备份一次,这期间的操作(上传、删除等)会记录到edits中
edits文件也是一个小时生成一次,edits文件超过64M也会重新生成一个
edits⽂件可以强制让其滚动,结束当前的edits⽂件,产⽣⼀个的edits⽂件 hdfs dfadmin -rollEdits
四、SecondaryNamenode的工作机制(小秘的工作日常)
五、hdfs集群的启动原理
- 首先整个集群先进入安全模式:此时的安全模式,是只读模式,不允许上传,删除,重命名等,只有达到了一定的条件,才会离开安全模式:
- namenode执行尚未合并的edits文件,执行里面的每一次操作,达到跟关机之前一样的效果。
- 重新创建一个新的edits文件,用于继续记录操作
六、HDFS的安全模式
解除安全模式需要满足两个条件:
- 1、每个数据块的副本数量达到了设定的阈值
- 2、并且加载出来的副本总数和所有数据块的所有副本数之比需要大于99.99%
也可以手动解除安全模式
1、查看是否处于安全模式:
hdfs dfsadmin -safemode get (ON 说明是安全模式,OFF 说明不是安全模式 )
2、通过命令⼿动进⼊或者离开
hdfs dfsadmin -safemode enter(进入)
hdfs dfsadmin -safemode leave(离开)
七、HDFS的读写流程
1、写入流程
2、读取流程
八、NameNode 和 DataNode 之间的心跳机制
namenode与datanode建立连接后,datanode每隔3秒会将自己的信息发送给namenode,类似于心跳。如果datanode超过10分30秒没向namenode发送信息,就可以断定这个datanode死亡。namenode则会将丢失的数据在其他节点上重新生成