Java笔记 ·

Hadoop HDFS简介

HDFS是一种设计用于在通用硬件(commodity hardware)上运行的分布式文件系统。最初是作为Apache Nutch网络搜索引擎项目的基础设施而构建的。

  • HDFS具有高度容错能力,旨在部署在低成本硬件上。

  • HDFS提供对应用程序数据的高吞吐量访问,适用于具有大型数据集的应用程序。

  • HDFS放宽了一些POSIX要求,以实现对文件系统数据的流式访问。

HDFS架构

图1-HDFS架构

HDFS采用master/slave架构,并具有以下元素:

NameNode

NameNode是一个中心服务器,负责:

  • 管理文件系统的名字空间(namespace)

  • 客户端对文件的访问

Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体Datanode节点的映射。

DataNode

集群中的Datanode一般是一个节点一个,负责管理它所在节点上的存储:

  • Datanode负责处理文件系统客户端的读写请求。

  • 在Namenode的统一调度下进行数据块的创建、删除和复制。

Block

用户的数据以文件的形式存储在HDFS的文件系统中。 从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组DataNode上,每个块尽可能地存储于不同的DataNode中。之前1.x默认大小为64M,2.8.5的默认大小已经是128M。

Rack

可简单理解为存放服务器的支架。

HDFS采用一种称为机架感知(rack-aware)的策略来改进数据的可靠性、可用性和网络带宽的利用率。

HDFS中的文件是一次写入的(除了追加和截断),并且在任何时候都有一个写入器,亦即一次写入多次读取。

NameNode它定期从群集中的每个DataNode接收Heartbeat和Blockreport。收到Heartbeat意味着DataNode正常运行。Blockreport包含DataNode上所有块的列表。

参与评论