名字节点(NameNode )是HDFS主从结构中主节点上运行的主要进程,它指导主从结构中的从节点,数据节点(DataNode)执行底层的I/O任务。

  名字节点是HDFS的书记员,维护着整个文件系统的文件目录树,文件/目录的元信息和文件的数据块索引,即每个文件对应的数据块列表(后面的讨论中,上述关系也称名字节点第一关系)。这些信息、以两种形式存储在本地文件系统中:一种是命名空间镜像(File System Image, FSImage,也称文件系统镜像),另一种是命名空间镜像的编辑日志(Edit Log) 。

  命名空间镜像保存着某一特定时刻HDFS的目录树、元信息和数据块索引等信息,后续对这些信息的改动,则保存在编辑日志中,它们一起提供了一个完整的名字节点第一关系。
  同时,通过名字节点,客户端还可以了解到数据块所在的数据节点信息。需要注意的是,名字节点中与数据节点相关的信息不保留在名字节点的本地文件系统中,也就是上面提到的命名空间镜像和编辑日志中,名字节点每次启动时,都会动态地重建这些信息,这些信息构成了名字节点第二关系。运行时,客户端通过名宇节点获取上述信息,然后和数据节点进行交互,读写文件数据。
  另外,名字节点还能获取HDFS整体运行状态的一些信息,如系统的可用空间、己经使用的空间、各数据节点的当前状态等。

  第二名字节点(Secondary NameNode, SNN)是用于定期合并命名空间镜像和镜像编辑日志的辅助守护进程。和名字节点一样,每个集群都有一个第二名字节点,在大规模部署的条件下,一般第二名字节点也独自占用一台服务器。

  第二名字节点和名字节点的区别在于:

  它不接收或记录HDFS的任何实时变化,而只是根据集群配置的时问间隔,不停地获取HDFS某一个时间点的命名空间镜像和镜像的编辑日志,合并得到一个新的命名空间镜像。该新镜像会上传到名字节点,替换原有的命名空间镜像,并清空上述日志。应该说,第二名字节点配合名字节点,为名字节点上的名字节点第一关系提供了一个简单的检查点(Checkpoint)机制,并避免出现编辑日志过大,导致名字节点启动时间过长的问题。
  如前面所述,名字节点是 HDFS集群中的单一故障点,通过第二名字节点的检查点,可以减少停机的时间并减低名字节点元数据丢失的风险。但是,第二名字节点不支持名字节点的故障白动恢复,名字节点失效处理需要人工干预。

没有名称节点,文件系统将无法使用。事实上,如果运行名称节点的机器被毁坏了,文件系统上所有的文件都会丢失,因为我们无法知道如何通过数据节点上的块来重建文件。因此,名称节点能够经受故障是非常重要的,Hadoop提供了两种机制来确保这一点。

第一种机制就是复制那些组成文件系统元数据持久状态的文件。Hadoop可以通过配置使名称节点在多个文件系统上写入其持久化状态。这些写操作是具同步性和原子性的。一般的配置选择是,在本地磁盘上写入的同时,写入一个远程NFS挂载(mount)。

另一种可行的方法是运行一个二级名称节点,虽然它不能作为名称节点使用。这个二级名称节点的重要作用就是定期的通过编辑日志合并命名空间镜像,以防止编辑日志过大。这个二级名称节点一般在其他单独的物理计算机上运行,因为它也需要占用大量CPU和内存来执行合并操作。它会保存合并后的命名空间镜像的副本,在名称节点失效后就可以使用。但是,二级名称节点的状态是比主节点滞后的,所以主节点的数据若全部丢失,损失仍在所难免。在这种情况下,一般把存在NFS上的主名称节点元数据复制到二级名称节点上并将其作为新的主名称节点运行。

