HDFS工作原理— 请点这里
NameNode和 DataNode
HDFS具有主/从体系结构。HDFS群集由单个NameNode和管理文件系统名称空间并控制客户端对文件的访问的主服务器组成。此外,还有许多数据节点,通常是集群中每个节点一个,它们管理与它们所运行的节点相连的存储。HDFS公开了文件系统名称空间,并允许用户数据存储在文件中。在内部,文件被分成一个或多个块,这些块存储在一组DataNode中。NameNode执行文件系统名称空间操作,例如打开,关闭和重命名文件和目录。它还确定块到DataNode的映射。DataNode负责处理来自文件系统客户端的读写请求。DataNode还会执行块创建,删除。
集群中单个NameNode的存在极大地简化了系统的体系结构。NameNode是所有HDFS元数据的仲裁器和存储库。该系统的设计方式是,用户数据永远不会流过NameNode。
副本机制
NameNode做出有关块复制的所有决定。它定期从群集中的每个DataNode接收心跳信号和Blockreport。接收到心跳信号表示DataNode正常运行。Blockreport包含DataNode上所有块的列表。
- Block:数据块
HDFS最基本的存储单元
默认块大小:128M(2.x)
副本机制
作用:避免数据丢失
副本数默认为 3 - 存放机制:
一个在本地机架节点
一个在同一个机架不同节点
一个在不同机架的节点
副本选择
为了最大程度地减少全局带宽消耗和读取延迟,HDFS尝试满足来自最靠近读取器的副本的读取请求。如果在与读取器节点相同的机架上存在一个副本,则首选该副本来满足读取请求。如果angg / HDFS集群跨越多个数据中心,则驻留在本地数据中心的副本优先于任何远程副本。
负载均衡
HDFS体系结构与数据重新平衡方案兼容。如果DataNode上的可用空间低于某个阈值,则方案可能会自动将数据从一个DataNode移到另一个DataNode。如果对特定文件的需求突然增加,则方案可能会动态创建其他副本并重新平衡群集中的其他数据。这些类型的数据重新平衡方案尚未实现。
安全模式
启动时,NameNode进入一个特殊的状态,称为安全模式。当NameNode处于安全模式状态时,不会发生数据块的复制。NameNode从DataNode接收心跳和Blockreport消息。Blockreport包含DataNode托管的数据块的列表。每个块都有指定的最小副本数。当已使用NameNode检入该数据块的最小副本数时,该块被视为已安全复制。在可配置百分比的安全复制数据块中,使用NameNode签入(再加上30秒)后,NameNode退出安全模式状态。然后,它确定仍少于指定数量的副本的数据块列表(如果有)。然后,NameNode将这些块复制到其他DataNode。
元数据磁盘故障
FsImage和EditLog是HDFS的中央数据结构。这些文件损坏可能导致HDFS实例无法正常运行。因此,可以将NameNode配置为支持维护FsImage和EditLog的多个副本。FsImage或EditLog的任何更新都会导致FsImages和EditLogs中的每个同步更新。FsImage和EditLog的多个副本的这种同步更新可能会降低NameNode可以支持的每秒名称空间事务处理的速度。但是,这种降级是可以接受的,因为即使HDFS应用程序本质上是数据密集型的,但它们也不是元数据密集型的。当NameNode重新启动时,它将选择要使用的最新一致的FsImage和EditLog。
NameNode计算机是HDFS群集的单点故障。如果NameNode计算机发生故障,则必须进行手动干预。当前,不支持将NameNode软件自动重新启动和故障转移到另一台计算机。
参考:Hadoop 2.6.0官方文档 点这里