HDFS(Hadoop Distributed File System)的设计以及概念

作者: admin 分类: Hadoop 发布时间: 2018-03-06 13:49  阅读: 573 views

当数据集的大小超过一台独立的物理计算机的存储能力时,就有必要对它进行分区(partition)并存储到若干台单独的计算机上。管理网络中跨多台计算机存储的文件系统成为分布式文件系统。该系统架构于网络之上,势必会引入网络编程的复杂性,因此分布式文件系统比普通磁盘文件系统更为复杂。如:文件系统能够容忍节点故障且不丢失任何数据,是个极大挑战。

HDFS以流式数据访问模式来存储超大文件,运行于硬件集群上。有以下优势

  • 超大文件  MB,GB,TB,甚至有PB级数据
  • 流式数据访问 

HDFS的构架思路是一次写入、多次读取是最高效的访问模式。数据集通常由数据源生成或从数据源复制而来,接着长时间在此数据集上进行各种分析。每次分析都将涉及该数据集的大部分数据甚至全部,因此读取整个数据集的时间延迟比读取第一条记录的时间延迟更重要。

  • 商用硬件

Hadoop并不需要在昂贵可靠的硬件上。它是设计运行在商用硬件的集群上的,因此至少对于庞大的集群来说,节点故障的几率还是非常高的。HDFS遇到上述故障时,被设计成能够继续运行且不让用户察觉到明显的中断。

  • 低时间延迟的数据访问

要求低时间延迟数据访问的应用,例如几十毫秒范围,不适合在HDFS上运行。HDFS是为搞数据吞吐量应用优化的,这可能会以提高实践延迟为大家。对于低延迟的访问需求,HBase是更好的选择。

  • 大量的小文件

由于namenode将文件系统的元数据存储在内存中。因此该文件系统所能存储的文件总数受限于namenode的内存容量。根据经验,每个文件、目录和数据块的存储信息大约占150字节。因此,如果有一百万个文件,每个文件占一个数据块,至少需要300MB的内存

  • 多用户写入,任意修改文件

HDFS中的文件可能只有一个writer,而且写操作总是将数据添加在文件的末尾。它不支持具有多个写入者的操作,也不支持在文件的任意位置进行修改。


HDFS(Hadoop Distributed File System)的概念
每个磁盘都有默认的数据块大小,这个是磁盘进行读写的最小单位。构建于单个磁盘之上的文件系统通过磁盘块来管理该文件系统中的块,该文件系统块的大小可以是磁盘块的整数倍。文件系统块一般为几千字节,而磁盘块一般为512字节。对于需要读写文件的文件系统用户来说是透明的。


HDFS同样也有块(block)的概念,但是大很多,默认为64MB。与单一磁盘上的文件系统相似,HDFS上的文件也被划分为块大小的多个分块,作为独立的存储单元。与其他文件系统不同,HDFS中小于一个块大小的文件不会占据整个块的空间。


注:HDFS的块比磁盘的块大,目的是为了最小化寻址开销。如果块设置足够大,从磁盘传输数据的时间会明显大于定位这块开始位置所需的时间。因而,传输一个由多个块组成的文件的时间,取决于磁盘传输速率。


如:寻址时间为10ms,而传输速率是100MB/s,为了使寻址时间仅占传输时间的1%,我们要将块大小设置约为100MB。MapReduce中的map任务通常一次只处理一个块中的数据,因此任务 数小于集群中的节点数量时,作业的运行速度就会比较慢。

 

对分布式文件系统中的块进行抽象有多个好处
1.一个文件的大小可以大于网络中任意一个磁盘的容量。文件的所有块并不需要存储在同一个磁盘上,他们可以利用集群上的任意一个磁盘进行存储。也可以存储一个文件,该文件的块占满集群中所有的磁盘。
2.使用抽象块而非整个文件作为存储单元,大大简化了存储子系统的设计。
3.适用于数据备份而提供数据容错能力和提高可用性。


hdfs中显示块信息 用fsck指令
%hadoop fsck / -files[这个是具体文件路径] -blocks

Hadoop存档
每个文件均按块方式存储,每个块的元数据存储在namenode的内存中,因此Hadoop存储小文件会非常低效。因为大量的小文件会耗尽namenode中的大部分内存。注意:存储小文件所需的磁盘容量和存储这些文件原始内容所需要的磁盘空间相比也不会增多。


Hadoop存档文件或HAR文件,是一个更高效的文件存档工具,它将文件存入HDFS块,在减少namenode内存使用的同事,允许对文件进行透明地访问。Hadoop存档文件可以用作MapReduce的输入。


   原创文章,转载请标明本文链接: HDFS(Hadoop Distributed File System)的设计以及概念

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

更多阅读