HDFS 架构

来源:互联网 发布:在淘宝退款卖家不同意 编辑:程序博客网 时间:2024/05/20 07:51

HDFS是一个被设计运行在商用存储硬件上的分布式文件系统。有着很多跟现在存在的文件存储系统相似的地方,但也有一些相比其他系统独特重要的地方。它支持高容错性和能部署在低端磁盘硬件。它非常适合大规模的数据并且支持高吞吐量的应用数据访问。HDFS放弃了一些POSIX的要求以致使用流操作访问文件系统的数据。HDFS起初是apache nutchweb网络搜索引擎项目的基础建设。

假设和目标
硬盘容错

流数据访问

支持大数据集

简单的内聚模式

移动计算比移动数据跟低耗

能在多种硬件和软件平台上移植

NameNode和DataNode
HDFS是一个master/slave架构。一个HDFS集群由一个NameNode组成,一个用来管理文件系统命名空间和让客户端控制文件访问的主服务。除此之外,还有一些DataNode,通常每个节点有一个,用来管理附属运行在节点上的存储设备。HDFS提供命名空间提供给用户存储数据。本质上,一个文件被分成一个或者多个block来存储在不同的DataNode上。namenode使用命名空间操作来打开、关闭和重名字、目录。这也决定了系统block在datanode中的映射关系。DataNode是负责处理来自客户端的读取和写入请求,同时也执行在namenode上的block的创建、删除和复制。
namenode和datanode都是被设计运行在通用机器上的软件,但通常都运行在linux操作系统上。它们都是用java语言编写的软件,所以任何能运行java的机器都可以运行这两款软件。

Hardware failure
硬件失效是常态而不是异常。一个HDFS实例可以有成百上千个服务器构成,每个服务器都存储一部分文件系统数据。事实上一个HDFS都有着大量的存储节点,每个节点都有一定的概率会失效这就导致HDFS的一部分功能失效。因此,错误检测、快速的错误定位和恢复是HDFS的设计核心目标。

streaming data access
一个运行在HDFS上的应用需要使用流操作来访问它们的数据。并不是所有的应用都需要用这样的方式来访问文件系统。hdfs设计的目标是批处理而不是关注用户交互,它更强调的是高吞吐量的访问数据而不是低延迟。

Large data sets
运行在hdfs上的应用都有大规模的数据,典型的hdfs上的一个文件都有g或者t大小。它应该提供高带宽并扩展到一个集群的全部节点中。一个hdfs实例应该能之前千万记得文件。

Simple Coherency Model
一个文件一旦被创建、写入和关闭之后,除了追加和删段之外就不允许在改动。在一个文件的末尾追加文本而不允许在任意节点改动,这个假设简化了数据一致性问题和支持高吞吐量的访问。这很适合爬虫和mapreducer应用。

Moving Computation is Cheaper than Moving Data
一个应用的计算需求在数据集的负责继续执行会比较高效。当数据更大规模的时候回更高效,这可以最下化网络的拥堵和提高系统的吞吐量。这使得当要执行计算时移动计算的节点要比移动数据更好。hdfs提供了接口来使计算移动到距离数据更近的节点之上。

Portability Across Heterogeneous Hardware and Software Platforms
hdfs被设计成可以很容易的从一个平台移动到另一个平台。这使得hdfs能成为一个广泛应用的大数据平台

原创粉丝点击