namenode和datanode工作机制_HDFS集群中namenode和datanode的关系

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并且存储着来自多个数据块池中的数据块。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值