HDFS简介
HDFS是Hadoop分布式文件系统,是Apache Hadoop Core项目的一部分。设计用于在廉价的硬件上远行,具有高度容错,高吞吐量适用于大数据集的应用程序。HDFS放宽了一些POSIX的要求,以实现对文件系统的流式访问。 HDFS的核心架构的目标
硬件故障是无法避免的。HDFS实例可能由数百或前台服务器组成。每台服务器存储文件系统数据的一部分,有大量的组件,而且每个组件都有一定的故障率。因此,故障检测和快速,自动恢复是HDFS的核心架构的目标 简单一致性
HDFS是一次写多次读的访问模型。对文件的操作有创建,写入和关闭。不能在任意点更新文件但支持将内容追加到文件的末尾。可以追加和截断文件。这简化了数据一致性问题并且支持高吞吐量的数据访问。MapReduce应用程序或Web爬虫非常适合这个模式 。
移动计算
如果应用程序请求的的计算在其操作数据的附近,那么计算的效率就会提高好多。当数据集很多时更是如此。而且会最小化网络堵塞,提高系统的整体吞吐量。将计算迁移到离数据更近的地方比将数据迁移到计算运行的地方更好。HDFS为应用程序提供了这样的API,使计算更接近数据所在的位置。
可移植性
将HDFS从一个平台迁移到另外一个平台是非常方便的。
NameNode and DataNode
HDFS是Master/Slave架构,HDFS群集由单个NameNode和多个DataNode组成。后面的在深入NameNode HA的时候会介绍到Secondary NameNode。
NameNode,是HDFS的主节点和中心节点。它管理文件系统的命名空间和客户端对文件的访问,执行文件系统命名空间的操作如文件的打开,关闭,文件的重命名和目录的管理,确定块到DataNode的映射,保存文件系统中所有文件的目录树以及文件和目录的元数据。元数据包含完整的文件名,最后访问时间,最后修改时间,访问权限,块的划分,文件的复制级别等。元数据存储在fsImage和edit log两个文件中。
DataNode存储文件的块数据。在HDFS中文件会被分成一个或多个块,这些块操作在一组DataNode中。DataNode负责客户端的读写请求,还根据NameNode的指令执行对块的创建,删除和复制。架构如下图:

后续会详细分析NameNode和DataNode以及它们的通信机制。
微信公众号同步
