结构:主从结构(Master/slave)名称节点/数据节点;
缺点:不适合低延时数据访问;
无法高效存储大量小文件;
不支持并发写及任意修改文件;
NN:存储元数据;元数据保存在内存中;保存文件,block,DN之间的映射关系;
DN:存储文件内容;文件内容保存在磁盘中;维护block ID到DN本地文件的映射关系;
NN数据结构:
FSImage:用于维护文件系统树以及文件树中所有的文件和文件夹的元数据;
EditLog:录了所有针对文件的创建、删除、重命名等操作;
注释:FSImage中没有记录块存储在哪个数据节点。
NN启动:加载FSImage,执行EditLog;
SecondaryNN:合并FSImage、EditLog;
过程:1)SecondaryNameNode会定期和NameNode通信,请求其停止使用EditLog文件,暂时将新的写操作写到一个新的文件edit.new上来,这个操作是瞬间完成,上层写日志的函数完全感觉不到差别;
(2)SecondaryNameNode通过HTTP GET方式从NameNode上获取到FsImage和EditLog文件,并下载到本地的相应目录下;
(3)SecondaryNameNode将下载下来的FsImage载入到内存,然后一条一条地执行EditLog文件中的各项更新操作,使得内存中的FsImage保持最新;这个过程就是EditLog和FsImage文件合并;
(4)SecondaryNameNode执行完(3)操作之后,会通过post方式将新的FsImage文件发送到NameNode节点上
(5)NameNode将从SecondaryNameNode接收到的新的FsImage替换旧的FsImage文件,同时将edit.new替换EditLog文件,通过这个过程EditLog就变小了。
DN:负责保存数据和读取数据;
同性协议: