1.namenode

Namenode 管理着文件系统的Namespace。它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata),比如命名空间信息,块信息等。管理这些信息的文件有两个,分别是Namespace 镜像文件(Namespace image)和操作日志文件(edit log),这些信息被Cache在RAM中,当然,这两个文件也会被持久化存储在本地硬盘。Namenode记录着每个文件中各个块所在的数据节点的位置信息,但是他并不持久化存储这些信息,因为这些信息会在系统启动时从数据节点重建。
Namenode结构图抽象图如下

Namenode将信息持久化到磁盘上:

上面的这张图片展示了NameNode怎么把元数据保存到磁盘上的。这里有两个不同的文件:

fsimage - 它是在NameNode启动时对整个文件系统的快照
edit logs - 它是在NameNode启动后,对文件系统的改动序列

只有在NameNode重启时,edit logs才会合并到fsimage文件中,从而得到一个文件系统的最新快照。但是在产品集群中NameNode是很少重启的,这也意味着当NameNode运行了很长时间后,edit logs文件会变得很大。在这种情况下就会出现下面一些问题:
1. edit logs文件会变的很大,怎么去管理这个文件是一个挑战。
2. NameNode的重启会花费很长时间,因为有很多改动[笔者注:在edit logs中]要合并到fsimage文件上。

如果NameNode挂掉了,那我们就丢失了很多改动因为此时的fsimage文件非常旧。 因为丢失的改动应该是还在内存中但是没有写到edit logs的这部分。因此为了克服这个问题,我们需要一个易于管理的机制来帮助我们减小edit logs文件的大小和得到一个最新的fsimage文件,这样也会减小在NameNode上的压力。这跟Windows的恢复点是非常像的,Windows的恢复点机制允许我们对OS进行快照,这样当系统发生问题时,我们能够回滚到最新的一次恢复点上。

Namenode容错机制:

没有Namenode,HDFS就不能工作。事实上,如果运行namenode的机器坏掉的话,系统中的文件将会完全丢失,因为没有其他方法能够将位于不同datanode上的文件块(blocks)重建文件。因此,namenode的容错机制非常重要,Hadoop提供了两种机制。
第一种方式是将持久化存储在本地硬盘的文件系统元数据备份。Hadoop可以通过配置来让Namenode将他的持久化状态文件写到不同的文件系统中。这种写操作是同步并且是原子化的。比较常见的配置是在将持久化状态写到本地硬盘的同时,也写入到一个远程挂载的网络文件系统(NFS)。

第二种方式是运行一个辅助的Namenode(Secondary Namenode)。在下面会介绍到,事实上Secondary Namenode并不能被用作Namenode它的主要作用是定期的将Namespace镜像与操作日志文件(edit log)合并,以防止操作日志文件(edit log)变得过大。通常,Secondary Namenode 运行在一个单独的物理机上,因为合并操作需要占用大量的CPU时间以及和Namenode相当的内存。辅助Namenode保存着合并后的Namespace镜像的一个备份,万一哪天Namenode宕机了,这个备份就可以用上了。

但是辅助Namenode总是落后于主Namenode,所以在Namenode宕机时,数据丢失是不可避免的。在这种情况下,一般的,要结合第一种方式中提到的远程挂载的网络文件系统(NFS)中的Namenode的元数据文件来使用,把NFS中的Namenode元数据文件,拷贝到辅助Namenode,并把辅助Namenode作为主Namenode来运行。

2.Datanode

Datanode是文件系统的工作节点,他们根据客户端或者是namenode的调度存储和检索数据,并且定期向namenode发送他们所存储的块(block)的列表。
集群中的每个服务器都运行一个DataNode后台程序,这个后台程序负责把HDFS数据块读写到本地的文件系统。当需要通过客户端读/写某个 数据时,先由NameNode告诉客户端去哪个DataNode进行具体的读/写操作,然后,客户端直接与这个DataNode服务器上的后台程序进行通 信,并且对相关的数据块进行读/写操作。

注:当向datanode写数据的过程中发现datanode存在故障时,namenode会重新分配一个datanode个pipline进行写操作,这个datanode如果故障了,这上面的block没有了对吧,其他datanode上还有这个block的备份,不过现在该block在系统中的总备份数为2,(坏了一个),下次hdfs使到该块时,会检测到该块的备份数为2,会重新备份让replication数达到3

3.Secondary NameNode

它的职责是合并NameNode的edit logs到fsimage文件中。

上面的图片展示了Secondary NameNode是怎么工作的:
首先,它定时到NameNode去获取edit logs,并更新到fsimage上。[笔者注:Secondary NameNode自己的fsimage]一旦它有了新的fsimage文件,它将其拷贝回NameNode中。NameNode在下次重启时会使用这个新的fsimage文件,从而减少重启的时间。Secondary NameNode的整个目的是在HDFS中提供一个检查点。它只是NameNode的一个助手节点。这也是它在社区内被认为是检查点节点的原因。它并不是Namenode的一个备份

Hadoop中的Namenode、Datanode和Secondary Namenode相关推荐

  1. 模拟namenode挂掉利用secondary namenode恢复

    测试机器: 10.0.50.144  master  (namenode,datanode) 10.0.50.145  node1    (datanode) 10.0.50.146  node2   ...

  2. 《小白兔到大黑牛》第十四篇Hadoop中五个进程作用

    问题导读: 1.job的本质是什么? 2.任务的本质是什么? 3.文件系统的Namespace由谁来管理,Namespace的作用是什么? 4.Namespace 镜像文件(Namespace ima ...

  3. hadoop中NameNode、DataNode和Client三者之间协作关系及通信方式介绍

    <ignore_js_op> 1)NameNode.DataNode和Client          NameNode可以看作是分布式文件系统中的管理者,主要负责管理文件系统的命名空间.集 ...

  4. Hadoop集群安全性:Hadoop中Namenode单点故障的解决方案及详介AvatarNode

    2019独角兽企业重金招聘Python工程师标准>>> 正如大家所知,NameNode在Hadoop系统中存在单点故障问题,这个对于标榜高可用性的Hadoop来说一直是个软肋.本文讨 ...

  5. Hadoop中Namenode单点故障的解决方案及详细介绍

    正如大家所知,NameNode在Hadoop系统中存在单点故障问题,这个对于标榜高可用性的Hadoop来说一直是个软肋.本文讨论一下为了解决这个问题而存在的几个solution. 1. Seconda ...

  6. Secondary Namenode的Check point机制以及Namenode、Datanode工作机制说明

    目录 前言: 1.NameNode的工作机制 2.DataNode的工作机制 3.Secondary Namenode的Check point机制 目录 前言: 在说明checkpoint机制之前,先 ...

  7. 记录docker开发hadoop,解决bug Datanode denied communication with namenode because hostname cannot be

    使用docker快速开发了一个单节点的hadoop 首先去docker hub上搜索hadoop 使用hadoop3.1.3的TAG即可,分别拉去datanode和namenode的镜像到本地 官方提 ...

  8. Hadoop中Namenode单点故障的解决方案

    Hadoop中Namenode单点故障的解决方案 需求: 实现namenode元数据的备份,解决namenode单点宕机导致集群不可用的问题. 方案描述: 当namenode所在服务器宕机的时候,我们 ...

  9. Hadoop——使用secondary namenode数据恢复namenode

    secondary namenode会定期将fsimage和edits从namenode上拉取进行合并,且在在secondary nemenode上有副本,当namenode节点损坏后,我们可以通过这 ...

最新文章

  1. Java项目:成绩管理系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)
  2. FreeTextBox的ToolbarButton整理
  3. python long函数_python 内置函数
  4. php编译优化,浅析使用Turck-mmcache编译来加速、优化PHP代码
  5. /proc/net/sockstat 里的信息是什么意思?
  6. RHELServer6.2下编译GDAL和mysql和proj4支持
  7. 深度学习掩膜_学习资源 | NOAA连接AI与环境科学(九)—海洋环境视频和图像分析教程...
  8. mybatis 多租户saas_SaaS 微服务脚手架
  9. 装机软件备忘、分类介绍 评点
  10. Java如何在创建文件时指定编码
  11. HTML系列之多媒体视频标签 video
  12. android远程主机强迫关闭了一个现有的连接,远程主机强迫关闭了一个现有的连接解决方法...
  13. 【智能家居】空调遥控器破解
  14. 《一网打尽:贝佐斯与亚马逊时代》的推荐及推荐书单
  15. ElasticSearch 定时删除指定天数的数据实践
  16. eps罗马柱头制作方法_元阳好的eps罗马柱批发价格,罗马柱子制作
  17. 个人云盘、企业云盘傻傻分不清楚?3分钟带你清晰两者差异!
  18. windows10进入/退出管理员账户(Administrator)方法
  19. 用python进行股票数据分析_用 Python 做股市数据分析(2)
  20. python爬取今日头条热点新闻事件,Python爬虫实战入门五:获取JS动态内容—爬取今日头条...

热门文章

  1. 互联网公司产品经理们面试的终极攻略
  2. 【读书笔记】单人FPS关卡设计模式
  3. 怎么把产品内容做得更吸引用户?
  4. 常用温度传感器的采集和换算方法
  5. 国内外靠谱翻译公司推荐,总有一家能让你挣到钱丨打死个翻译官 3.3
  6. 【工控软件 博图(博途)Portal西门子】体系 概述 思维导图
  7. Ceva XC架构介绍
  8. maxima 学习笔记(coeff 函数的应用)
  9. linux top显示CPU占用高,Steal高
  10. 看书海全站爬虫+MySql+多线程+代理