hdfs中,元数据节点是文件系统中真正存储数据的地方对吗

和普通文件系统相同的是HDFS中的攵件是被分成64M一块的数据块存储的。

不同于普通文件系统的是HDFS中,如果一个文件小于一个数据块的大小并不占用整个数据块存储空间。

namenode用来管理文件系统的命名空间

其将所有的文件和文件夹的元数据保存在一个文件系统树中

这些信息也会在硬盘上保存成以下文件:命洺空间镜像(namespace image)及修改日志(edit log)

其还保存了一个文件包括哪些数据块,分布在哪些数据节点上然而这些信息并不存储在硬盘上,而是在系统启动嘚时候从数据节点收集而成的

datanode是文件系统中真正存储数据的地方。

客户端(client)或者元数据信息(namenode)可以向数据节点请求写入或者读出数据块

其周期性的向元数据节点回报其存储的数据块信息。

secondary namenode并不是元数据节点出现问题时候的备用节点它和元数据节点负责不同的事情。

合并过後的namespace image也在从元数据节点保存了一份以防namenode失败的时候,可以恢复

layoutVersion是一个负整数,保存了HDFS的持久化在硬盘上的数据结构的格式版本号

namespaceID是攵件系统的唯一标识符,是在文件系统初次格式化时生成的 

storageType表示此文件夹中保存的是元数据节点的数据结构。

当文件系统客户端(client)进行写操作时首先把它记录在修改日志中(edit log)

元数据节点在内存中保存了文件系统的元数据信息。在记录了修改日志后元数据节点则修改内存中嘚数据结构。

每次的写操作成功之前修改日志都会同步(sync)到文件系统。

fsimage文件也即命名空间映像文件,是内存中的元数据在硬盘上的checkpoint它昰一种序列化的格式,并不能够在硬盘上直接修改

同数据的机制相似,当元数据节点失败时则最新checkpoint的元数据信息从fsimage加载到内存中,然後逐一重新执行edit log中的操作

namenode可以将旧的fsimage文件及旧的日志文件,换为新的fsimage文件和新的日志文件(第一步生成的)然后更新fstime文件,写入此次checkpoint的时間

这样namenode中的fsimage文件保存了最新的checkpoint的元数据信息,日志文件也重新开始不会变的很大了。

blk_<id>保存的是HDFS的数据块其中保存了具体的二进制数據。

subdirxx:当一个目录中的数据块到达一定数量的时候则创建子文件夹来保存数据块及数据块属性信息。

数据节点的VERSION文件格式如下:

}

问题: 中国大学MOOC: 第二名称节点(Secondary NameNode)是HDFS架构中的一个组成部分它是用来保存名称节点中对HDFS元数据信息的备份,并减少名称节点重启的时间

党的性质的决定性因素是()。

甲姠法院提起行政诉讼诉称某公安分局在他不在家的情况下,撬锁对其租住的房屋进行治安

法律事实包括事件和()

根据材料,回答 47~46 題: 如果用一个字来形容北京现代汽车有限公司成立至今给人的感受那一定

按红细胞形态分类,缺铁性贫血属于 A.正细胞正色素性贫血 B.小细胞低色素性贫血 C.小细胞高

白细胞减少症是指外周血白细胞总数持续低于 A.3.0×109/L B.(1.5~2.0) ×109/L C.0.5×109/L

鉴别慢性粒细胞白血病與类白血病反应的要点是 A.周围血涂片找到幼稚粒细胞 B.周围血涂片找

下列哪一项是实验法研究的主要特点 A.在人为改变条件下的研究B.茬野外研究C.在实地进行研究D.在自然状态下

今年春季西南五省发生世纪大旱,为掌握旱灾对粮食生产造成的损失应采用的方法是A.模拟实验B.调查法C.实验

小明同学为证明细菌对植物遗体的分解作用,想出了一个实验方案:将同一种树的落叶分成甲、乙两组都进行滅菌处

被誉为“水稻杂交之父”的是()。A.李时珍B.孟德尔C.达尔文D.袁隆平

纤维囊性乳腺病的病理特点哪项除外A.肿块多见内上限B.昰颗粒状结节状或囊性肿块C.肿块常多发,边

根据保险标的的不同商业保险的种类包括()/list6/353918.html

}


  • HDFS体系结构的组成

HDFS体系结构中有两類节点一类是NameNode,又叫”元数据节点”;另一类是DataNode又叫”数据节点”。这两类节点分别承担Master和Worker具体任务的执行节点

元数据节点用来管悝文件系统的命名空间
其将所有的文件和文件夹的元数据保存在一个文件系统树中。
这些信息也会在硬盘上保存成以下文件:命名空间镜潒(namespace image)及修改日志(edit log)

其还保存了一个文件包括哪些数据块分布在哪些数据节点上。然而这些信息并不存储在硬盘上而是在系统启动的时候从數据节点收集而成的。
Namenode记录着每个文件中各个块所在的数据节点的位置信息但是他并不持久化存储这些信息,因为这些信息会在系统启動时从数据节点重建

数据节点是文件系统中真正存储数据的地方。

客户端(client)或者元数据信息(namenode)可以向数据节点请求写入或者读出数据块

其周期性的向元数据节点回报其存储的数据块(block)信息。

从元数据节点并不是元数据节点出现问题时候的备用节点它和元数据节点负责不同的倳情。

其主要功能就是周期性将元数据节点的命名空间镜像文件和修改日志合并以防日志文件过大。这点在下面会相信叙述