hdfs 名称节点和数据节点的更多相关文章

  1. Windows Server 2008R2配置MySQL Cluster并将管理节点和数据节点配置成windows服务

    说明:将mysql的管理节点和数据节点配置成windows服务是为了防止有人手误关闭管理节点或数据节点的dos命令窗口,管理节点或数据节点的命令窗口误关闭可能会造成mysql某台或某几台mysql不能 ...

  2. Hadoop集群动态服役新的数据节点&&退役数据节点

    备注:新添的机器为hadoop05,现有hadoop01.hadoop02.hadoop03.hadoop04 环境准备: 1.先克隆一台和集群中一样的机器 2.修改机器ip和主机名称 3.删除原来的 ...

  3. HDFS概念名称节点和数据节点-名称节点-文件系统元数据的持久状态

  4. HDFS概念名称节点和数据节点-名称节点

  5. HDFS概念名称节点和数据节点-基本模型

  6. MySQL Cluster线上管理节点配置文件-数据节点32G内存

    网上的朋友提供的,仅供参考. [NDBD DEFAULT] NoOfReplicas= 2 DataMemory=20G IndexMemory=5G MaxNoOfConcurrentTransac ...

  7. MySQL Cluster管理节点配置文件-数据节点4G内存

    自己测试机器上搭建使用,大家可以参考一下 [NDBD DEFAULT] #TotalSendBufferMemory = 256M NoOfReplicas=2 DataMemory=2500M In ...

  8. KingbaseES R3集群在线删除数据节点案例

    案例说明: kingbaseES R3集群一主多从的架构,一般有两个节点是集群的管理节点,所有的节点都可以为数据节点:对于非管理节点的数据节点可以在线删除:但是对于管理节点,无法在线删除,如果删除管理 ...

  9. HDFS数据节点DataNode未启动解决方法

    在解决这个问题的过程中,我又是积累了不少经验... 首先让我搞了很久的问题是,书上说进程全部启动的命令是/bin/start-all.sh,但是当我执行的时候显示command not found.后 ...

随机推荐

  1. PHP接入umeditor(百度富文本编辑器)

    2015年6月28日 23:08:49 星期日 效果: 开搞;) 首先: 百度官网上下载 umeditor 简版的富文本编辑器(这里) 然后: 解压放到自己的项目中, 配置服务器, 保证能在浏览器端加 ...

  2. ABAP 行列稳定刷新语句

    DATA stbl TYPE lvc_s_stbl. stbl-row = 'X'." 基于行的稳定刷新         stbl-col = 'X'." 基于列稳定刷新      ...

  3. nyoj19_排列

    擅长排列的小明 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序的全排列,如果你想 ...

  4. linux 解压缩

    tar f 使用档案名字,这个参数是最后一个参数,后面只能接档案名 c 建立压缩档案 x 解压 t 查看内容 r 向压缩归档文件末尾追加文件 u 更新原压缩包中的文件 z 有gzip属性的 j 有bz ...

  5. Linux面试题汇总答案

    转自:小女生的Linux技术~~~Linux面试题汇总答案~~ 一.填空题:1. 在Linux系统中,以 文件 方式访问设备 .2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的 ...

  6. [Android Pro] Toolbar的完全自定义

    reference to : http://blog.csdn.net/elder_sword/article/details/46634751 Toolbar是什么,不知道的可以去大神的博客瞻仰下 ...

  7. Xcode 7如何免费真机调试iOS应用

    Xcode 7如何免费真机调试iOS应用的简单方式: 运行Xcode后,点击菜单中的Preferences…进入Accounts标签,这里选择添加Apple ID:在弹出的对话框中登入你的Apple ...

  8. HTML5 – 4.canvas

    1.绘制矩形 2.绘制圆形 3.绘制文字 4.保存文件 什么是 Canvas? HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成. < ...

  9. C# 根据ADO.NET数据库连接字符串构建EntityFrame数据库连接字符串

    为了保持开发效率,以及保持代码优雅,项目中引用了EntityFrame.但是又因为某些报表功能需要大量计算,所以又要求直接使用ADO.NET,调用存储过程进行计算. 于是乎webconfig文件中就会 ...

  10. SQL高级查询技巧(两次JOIN同一个表,自包含JOIN,不等JOIN)

    掌握了这些,就比较高级啦 Using the Same Table Twice 如下面查询中的branch字段 SELECT a.account_id, e.emp_id, b_a.name open ...