Hadoop Distributed File System 简介

文章来源:未知     责任编辑:武汉软件工程职业学院    时间:2017-03-03  点击数:

Hadoop Distributed File System简介

Hadoop Distributed File System (HDFS)是Apache Hadoop项目的一个子项目,它是一个高度容错的分布式文件系统,设计用于在低成本硬件上运行。HDFS提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。HDFS允许您连接多个集群中包含的节点,那些集群上分布着一些数据文件。然后您可以将那些数据文件作为一个无缝文件系统来进行访问和存储。对数据文件的访问通过一种流线型方式进行处理,这意味着应用程序或命令通过MapReduce处理模型直接执行。

HDFS概览

HDFS与其他分布式文件系统有许多相似点,但也有几个不同点。一个明显的区别是HDFS的“一次写入、多次读取(write-once-read-many)”模型,该模型降低了并发性控制要求,简化了数据聚合性,支持高吞吐量访问。

HDFS的另一个独特的特性是下面这个观点:将处理逻辑放置到数据附近通常比将数据移向应用程序空间更好。

HDFS将数据写入严格限制为一次一个写入程序。字节总是被附加到一个流的末尾,字节流总是以写入顺序存储。

HDFS有许多特性,下面是一些最明显的特性:

l 通过检测故障和应用快速、自动的恢复实现容错性

l 通过MapReduce流进行数据访问

l 简单可靠的聚合模型

l 处理逻辑接近数据,而不是数据接近处理逻辑

l 跨异构普通硬件和操作系统的可移植性

l 可靠存储和处理大量数据的可伸缩性

l 通过跨多个普通个人计算机集群分布数据和处理来节约成本

l 通过分布数据和逻辑到数据所在的多个节点上进行平行处理来提高效率

l 通过自动维护多个数据副本和在故障发生时自动重新部署处理逻辑来实现可靠性

HDFS架构

HDFS由一些互联的节点集群组成,文件和目录驻留在那些节点上。一个HDFS集群包含一个节点,称为NameNode,该节点管理文件系统名称空间并规范客户端对文件的访问。另外,DataNode将数据作为块存储在文件中。

在HDFS中,一个给定的NameNode管理文件系统操作,比如打开、关闭以及重命名文件和目录。NameNode还将数据块映射到DataNode,处理来自HDFS客户端的读写请求。DataNode还根据NameNode的指令创建、删除和复制数据块。图1展示了HDFS的高级架构。

IMG_256

图1HDFS架构

如图1所示,NameNode和DataNode是一些软件组件,旨在以一种解耦合方式跨多个异构操作系统在普通的PC机上运行。HDFS是使用Java编程语言构建的;因此任何支持Java编程语言的机器都能运行HDFS。一个典型的安装集群拥有一台专用机器,用于运行一个NameNode,可能还有一个DataNode。集群中的其他每台机器都运行一个DataNode。

DataNode持续循环,询问NameNode的指令。每个DataNode都维护一个开放的服务器套接字,以便客户端代码或其他DataNode能够读写数据。NameNode知道这个服务器的主机或端口,将信息提供给有关客户端或其他DataNode。

数据存储可靠性

HDFS的一个重要目标是可靠存储数据,即使在NameNode、DataNode或网络分区中出现故障。

HDFS克服故障的第一个步骤是探测。HDFS使用心跳消息来探测NameNode和DataNode之间的连通性。

有几种情况可能会导致NameNode和DataNode之间的连通性丧失。因此,每个DataNode都向它的NameNode发送定期心跳消息,这样,如果NameNode不能接收心跳消息,就表明连通性丧失。NameNode将不能响应心跳消息的DataNode标记为“死DataNode ”,并不再向它们发送请求。存储在一个死节点上的数据不再对那个节点的HDFS客户端可用,该节点将被从系统有效地移除。如果一个节点的死亡导致数据块的复制因子降至最小值之下,NameNode将启动附加复制,将复制因子带回正常状态。图2展示了发送心跳消息的HDFS流程。

IMG_256

图2HDFS心跳流程

结语

Hadoop是一个Apache Software Foundation分布式文件系统和数据管理项目,目标是存储和管理大量数据。Hadoop使用一个名为HDFS的存储系统来连接一些普通个人计算机(称为节点),这些节点包含在其上分布着大量数据块的多个集群中。通过MapReduce处理模型,您可以将那些数据块作为一个无缝文件系统进行访问和存储。

HDFS与其他分布式文件系统有许多共同点,但也有一些重要区别。一个重要区别是HDFS的“一次写入、多次读取”模型,该模型降低了并发性控制要求,简化了数据聚合性,支持高吞吐量访问。

为了提供一个优化的数据访问模型,HDFS的设计思想是将处理逻辑放置到数据附近,而不是将数据放置到应用程序空间附加。

Copyright 2018 武汉软件工程职业学院 版权所有 All Rights Reserved

学院地址:武汉市东湖新技术开发区光谷大道117号 邮编:430205 邮箱:whvcse@whvcse.edu.cn

鄂公网安备42018502001188号  鄂ICP备11010169号-2