码迷,mamicode.com
首页 > 其他好文 > 详细

HDFS概述

时间:2016-06-09 17:21:38      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

 该文章参考 Hadoop权威指南

引言

  随着数据爆炸式增长,数据的存储和分析作为一个大的难题。多年来硬盘存储容量增长的同时,访问速度-数据从硬盘读取的速度,未内与时俱进。比如1990年, 一个磁盘存储1370M需要4.4MB/s的速度,我们只需5分钟就能读取整个磁盘的

数据。20年过去了,1TB(=1024GB)级别的磁盘驱动器很正常。传输的速度在100MB/s左右, 因此需要2个半小时以上的时间才能读取整个驱动器的数据。从一个磁盘驱动器读取所有数据需要花那么长时间,写更慢。一个简单的解决方法是

同时从多个磁盘读取时间,试想如果100个磁盘,每个磁盘存储1%的数据,如果并行运行,我们不到2分钟时间就可以读取所有数据。但是面临很多问题。

   第一个问题,硬件故障,硬件设施增加,出现故障概率会增加。

   第二个问题,大部分任务需要通过某种方式将数据合并起来,分布式系统能够组合多个数据源信息,如何保证正确性是个非常难的挑战。

  为此,hadoop的hdfs,分布式文件系统有什么好处?

         第一,一个文件可以大于网络上任意一个磁盘容量,不需要存储在一个磁盘上,可以分块利用集群从存储任意一个磁盘上。

         第二, 利用块抽象单元而不是文件简化存储子系统,比如说传统文件系统每个文件都会带有文件名,文件大小等信息,导致元数据冗余。

         第三, 如果块损坏以及磁盘故障,每个块在少数其他机器上进行复制,如果一个块损坏还可以再其他机器读取副本。

 为什么HDFS中的块设置为128M?

   HDFS的块比磁盘的大,目的是为了减少寻址的开销,通过一个块足够大,从磁盘转移数据的时间能够远大于定位这个块开始端的时间,因此传送一个由多个块组成的文件时间取决于磁盘传输速率。

   如果寻址时间是10毫秒左右,传输速率是100M/s,为了使寻址时间为传输时间的1%,我们需要100M左右大小,考虑到其他因素HDFS设置为128M的块,这一个数字将以后随着新一代磁盘传输速度加快而做调整。

    在实际生产情况下,如果CPU性能差,也就是寻址时间比较慢,block文件要加大。如果带宽比较小,CPU性能比较好,block文件要调小。

 什么叫做元数据?

    元数据(Meta Data), 又称中介数据, 中继数据,为描述数据的数据(data about data),主要是为了描述数据属性(property)信息, 用来支持如指示数据的存储位置,历史数据,资源查找,文件记录等功能。

数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。

HDFS的架构

   HDFS集群有两个节点,以管理者-工作者的模式进行,即一个名称节点(NameNode)管理者和多个数据节点(DataNode)工作者。

1. 名称节点NameNode 

  • 管理文件的命名空间,以“/"为根目录
  • 管理管路目录树上的文件元数据信息。元数据持久化到磁盘上:fsimage文件和edits文件(记录操作日志)。NameNode接到客户端对文件读写操作,首先更改内存里面元数据信息,然后把操作记录到edits文件里面。
  • 接受客户端对文件的控制访问,比如更改文件名,权限等。
  • 接受客户端对文件的读写请求,但不是真正执行读写操作。
  • 接受DataNode的心跳信息,维护集群上的DataNode列表。
  • 接收DataNode上报存储的块列表。

     NameNode的启动过程:

2. 数据节点DataNode

 

3. 辅助节点SecondaryNameNode,checkPoint检查点节点

    合并流程:

 

 

HDFS写文件流程

 

HDFS读文件流程

HDFS概述

标签:

原文地址:http://www.cnblogs.com/goahead327/p/5572440.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!