首页 > 代码库 > HDFS

HDFS

 

 一、  hdfs默认存储基本单位是64M的数据块,若一个文件小于64M,则该文件不会占用整个数据块。

 二、HDFS体系结构

 

       1、元数据节点(Namenode)

           主控制服务器,管理文件系统的命名空间,包括打开、关闭、重命名文件和目录。

           NameNode将数据块映射到DataNode,处理来自客户端的读\写请求。

           将所有文件和文件夹数据保存在一个文件系统树中,同时也保存在硬盘上,采用文件命名空间镜像(namespace image)及修改日志方式保存。

           另外还会保存一个文件,主要包括哪些数据块,以及这些数据块主要分布在哪些数据节点上。但这些信息并不保存在硬盘上,而是系统启动时,从数据节点收集而成。

          DataNode根据Namenode的指令创建、删除复制数据块。

         一个集群只有一个NameNode,简化了系统机构,Namenode作为系统元数据的存储和仲裁者,这种设计有利于形成一个简化模型来管理每个名称空间并仲裁数据分布,使用户数据不会流经名字节点。

 namenode归纳:

1、管理文件系统的命名空间

2、记录每个文件数据在DataNode的位置和副本信息

3、协调客户端对文件的访问

4、记录命名空间内的改动或空间本身属性的改动

5、NameNode使用事物日志记录HDFS元数据的变化。使用映像文件存储文件系统的命名空间,包括文件映射、文件属性等。

   

 

2、  元数据节点(namenode)和数据节点(datanode)

           namenode和dataNode是一些软件组件,旨在以一种解耦合的方式跨多个操作系统在普通PC上运行。一个集群一个专用机器运行Namenode。

            NameNode使用事物日志(EditLog)来记录HDFS元数据的变化,使用映射文件(FsImage)存储文件系统的命名空间,包含文件的映射、文件的属性等信息。

EditLog和FsImage都存储在NameNode的本地文件系统中。

           NameNode启动时,从磁盘读取映射文件和事物日志,把事物日志的事物都应用到内存中的映射文件上,然后将新的元数据刷新到本地磁盘新的映射文件中,以便截去旧的事物日志,这个过程称为检查点(CheckPoint)。

           HDFS还设有Secondary Namenode节点,它辅助NameNode处理FSImage和EditLog。

          NameNode启动的时候合并映射文件和事物日志,而secondery nameNode周期性地从NameNode复制映射和事物日志到临时目录,合并生成新的映射文件后再重新上传到NameNode,NameNode更新映射文件并清理事物日志,使得事物日志的大小始终控制在可控行动下。

       datanode归纳:

1、负责所在节点的存储与管理

2、一次写入、多次读取(不修改)

3、文件由数据块组成、大小为64M

4、数据块尽量散布到各个节点

 

    HDFS设计基础与目标

   1、硬件错误时常态,因此需要冗余。

   2、流式数据访问。即数据批量读取,而非随机读写,Hadoop擅长做的是数据分析而非事物处理。

  3、大规模数据集

   4、简单一致性模型。为了降低系统复杂度,对文件采用一次性写多次读的逻辑设计,即
   是文件一经写入,关闭,就再也不能修改
  5、 程序采用“数据就近”原则分配节点执行

 

    HDFS体系结构

 namenode 

datanode

事物日志

映像文件

SecondaryNameNode

 

HDFS读取数据流程:

1、客户端要访问HDFS中的一个

2、首先从NameNode获取组成这个文件的数据块的位置列表(每个文件被拆分成64M~)

3、根据列表知道存储数据块的datanode

4、访问datanode获取数据

5、NameNode并不参与数据传输