- 在HDFS中使用的是主从结构,即一个主节点,多个从节点。
- 在HDFS中主要包含四部分:Client(Shell命令/API/Java Application)、NameNode、DataNode、SecondaryNameNode。
- NameNode节点负责维护DataNode上各个块的metadata以及整个HDFS的目录树结构,并且还会将内存中的块的metadata以及fsimage、edits等持久化文件进行备份,以防宕机时数据丢失。
- fsimage文件中保存了整个HDFS中的目录树结构、我们的数据文件分成了哪些块以及块的位置等信息。
- edits文件中存储的是用户对HDFS中的数据/文件执行的操作,当用户对HDFS的数据\文件进行修改或者添加、删除等操作时,并不会立刻去执行这些操作,而是先将这些操作记录在edits文件中。满足一定条件后,会将当前的edits文件中的操作合并为fsimage文件,并创建一个新的edits文件来记录从这次合并之后又产生的新的数据操作。合并文件是为了减小edits文件的大小,以减少下次启动服务时复盘上次最后一个edits文件所消耗的时间。
- DataNode是真正负责客户端的读写请求的,并实际存储数据的节点,在NameNode的调度安排下,进行数据块的创建、复制等操作。DataNode会定时向NameNode发送心跳以汇报自己当前状态,当某个DataNode很久没有发送心跳时,NameNode会将该节点标记为宕机状态,并不再为该节点分配请求。
- 非第一次启动集群时,NameNode会先将序号最大的fsimage文件加载到内存中,这样就会将上次持久化下来的最新的目录树结构、块的信息等数据加载进来。然后将edit中的最新序号的文件也加载进来,也就是将数据操作执行一下,以保证整个集群的状态是和上次服务停掉前的状态是一致的。
HDFS的体系结构
于 2022-04-07 22:54:09 首次发布