HDFS集群中namenode和datanode的关系

作者: admin 分类: Hadoop 发布时间: 2018-03-06 13:53  阅读: 534 views

HDFS集群有两类节点以管理者-工作者模式运行,即一个namenode(管理者)和多个datanode(工作者)。客户端(client)代表用户通过namenode和datanode交互来访问整个文件系统。


namenode管理文件系统的命名空间,它维护着文件系统树以及整棵树内所有的文件和目录。这些信息以两个文件形式永久保存在本地磁盘上:命名空间镜像文件和编辑日志文件。namenode也记录着每个文件中各个块所在的数据节点信息,但它并不永久保存块的位置信息,因为这些信息会在系统启动时由数据节点重建。


datanode是文件系统的工作节点。他们根据需要存储并检索数据块(受客户端或namenode调度),并且定期向namenode发送他们所存储的块的列表。

没有namenode,文件系统将无法使用。因此对namenode实现容错非常重要,Hadoop提供了两种机制


第一种机制是备份那些组成文件系统元数据持久状态的文件。


另一种机制是运行一个辅助namenode,但不能用作namenode。会在namenode发生故障时启用,但是保存状态总是滞后于主节点。所以主节点全部失效后,难免丢失数据。这种情况下,一般把存储在NFS上的namenode元数据复制到辅助namenode并作为新的主namenode运行。

 

namenode在内存中保存文件系统中每个文件和每个数据块的引用关系,这意味着对一个拥有大量文件的超大集群来说,内存将成为限制系统横向扩展的瓶颈。在2.X发行版本中引入的HDFS允许系统通脱添加namenode实现扩展,其中每个namenode管理文件系统命名空间的一部分。如,一个namenode可能管理/user目录下的所有文件,另一个namenode管理/share目录下的所有文件


在联邦环境下,每个namenode维护一个命名空间卷(namespace volume),包括命名空间的源数据和在该命名空间下的文件的所有数据块的数据块池。命名空间卷之间是相互独立的,两两之间并不相互通信,其中一个namenode失效也不会影响由其他namenode维护的命名空间的可用性。数据块池不在进行切分,因此集群中的datanode需要注册到每个namenode并且存储着来自多个数据块池中的数据块。


   原创文章,转载请标明本文链接: HDFS集群中namenode和datanode的关系

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

更多阅读