为什么说HDFS是分布式计算的存储基石?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么说HDFS是分布式计算的存储基石?相关的知识,希望对你有一定的参考价值。

HDFS(Hadoop Distributed File System,Hadoop 分布式文件系统)是一个高度容错性的系统,适合部署在廉价的机器上。HDFS 能提供高吞吐量的数据访问,适合那些有着超大数据集(largedata set)的应用程序。


HDFS 的设计特点:


大数据文件:非常适合上T 级别的大文件或者一堆大数据文件的存储。


文件分块存储:HDFS 将一个完整的大文件平均分块存储到不同计算机上,这样读取文件可以同时从多个主机取不同区块的文件,多主机读取比单主机读取效率要高得多得多。


流式数据访问:一次写入多次读写,这种模式跟传统文件不同,它不支持动态改变文件内容,而是要求让文件一次写入就不做变化,要变化也只能在文件末添加内容。


廉价硬件:HDFS 可以应用在普通PC 机上,这种机制能够让给一些公司用几十台廉价的计算机就可以撑起一个大数据集群。


硬件故障:HDFS 认为所有计算机都可能会出问题,为了防止某个主机失效读取不到该主机的块文件,它将同一个文件块副本分配到其它某几个主机上,如果其中一台主机失效,可以迅速找另一块副本取文件。


HDFS 的关键元素:

技术分享

Block(块):将一个文件进行分块,通常是64M。


NameNode(名称节点):保存整个文件系统的目录信息、文件信息及分块信息,这是由唯一台主机专门保存,当然这台主机如果出错,NameNode 就失效了。在Hadoop 2.0 开始支持activity-standy(动态备份)模式,如果主NameNode 失效,启动备用主机运行NameNode。


DataNode(数据节点):分布在廉价的计算机上,用于存储Block 块文件。


HDFS 基本特点:

技术分享

对于整个集群有单一的命名空间。


数据一致性。适合一次写入多次读取的模型,客户端在文件没有被成功创建之前无法看到文件存在。


文件会被分割成多个文件块,每个文件块被分配存储到数据节点上,而且根据配置会由复制文件块来保证数据的安全性。


HDFS 三个重要角色

技术分享

NameNode:分布式文件系统中的管理者,主要负责管理文件系统的命名空间、集群配置信息和存储块的复制等。NameNode 会将文件系统的Meta-data(元数据)存储在内存中,这些信息主要包括了文件信息、每一个文件对应的文件块的信息和每一个文件块在DataNode 的信息等。


DataNode:文件存储的基本单元,它将Block 存储在本地文件系统中,保存了Block 的Meta-data,同时周期性地将所有存在的Block 信息发送给NameNode。


Clien:需要获取分布式文件系统文件的应用程序。



HDFS 三个基本操作及交互关系

技术分享

文件写入:


  • Client 向NameNode 发起文件写入的请求。


  • NameNode 根据文件大小和文件块配置情况,返回给Client 它所管理部分DataNode 的信息。


  • Client 将文件划分为多个Block,根据DataNode 的地址信息,按顺序写入到每一个DataNode 块中。


文件读取:


  • Client 向NameNode 发起文件读取的请求。


  • NameNode 返回文件存储的DataNode 的信息。


  • Client 读取文件信息。


文件Block 复制:


  • NameNode 发现部分文件的Block 不符合最小复制数或者部分DataNode 失效。


  • 通知DataNode 相互复制Block。


  • DataNode 开始直接相互复制。



本文出自 “中科院计算所培训” 博客,谢绝转载!

以上是关于为什么说HDFS是分布式计算的存储基石?的主要内容,如果未能解决你的问题,请参考以下文章

HDFS 分布式文件系统

新技术层出不穷,HDFS还是存储的王者吗?

Hadoop数据管理

1,Hadoop知识储备

Hadoop源代码点滴-文件系统HDFS

大数据之HDFS