Hadoop的NameNode和SecondaryNameNode的功能描述

弄明白了云计算和大数据以及hadoop的概念,思想交给哲学家,我们来研究一下技术实现

hadoop这个家伙是怎么个构造?怎么实现的大数据存储?怎么实现的大数据计算?

首先我们来看构造NameNode和SecondaryNameNode,这俩是hadoop的管理者,

我们来主要研究下这俩小兄弟都做了什么工作?

举例说明:现在我要使用hadoop存储一个640M的数据,hadoop会将这个数据进行拆分,拆分成10份,每一份64M(当然这个64不是固定的可以通过配置文件进行更改)

然后将这10份数(我们起名字D1-D10)据存储到DataNode上。

假设有DataNode1存储了D1,DataNode2存储了D1,D1,D2(为什么出来两个D1两个D2  这是HDFS的特点,数据备份,防止DataNode1损坏数据丢失)DataNode3存储了D2,D2,D3.

那么以上这些信息都会被存储到NameNode中。NameNode怎么知道哪一个DataNode保存了哪一些block?是DataNode启动的时候向NameNode汇报的。

这个地方要说一些NameNode与DataNode的关系,他们是一种主从结构的关系,他们之间是通过心跳建立链接互通数据的。一旦心跳链接断开(一方得不到另一方发来的信息,一般是指NameNode得不到DataNode发来的信息),表示DataNode死亡。每一次心跳DataNode都会把我这个数据节点新增的block,待移除的block,无效的block,损坏的block,正在处理的block等信息传递到NameNode并得到NameNode的一个反馈完成此次心跳链接。

那么NameNode拿到这些信息后,存储到哪里呢?这里就要说到NameNode的两个重要文件

fsimage元数据镜像文件(说白了就是备份)

edits 元数据操作文件(说白了就是日志)

我们都知道备份是有时间点的,而日志会记录下系统当前最新的操作。所以有了备份和日志,实际上你就可以确保数据在损坏时最新的状态。这个时候你可能会说,那是不是要定时的去把备份更新一下啊,不然日志文件越来越大,备份的数据也会越来越古老。对的!!!应该是有这个操作,而且这个操作必须是个任务,每隔一定的时间就将日志中的变更同步到备份中。

那谁来做这个操作呢?你或许会说肯定是NameNode啊,这俩文件都在这上面!!!但是不是的,因为NameNode的主要工作还是对DataNode的管理,或者说给用户提供操作数据访问数据的服务!哪还有闲工夫主要管备份,忙都忙死了...

这个时候,SecondaryNameNode就出现了,这个小伙子就是帮助NameNode根据日志同步备份的。

也就是说SecondaryNameNode会定时的根据edits文件更新fsimage文件。也正是由于这份工作的特殊性,一旦NameNode死磕了,SecondaryNameNode会立马变身成为NameNode,保证系统正常运行。

 

就说这么多,没什么概念,就是描述一下自己的理解。实际上软件开发很难用概念去描述。网上技术博客很多,写的也比这详细的多,关键是理解,希望我上面的描述对你形成自己的理解有一定的帮助。我暂时就理解到这个程度。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值