分布式文件系统HDFS原理与操作

1.HDFS:

     提供分布式存储机制,提供可线性增长的海量存储能力;

     自劢数据冗余,无须使用Raid,无须另行备份;

    为进一步分析计算提供数据基础。

2.HDFS设计的基础与目标:

   HDFS是基于流数据模式访问和处理超大文件的需求而开发的,可以运行与廉价的商业服务器上。

   主要特点:

             1).处理超大文件;

              2).流式地访问数据;即数据批量读取而非随机读写,Hadoop擅长做的是数据分析而不是事务处理。

              3).大规模数据集;

              4).简单一致性模型;为了降低系统复杂度,对文件采用一次性写多次读的逻辑设计,即是文件一经写入,关闭,就再也不能修改。

              5).程序采用“数据就近”原则分配节点执行.

3.HDFS体系结构

首先介绍HDFS的相关概念

1)块(Block)

     操作系统中的文件块。文件是以块的形式存储在磁盘中,此处块的大小代表系统读、写可操作的最小文件大小。也就是说,文件系统每次只能操作磁盘块大小的整数倍数据。通常来说,一个文件系统块大小为几千字节,而磁盘块大小为512字节。

   HDFS中的块是一个抽象的概念,比操作系统中的块要大得多。在配置hadoop系统时会看到,它的默认大小是64MB。HDFS使用抽象的块的好处:1)可以存储任意大的文件而又不会受到网络中任一单个节点磁盘大小的限制。2)使用抽象块作为操作的单元可以简化存储子系统。

2)NameNode和DataNode

HDFS体系结构中有两类节点:一类是NameNode,一类是DataNode。这两类节点分别承担Master和Worker的任务。NameNode就是Master管理集群中的执行调度,DataNode就是Worker具体任务的执行节点。NameNode管理文件系统的命名空间,维护整个文件系统的文件目录树以及这些文件的索引目录。这些信息以两种形式存储在本地文件系统中,一种是命名空间镜像(Namespace image),一种是编辑日志(Edit  log)。从NameNode中你可以获得每个文件的每个块所在的dataNode。需要注意的是,这些信息不是永久保存的,NameNode会在每次系统启动时动态地重建这些信息。当运行任务时,客户端通过NameNode获取元数据信息,和DataNode进行交互以访问整个文件系统。

体系结构

分布式文件系统HDFS原理与操作_第1张图片

HDFS采用Master/Slave架构对文件系统进行管理。一个HDFS集群是由一个NameNode和一定数目的DataNode组成的。NameNode是一个中心服务器,负责管理文件系统的命名空间(Namespace)以及客户端对文件的访问。集群的DateNode一般是由一个节点运行一个DataNode进程,负责管理它所在节点上的存储。

从内部看,一个文件其实被分成了一个或多个数据块,这些块存储在一组DataNode上。NameNode执行文件系统的名字空间操作,比如打开,关闭,重命名文件或目录。它负责确定数据块到具体DataNode节点的映射。DataNode负责处理文件系统客户端的读/写请求。在NameNode的统一调度下进行数据块的创建,删除和复制。

1)副本存放和读取策略

副本的存放是HDFS可靠性和性能的关键,优化的副本存放策略也正是HDFS区分于其他大部分分布式文件系统的重要特征。HDFS采用一种称为机架感知(rack-aware)的策略来改进数据的可靠性,可用性和网络带宽的利用率上。

在读取数据时,为了减少整体带宽消耗和降低整体的带宽延时,HDFS会尽量让读取程序读取离客户端最近的副本。

2)安全模式

NameNode启动后会进入一个称为安全模式的状态。处于安全模式的NameNode不会进行数据块的复制。NameNode从所有的DataNode接收心跳信号和块状态报告。

3)文件安全

hadoop采用了两种方法来确保文件安全。第一种方法:将NameNode中的元数据转储到远程的NFS文件系统上;第二种方法:系统中同步运行一个Secondary   NameNode。这个节点的主要作用是周期性的合并日志中的命名空间镜像,以避免编辑日志过大。

4.hadoop的读写数据流

读取数据流程

客户端要访问HDFS中的一个文件;

首先从namenode获得组成这个文件的数据块位置列表;

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

访问datanode获取数据;

Namenode并不参与数据实际传输。

分布式文件系统HDFS原理与操作_第2张图片

写入数据流程

客户端请求namenode创建新文件;

客户端将数据写入DFSOutputStream;

建立pipeline依次将目标数据块写入各个datanode,建立多个副本。

分布式文件系统HDFS原理与操作_第3张图片

5.HDFS操作


你可能感兴趣的:(分布式文件系统HDFS原理与操作)