HDFS集群中以Master-Slave模式运行,主要有两类节点:一个Namenode节点(即master)和多个Datanode节点。Namenode管理文件系统的Namespace.他维护着文件系统树以及文件树中全部的文件和文件夹的元数据。node
hdfs架构图:编程
Namenode:网络
Namenode管理文件系统的Namespace。它维护着文件系统树以及文件树中全部的文件和文件夹的元数据(Metadata).管理这些信息的文件有两个,分别是Namespace镜像文件(Namespace p_w_picpath)和操做日志文件(edit log), 这些信息被Cache在RAM中,固然,这两个文件也会被持久化存储在本地磁盘。Namenode记录着每一个文件中各个块所在的数据节点的位置信息,可是它并不持久化存储这些信息,由于这些信息会在系统重启时从数据及节点重建。架构
Namenode结构抽象图:ide
客户端表明用户与namenode和datanode交互来访问整个文件系统。客户端提供了一系列的文件系统接口,所以咱们在编程时,几乎无需知道datanode和namenode,便可完成咱们所须要的功能。oop
Datanode:spa
Datanode是文件系统的工做节点,他们根据客户端或者namenode的调度存储和检索数据,而且按期向namenode发送他们所存储的块(block)的列表.日志
Namenode容错机制:blog
没有了Namenode,HDFS就不能工做。事实上,若是运行namenode的机器坏掉的话,系统中的文件将会彻底丢失,由于没有其余方法可以将位于不一样datanode上的文件块重建文件。所以,namenode的容错机制很是重要,Hadoop提供了两种容错机制。接口
第一种方式:将持久化存储在本地磁盘的文件系统元数据备份。Hadoop能够经过配置来让Namenode将它的持久化状态写道不一样的文件系统中。这种写操做时同步而且是原子化的。比较常见的配置是在将持久化状态写道本地磁盘的同时,也写到远端挂载的网络文件系统。
第二种方式:是运行一个辅助的Namenode(Secondary Namenode).实时上Secondary Namenode并不能被用做Namenode它的主要做用是按期将namespace镜像与操做日志文件(edit log)合并,以防止操做日志文件(edit log)变的过大。一般,Secondary Namenode 运行在一个单独的物理机上,由于合并nameSpace镜像的一个备份,若是namenode宕机了,这个备份就能够用上。可是辅助namenode老是落后于namenode,因此在namenode宕机时,数据丢失时不可避免的。在这种状况下,通常的,要结合第一种方式中提到的远程挂载的网络文件系统(NFS)中的namenode 的元数据文件来使用,把nfs中的namenode元数据文件,拷贝到辅助namenode并把辅助namenode做为namenode来运行。