图1-14展示了hadoop系统的分布式存储和并行计算构架。从硬件体系结构上看,Hadoop系统是一个运行于普通的商用服务器集群的分布式存储和并行计算系统。集群中将有一个主控节点用来控制和管理整个集群的正常运行,并协调管理集群中各个从节点完成数据存储和计算任务。每个从节点将同时担任数据存储节点和数据计算节点两种角色,这样设计的目的主要是在大数据环境下实现尽可能的本地化计算,以此提高系统的处理性能。为了能及时检测和发现集群中某个从节点发生故障失效,主控节点采用心跳机制(Heartbeat)定期检测从节点,如果从节点不能有效回应心跳信息,则系统认为这个从节点失效。
从软件系统角度看,Hadoop系统包括分布式存储和并行计算两个部分。分布式存储构架上,Hadoop基于每个从节点上的本地文件系统,构建一个逻辑上整体化的分布式文件系统,以此提供大规模可扩展的分布式数据存储功能,这个分布式文件系统称为HDFS(Hadoop Distributed File System),其中,负责控制和管理整个分布式文件系统的主控节点称为NameNode,而每个具体负责数据存储的从节点称为DataNode。
进一步,为了能对存储在HDFS中的大规模数据进行并行化的计算处理,Hadoop又提供了一个称为MapReduce的并行化计算框架。该框架能有效管理和调度整个集群中的节点来完成并行化程序的执行和数据处理,并能让每个从节点尽可能对本地节点上的数据进行本地化计算,其中,负责管理和调度整个集群进行计算的主控节点称为JobTracker,而每个负责具体的数据计算的从节点称为TaskTracker。JobTracker可以与负责管理数据存储的主控节点NameNode设置在同一个物理的主控服务器上,在系统规模较大、各自负载较重时两者也可以分开设置。但数据存储节点DataNode 与计算节点TaskTracker会配对地设置在同一个物理的从节点服务器上。
Hadoop系统中的其他子系统,例如HBase、Hive等,将建立在上述HDFS分布式文件系统和MapReduce并行化计算框架之上。