hdfs 名称节点和数据节点

 名字节点(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上的主名称节点元数据复制到二级名称节点上并将其作为新的主名称节点运行。

时间: 2024-11-03 21:01:40

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

HDFS概念详解---名称节点与数据节点

HDFS集群有两种节点,以管理者-工作者的模式运行,即一个名称节点(管理者)和多个数据节点(工作者).名称节点管理文件系统的命名空间.它维护着这个文件系统树及这个树内所有的文件和索引目录.这些信息以两种形式将文件永久保存在本地磁盘上:命名空间镜像和编辑日志.名称节点也记录着每个文件的每个块所在的数据节点,但它并不永久保存块的位置,因为这些信息会在系统启动时由数据节点重建. 客户端代表用户通过与名称节点和数据节点交互来访问整个文件系统.客户端提供一个类似POSIX(可移植操作系统界面)的文件系统接

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

说明:将mysql的管理节点和数据节点配置成windows服务是为了防止有人手误关闭管理节点或数据节点的dos命令窗口,管理节点或数据节点的命令窗口误关闭可能会造成mysql某台或某几台mysql不能被访问,注册成windows服务自动启动更安全可靠. 目录 操作系统:Windows Server 2008 R2 Enterprise VM1:192.168.220.103 管理节点(MGM), VM2:192.168.220.104数据节点(NDBD1),SQL节点(SQL1) VM3:192

两张图说清楚名称节点和数据节点

C# chart,有关如何在鼠标移动到Series上时显示节点及数据 (有待继续更新)

一.效果与思路 效果: 解决方案1 用chart的mousemove时间,实时跟踪鼠标最近的X轴的位置,然后把cursorX设置到那个位置上,让用户知道我是选的那一个X的值,同时用tooltip显示该X轴上所有的Y值,结贴了谢谢大家. 至于如何显示鼠标移动到的那个series上的数据节点,可以在Mousmove时,用一个击中测试,判断. 参考代码,击中测试获得点数据点的索引: if (e.HitTestResult.ChartElementType == ChartElementType.Dat

CentOS上安装Hadoop2.7,添加数据节点,运行wordcount

安装hadoop的步骤比较繁琐,但是并不难. 在CentOS上安装Hadoop2.7 1. 安装 CentOS,注:图形界面并无必要 2. 在CentOS里设置静态IP,手工编辑如下4个文件 /etc/hosts /etc/sysconfig/netwok /etc/hostname /etc/sysconfig/network-scripts/ifcfg-eno1677773 3. 关闭防火墙 Close firewalld systemctl stop firewalld.service #

HDFS源码分析(四)-----节点Decommission机制

前言 在Hadoop集群中,按照集群规模来划分,规模可大可小,大的例如百度,据说有4000台规模大小的Hadoop集群,小的话,几十台机器组成的集群也都是存在的.但是不论说是大型的集群以及小规模的集群,都免不了出现节点故障的情况,尤其是超大型的集群,节点故障几乎天天发生,因此如何做到正确,稳妥的故障情况处理,就显得很重要了,这里提供一个在Hadoop集群中可以想到的办法,就是Decommission操作,节点下线操作,一般的情况是故障节点已经是一个dead节点,或是出现异常情况的节点.此时如若不

DataNode节点的数据块管理 FSVolumeSet、FSVolume

在分布式文件系统HDFS中,DataNode节点被用来存储文件的数据,确切的来说就是HDFS中的每一个文件是分块来存储的,一个文件可能有多个数据块,每一个数据块有多个副本,而且数据块的不同副本存储在不同的DataNode节点上,所以如果把整个HDFS集群看做一台机器的话,那么每一个DataNode节点就可以看做是一块存储磁盘.实际上,HDFS也正是这么干的.前面说过,每一个DataNode节点我们都可以为它配置多个本地存储路径,如果把这些本地存储路径统一看做一块磁盘的话,那每个存储路径就可以看做

Hadoop源码分析——数据节点写数据1

即使不考虑数据节点出错后的故障处理,文件写入也是HDFS中最复杂的流程.本章以创建一个新文件并向文件中写入数据,然后关闭文件为例,分析客户端写文件时系统各节点的配合,如下图所示. 客户端调用DistributedFileSystem的create()方法创建文件,上图的步骤1,这时,DistributedFileSystem创建DFSOutputStream,并由远程过程调用,让名字节点执行同名方法,在文件系统的命名空间中创建一个新文件.名字节点创建新文件时,需要执行各种各样的检查,如名字节点处

Hadoop源码分析——数据节点写数据2

数据接收 客户端写往数据节点的数据由org.apache.hadoop.hdfs.server.datanode.BlockReceiver.java中的receiveBlock方法接收 void receiveBlock( DataOutputStream mirrOut, // output to next datanode DataInputStream mirrIn, // input from next datanode DataOutputStream replyOut, // ou