合并过后嘚命名空间镜像文件也在从元数据节点保存了一份,以防元数据节点失败的时候可以恢复。

文件系统命名空间映像文件及修改日志:

  这里的超大文件通常是指百MB、设置数百TB大小的文件目前在实际应用中,HDFS已经能用来存储管理PB级的数据了

  2)流式的访问数据

  HDFS嘚设计建立在更多地响应”一次写入、多次读写”任务的基础上。这意味着一个数据集一旦由数据源生成就会被复制分发到不同的存储節点中,然后响应各种各样的数据分析任务请求在多数情况下,分析任务都会涉及数据集中的大部分数据也就是说,对HDFS来说请求读取整个数据集要比读取一条记录更加高效。

  3)运行于廉价的商用机器集群上

  Hadoop设计对硬件需求比较低只须运行在低廉的商用硬件集群上,而无需昂贵的高可用性机器上廉价的商用机也就意味着大型集群中出现节点故障情况的概率非常高。这就要求设计HDFS时要充分考慮数据的可靠性安全性及高可用性。

  1)不适合低延迟数据访问

  如果要处理一些用户要求时间比较短的低延迟应用请求则HDFS不适匼。HDFS是为了处理大型数据集分析任务的主要是为达到高的数据吞吐量而设计的,这就可能要求以高延迟作为代价

  改进策略:对于那些有低延时要求的应用程序,HBase是一个更好的选择通过上层数据管理项目来尽可能地弥补这个不足。在性能上有了很大的提升它的口號就是goes
time。使用缓存或多master设计可以降低client的数据请求压力以减少延时。还有就是对HDFS系统内部的修改这就得权衡大吞吐量与低延时了,HDFS不是萬能的银弹

  2)无法高效存储大量小文件

  因为Namenode把文件系统的元数据放置在内存中,所以文件系统所能容纳的文件数目是由Namenode的内存夶小来决定一般来说,每一个文件、文件夹和Block需要占据150字节左右的空间所以,如果你有100万个文件每一个占据一个Block,你就至少需要300MB内存当前来说,数百万的文件还是可行的当扩展到数十亿时,对于当前的硬件水平来说就没法实现了还有一个问题就是,因为Map
task的数量昰由splits来决定的所以用MR处理大量的小文件时,就会产生过多的Maptask线程管理开销将会增加作业时间。举个例子处理10000M的文件,若每个split为1M那僦会有10000个Maptasks,会有很大的线程开销;若每个split为100M则只有100个Maptasks,每个Maptask将会有更多的事情做而线程的管理开销也将减小很多。

  改进策略:要想让HDFS能处理好小文件有不少方法。

  3)不支持多用户写入及任意修改文件

  在HDFS的一个文件中只有一个写入者而且写操作只能在文件末尾完成,即只能执行追加操作目前HDFS还不支持多个用户对同一文件的写操作,以及在文件任意位置进行修改

HDFS运行的体系结构

HDFS是一个主/从(Mater/Slave)体系结构,从最终用户的角度来看它就像传统的文件系统一样,可以通过目录路径对文件执行CRUD(Create、Read、Update和Delete)操作但由于分布式存储的性质,HDFS集群拥有一个NameNode和一些DataNodeNameNode管理文件系统的元数据,DataNode存储实际的数据客户端通过同NameNode和DataNodes的交互访问文件系统。客户端联系NameNode以获取攵件的元数据而真正的文件I/O操作是直接和DataNode进行交互的。

HFDS写过程示意图:

第一步:客户端询问NameNode它应该从哪里读取文件(如图2中的①)
第二步:NameNode发送数据块的信息给客户端。(数据块信息包含了保存着文件副本的DataNode的IP地址以及DataNode在本地硬盘查找数据块所需要的数据块ID。) (如图2中的②)
第彡步:客户端检查数据块信息联系相关的DataNode,请求数据块(如图2中的③)
第四步:DataNode返回文件内容给客户端,然后关闭连接完成读操作。(如圖2中的④)

先说一下”hadoop fs 和hadoop dfs的区别”看两本Hadoop书上各有用到,但效果一样求证与网络发现下面一解释比较中肯。

  粗略的讲fs是个比较抽潒的层面,在分布式环境中fs就是dfs,但在本地环境中fs是local file system,这个时候dfs就不能用

没有Namenode,HDFS就不能工作事实上,如果运行namenode的机器坏掉的话系统中的文件将会完全丢失,因为没有其他方法能够将位于不同datanode上的文件块(blocks)重建文件因此,namenode的容错机制非常重要Hadoop提供了两种机制。

第┅种方式是将持久化存储在本地硬盘的文件系统元数据备份Hadoop可以通过配置来让Namenode将他的持久化状态文件写到不同的文件系统中。这种写操莋是同步并且是原子化的比较常见的配置是在将持久化状态写到本地硬盘的同时,也写入到一个远程挂载的网络文件系统

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

在HDFS里文件被切分成数据块,通常每个数据块64MB~128MB然后每個数据块被写入文件系统。同一个文件的不同数据块不一定保存在相同的DataNode上这样做的好处是,当对这些文件执行运算时能够通过并行方式读取和处理文件的不同部分。
当客户端准备写文件到HDFS并询问NameNode应该把文件写到哪里时NameNode会告诉客户端,那些可以写入数据块的
DataNode写完一批数据块后,客户端会回到NameNode获取新的DataNode列表把下一批数据块写到新列表中的DataNode上。

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信