Hadoop——HDFS 基本原理
一、NameNode概述
- NameNode也称为Master,是HDFS的核心。
- NameNode仅存储HDFS的元数据。
- 文件系统中所有文件的目录树,并跟踪整个集群中的文件。元数据就是DataNode上每个文件的块信息。
- 块信息包括:文件的路径、文件的副本数量、文件的切块大小、文件的块信息、文件块的位置信息
- NameNode不存储实际数据或数据集。数据本身实际存储在DataNodes中。
- NameNode知道HDFS中任何给定文件的块列表及其位置。使用此信息NameNode知道如何从块中构建文件。
- NameNode并不持久化存储每个文件中各个块所在的DataNode的位置信息,这些信息会在系统启动时从数据节点重建。
- NameNode对于HDFS至关重要,当NameNode关闭时,HDFS / Hadoop集群无法访问。
- NameNode是Hadoop集群中的单点故障。
- NameNode所在机器通常会配置有大量内存(RAM)。
二、DataNode概述
- DataNode负责将实际数据存储在HDFS中。
- DataNode也称为Slave。
- NameNode和DataNode会保持不断通信。
- DataNode启动时,它将自己发布到NameNode并汇报自己负责持有的块列表。
- DataNode会定期(dfs.heartbeat.interval配置项配置,默认是3秒)向NameNode发送心跳,如果NameNode长时间没有接受到DataNode发送的心跳, NameNode就会认为该DataNode失效。
- 当某个DataNode关闭时,它不会影响数据或群集的可用性。NameNode将安排由其他DataNode管理的块进行副本复制。
- DataNode所在机器通常配置有大量的硬盘空间。因为实际数据存储在DataNode中。
- block汇报时间间隔取参数dfs.blockreport.intervalMsec,参数未配置的话默认为6小时。