HDFS(Hadoop Distributed File System)作为Hadoop下的一个子项目,是目前使用极为广泛的分布式文件系统。它的设计目的是提供一个高容错,且能部署在廉价硬件的分布式系统;同时,它能支持高吞吐量,适合大规模数据集应用。这一目标可以看做是HDFS的架构目标。显然,这样的架构设计主要还是满足系统的质量属性,包括如何保证分布式存储的可靠性,如何很好地支持硬件的水平扩展,如何支持对大数据处理的高性能以及客户端请求的高吞吐量。所以,HDFS的架构设计颇有参考价值,在Hadoop的Apache官方网站上也给出了HDFS的架构指南。在The Architecture of Open Source Applications卷I的第8章也详细介绍了HDFS的架构。
HDFS的高层设计看起来很简单,主要包含NameNode与DataNode,它们之间的通信,包括客户端与HDFS NameNode服务器的通信则基于TCP/IP。客户端通过一个可配置的TCP端口连接到NameNode,通过ClientProtocol协议与NameNode交互。而DataNode使用DatanodeProtocol协议与NameNode交互。一个远程过程调用(RPC)模型被抽象出来封装ClientProtocol和Datanodeprotocol协议。