namenode和datanode工作机制_Namenode、DataNode工作机制

前言:

我们上一节看到了如何搭建和验证我们hadoop平台,在验证时我们使用jps命令查看进程,如下:DataNode、NameNode、SecondaryNameNode

那么这些进程都具有哪些功能,这些功能是怎么服务于hadoop平台的,进程之间是怎么进行合作的,这些问题就是我们这一节要解决的问题。(yarn暂时不考虑)

概括来讲,以银行打一个比方,namenode是一个前台记账客服,secondarynamenode是后台维护账本和更新的工作人员,即对前台的业务进行整合处理,而DataNode是存钱的地方,金库。

现在我们要明白我们所处的机器环境,我的这台hmaster,现在担任了上述的三个角色,但正常的集群中,这三个是不在同一台机器上的,在这里放在一起是为了方便演示。

0 元数据

简单来说就是文件的存储信息

NameNode(FileName, replicas, block-ids,id2host...)

ex: /test/a.log, 3 ,{blk_1,blk_2}, [{blk_1:[h0,h1,h3]},{blk_2:[h0,h2,h4]}]/test/a.log, 3 ,{blk_1,blk_2}, [{blk_1:[h0,h1,h3]},{blk_2:[h0,h2,h4]}]

1 NameNode

我们先来考虑hadoop关于文件上传的功能。

nameNode是文件存储信息的重要部分。我们都知道hadoop是处理海量数据的,那么namenode中所要存储的文件信息也就特别多,为了能提高与用户的交互速度,这些元数据会被加载到内存中进行操作,当然namenode的硬盘上也有备份。

在集群工作中,断电、宕机是很经常的事,那么如何保证namenode中硬盘上的数据和内存的数据是同步的,还有即使不宕机,要不断的同步两者之间的数据,这也是很耗费cpu资源的,影响与用户的交互速度,那么这些问题要如何处理呢?

实现方案有很多,但是,没有绝对的同步。

hadoop最初认为这种情况的处理是hadoop的能力方位之外,所以之后hadoop就交给企业自己处理了,随着企业处理方案的增多和逐渐成熟,hadoop就集百家之长,也给出了自己的处理方案:

实际上namenode硬盘中的元数据并不是来自于自己的内存,而是从secondaryNamenode中下载的,且听我慢慢道来。

用户在客户端上传一个文件,最先与客户交互的是namenode,namenode先将该用户的上传动作用一个存放在硬盘上的日志文件(edits.log)记录下来,然后在DataNode上写入该文件,接着再从namenode内存中更新这条元数据。用日志文件的方法就解决了namenode断电数据丢失的问题。

接下来就是完成namenode中硬盘数据更新的动作了。当edits.log文件中新增条数达到一定数目,或者经过一段时间后,namenode(nn)会通知secondaryNamenode(sn)要进行数据更新了。首先sn会向nn索取日志文件,并让nn在新建一个edits.new文件,暂时替代edits.log文件,sn拿到日志文件后,再从nn中下载其硬盘中的元数据。加载到内存,对照着日志文件,进行合并更新,完成之后,再上传到nn中,替换原来的元数据文件,还有那edits.new也重命名为edits.log。这样一来就减轻了nn的cpu工作压力。

至此,namenode的工作就介绍的差不多了。其中在nn中存储元数据的地方叫fsimage,在sn中存储元数据的地方叫fsimage.chkpoint。

2 DataNode

关于DataNode我们说的就比较简单了,它只要起一个存储作用,值得注意的是,为防止机器硬盘坏了,DataNode对每一个文件都是会存放副本的,默认是3个,DataNode在存放的时候,会将其中一个放在不同的机架上(若果有的话),防止机架断电,最后一个就随机存放了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值