Hadoop-HDFS

Posted sodawoods-blogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop-HDFS相关的知识,希望对你有一定的参考价值。

Filesystems that manage the storage across a network of machines are called distributed filesystems
One of the biggest challenges is making the filesystem tolerate node failure without sufferingdata loss.HDFS is optimized for delivering a high throughput of data

Very large files

Streaming data access:write-once, read-many-times

Commodity hardware:the chance of node failure across the cluster is high,

 

HDFS不适合的场景:

(1)Low-latency data access。HDFS适合高吞吐量的数据访问,因此可能会牺牲latency。HBase适合低延迟的数据访问。

(2)Lots of small files。namenode在内存中存储文件系统的元信息。因此namenode所在节点的内存大小决定了文件系统能够存储的最大文件数量。小文件太多将导致namenode的内存存储不下。

As a rule of thumb, each file, directory, and block takes about 150 bytes。如果有one million个文件,每个文件占据一个block,那么namenode需要300MB

(3)Multiple writers, arbitrary file modifications

 

HDFS的概念

Blocks

HDFS的Block默认大小128MB。(disk的Block大小通常是512B)

Why Blocks so Large?

HDFS的Block设计成如此大是为了最小化seek的开销。如果Block足够大,那么从磁盘传输数据的时间开销将比寻找block开始位置的时间长很多。

如果seek的时间是10ms,磁盘的传输速度是100MB/s,那么为了使seek时间占传输时间的1%,block的大小应该设置成100MB。

随着磁盘传输数据的速度的提升,Block还会变得更大。(也就是说性能好的机器的Block的size可以调的大一些,比如使用固态硬盘。但是也不能让Block太大,因为MapReduce通常每次操作一个Block)

引入Block带来的好处:

(1)a file can be larger than any single disk in the network

(2)simplify the storage subsystem,because blocks are a fixed size, it is easy to calculate how many can be stored on a given disk) and eliminating metadata concerns (because blocks are just chunks of data to be stored, file metadata such as permissions information does not need to be stored with the blocks, so another system can handle metadata separately).

(3)blocks fit well with replication for providing fault tolerance and availability.复制Block实现HA。默认3个

 

NameNode

一个HDFS集群中有一个NameNode,它是文件系统的namespace。

NameNode保存filesystem tree 和 tree中所有文件和目录的元信息。这部分信息通过两种文件持久化到磁盘中:(1)namespace image(2)edit log

NameNode也知道一个文件所对应的所有Block所在的datanodes所在的位置,但是这部分信息不会持久化到硬盘中,因为这部分信息在系统启动时可以构造出来。

为了防止NameNode失效导致系统崩溃,Hadoop提供两种方案:

(1)将文件系统的元数据进行备份,通过配置可以让namenode将持久化状态信息写到多个文件系统中,比如本地磁盘以及远程NFS mount

(2)SecondaryNameNode

 

DataNode

一个HDFS集群有多个DataNode,每个DataNode负责存储和检索Blocks,并周期性地向NameNode发送它们存储的Blocks的列表。

 


以上是关于Hadoop-HDFS的主要内容,如果未能解决你的问题,请参考以下文章