Hadoop分布式文件系统—HDFS
-
什么是分布式文件系统
所谓的分布式文件系统,我的个人理解是管理网络中把数据存储在不止一台机器上的系统,这样的存储方式被称为分布式存储。(管理网络中跨多台计算机存储的文件系统称为分布式文件系统。)
-
分布式文件系统能干什么
(1)分布式文件系统可以存储数据量较大的文件。 (GB,TB,PB级别的海量数据)
(2)一次写入,多次夺取。(一个文件经过创建、写入和关闭之后就不需要改变。这一假设简化了数据一致性问题,并且使高吞吐量的数据访问成为可能。Map/Reduce应用或者网络爬虫应用都非常适合这个模型。目前还有计划在将来扩充这个模型,使之支持文件的附加写操作。)
(3)搭建在普通的商业集群机器上就可以了,节省成本
-
HDFS原理
HDFS(Hadoop Distributed File System)是一个分布式文件系统。它具有高容错性并提供了高吞吐量的数据访问,非常适合大规模数据集上的应用,它提供了一个高度容错性和高吞吐量的海量数据存储解决方案。
-
HDFS在设计时已考虑硬件错误等情况,具有高容错性等特征。HDFS的假设前提术设计目标包括以下几个方面。
1.硬件错误
硬件错误是常态而不是异常。HDFS 可能由成百上千台服务器构成,每台服务器上存储着文件系统的部分数据。我们面对的现实是构成系统的组件数量是巨大的,而且任一-组件都有可能失效,这意味着总是有一-部分HDFS的组件是不工作的。因此,错误检测和快速、自动的恢复是HDFS的核心架构目标。2.大规模数据集
运行在HDPFS上的应用具有很大的数据集。HDPFS上一个典型文件的大小般在吉字节至太字节量级。因此,HDFS被配置以支持大文件存储。它能提供整体上较高的数据传输带宽,能在一个集群里扩 展到数百个节点。一个单一的HDFS实例能支撑数以千万计的文件存储和访问。3.简单的一致性模型
HDFS应用需要一个“一 次写人、 多次读取”的文件访问模型。-一个文件经过创建、写人和关闭之后就不需要改变。这一-假设简化了数据一致性问题, 并且使高吞吐量的数据访问成为可能。MapReduce 应用或者网络爬虫应用都非常适合这个模型。4.移动计算比移动数据更划算
一个应用请求的计算,离它操作的数据越近就越高效,在数据达到海量级别的时候更是如此。因为这样就能降低网络阻塞的影响,提高系统数据的吞吐量。将计算移动到数据附近,比将数据移动到应用所在位置显然更好。HDFS提供了将应用移动到数据附近的接口。5.异构软硬件 平台间的可移植性
HDFS在设计的时候就考虑到平台的可移植性,这种特性方便了HDFS作为大规模数据应用平台的推广。 -
HDFS 的组件
HDFS包含Namenode、Datanode、 Secondary Namenode三个组件。
1.NameNode
NameNode负责管理文件目录、文件和block的对应关系以及block和datanode的对应关系。NameNode节点也成为元数据节点,用来管理文件系统的命名空间,维护目录树,接管用户的请求。
(1) 将文件的元数据保存在一个文件目录树中
(2) 在磁盘上保存为:fsimage 和 edits
(3) 保存datanod