1. HDFS 组织架构
1.1 NameNode
- 管理HDFS的命名空间,并以fsimage和edit进行持久化保存;
- 在内存中维护数据块的映射信息;
- 实施副本冗余策略;
- 处理客户端的访问请求。
1.2 DataNode
- 负责实际的数据块的存储;
- 定期向NameNode发送信息,报告自己的状态(心跳机制),没有按时发送心跳信息的DataNode会被NameNode认定为宕机;
- 处理客户端的读写操作。
1.3 SencondaryNameNode
帮助NameNode定期合并fsimage和edits文件。
1.4 Client
- 切分文件。文件上传HDFS的时候,Client将文件切分成一个一个的Block,然后进行存储;
- 与NameNode交互,获取文件的位置信息;
- 与DataNode交互,读取或者写入数据;
- Client提供一些命令来管理HDFS,比如启动关闭HDFS、访问HDFS目录及内容等。
1.5 命名空间
文件系统树以及整棵树内所有的文件和目录的元数据
1.6 映像文件 fsimage
命名空间镜像文件,它是文件系统元数据的一个完整的永久检查点,内部维护的是最近一次检查点的文件系统树和整棵树内部的所有文件和目录的元数据,如修改时间,访问时间,访问权限,副本数据,块大小,文件的块列表信息等等,fsimage默认存储两份,是最近两次检查点。
2. NameNode在启动的时候会做哪些操作
NameNode数据存储在内存和本地磁盘,本地磁盘数据存储在fsimage镜像文件和edits编辑日志文件
2.1 首次启动NameNode
- 格式化文件系统,生成fsimage镜像文件;
- 启动NameNode
(1)读取fsimage文件,将文件内容加载进内存;
(2)等待DataNade注册与发送block report; - 启动DataNode
(1)向NameNode注册;
(2)发送block report; - 对文件系统进行操作(创建目录,上传文件,删除文件等)
(1)此时内存中已经有文件系统改变的信息,但是磁盘中没有文件系统改变的信息,此时会将这些改变信息写入edits文件中,edits文件中存储的是文件系统元数据改变的信息。