HDFS主要是用来做分布式文件存储
HDFS实现目标:
HDFS自身的局限性:
相关概念:
元数据:文件是什么;文件被分成多少块;每个块和文件是怎么映射的;每个块被存储在那个服务器上面。
适合数据备份,一个块被冗余存储到不同的设备上去
HDFS两大组件:
1、NameNode -> 整个HDFS集群的管家,相当于数据目录
NameNode核心结构:
FsImage,保存系统的文件树
EditLog:记录对数据进行的诸如创建、删除、重命名等操作
每次shell命令启动,FsImage和EditLog合并,形成元数据,之后形成新的FsImage和一个空的EditLog,但是EditLog随着操作的增加,也会不断增大,这时候就需要一个Secondary NameNode来处理。
Secondary NameNode解决的问题:
定期地和名称节点进行通信,要名称节点停止使用EditLog文件,拖拽到自己上,之后名称节点生成一个新的Edit.new重新进行读写。然后SecondaryNameNode把FsImage和EditLog拷贝到本地,合并成一个新的FsImage
,之后再发送给名称节点,这样既实现了冷备份,又解决了Editlog不断增大的问题。
2、DataNode -> 存储实际数据,保存到磁盘,存到本地的linux文件系统中
HDFS命名空间:
目录/文件/块
HDFS局限性:
第二名称节点为冷备份,并不是热备份,所谓热备份是一个发生故障之后,第二个马上顶上去可以直接使用,而冷备份是第一个发生故障后,必须停止一段时间,慢慢恢复,之后提供对外服务。
HDFS1.0版本就存在单点故障问题,到了HDFS2.0便提供了热备份,设置了两个名称节点。
HDFS的存储原理{冗余数据保存的问题,数据保存策略问题,数据恢复的问题}
厦门大学林子雨开设的《大数据技术原理与应用》第二章分布式文件系统HDFS笔记
原文:https://www.cnblogs.com/zxgCoding/p/12638189.html