1.6 HDFS和MapReduce架构
由于HDFS和MapReduce是Hadoop框架的两个主要特征,我们将专注于它们。先从HDFS开始。
1.6.1 HDFS架构
HDFS是主从架构。主HDFS命名为名称节点(NameNode),而从HDFS命名为数据节点(DataNode)。名称节点是一个管理文件系统命名空间和调整客户端文件访问(开启、关闭、重命名及其他操作)的服务器。它将输入数据分块并且公布存储在各个数据节点上的数据。数据节点是一个从装置,它存储分区数据集的副本并且收到请求时提供数据。它还进行块的创建和删除。
HDFS的内部机理可将文件划分为一个或多个块,这些块储存在一系列数据节点中。在一般情况下,需备份3个复件,HDFS将第一个复件保存在本地节点中,第二个保存在本地另一个节点的磁道中,第3个复件保存在其他节点的磁道中。HDFS支持大文件,它的块容量为64MB,根据需求,可以进行扩充。
HDFS组件
HDFS使用主从架构进行管理,包括以下组件:
名称节点(NameNode):这是HDFS的主干。它维护目录、文件以及管理在数据节点上的块。
数据节点(DataNode):这些是被部署在每台机器上并且提供实际存储的从动装置。它们负责为客户提供读写数据的服务。
代理主节点(Secondary NameNode):它负责周期性检查中断点,如果主节点突然中断,可由储存在代理主节点中的中断点镜像来代替。
1.6.2 MapReduce架构
MapReduce也采用主从架构,典型的MapReduce 包含作业提交、作业的初始化、任务分配、任务执行、进度和状态更新,以及作业完成相关的活动,这主要是由JobTracker节点管理和TaskTracker节点执行。客户端应用程序提交作业给JobTracker,然后在整个集群中划分输入,JobTracker再计算要处理的Map和Reduce执行单元的数量,并命令TaskTracker开始执行该作业。TaskTracker必须复制资源到本地计算机,并启动JVM对数据进行Map和Reduce操作。与此同时,TaskTracker必须周期性地发送更新信息给JobTracker,这称为心跳(heartbeat),用于帮助更新作业ID、作业状态和资源使用情况。
MapReduce组件
MapReduce是由包含以下几部分的主从架构管理的:
JobTracker:它是MapReduce系统的主机节点,管理着集群中的作业及资源。JobTracker规划好每个Map,使TaskTracker中实际正在被处理的数据同Map尽量接近,正运行该数据节点的TaskTracker作业优先执行。
TaskTracker:这些都是部署在每台机器上的客户机节点。它们负责由JobTracker分配的Map和Reduce作业。
1.6.3 通过图示了解HDFS和MapReduce架构
在下图中,NameNode和DataNode在HDFS上,JobTracker和TaskTracker在MapReduce范式中,HDFS和MapReduce主服务器和从服务器部件也包括其中。
本图包含了HDFS和MapReduce的主从组件,其中名称节点和数据节点来自HDFS,JobTracker和TaskTracker来自MapReduce。
两个示例都是由主从组件构成的,在控制MapReduce和HDFS的操作中各有分工。在该图中包括两个部分:前一个是MapReduce层,后一个是HDFS层。
Hadoop是一个Apache的顶级项目,也是一个非常复杂的Java框架。为避免技术上的复杂性,Hadoop社区中已开发了许多Java框架,丰富了其额外的功能,本书中将它们视为Hadoop的子项目。在这里,我们将分别讨论Hadoop的组件,它们是HDFS或MapReduce的抽象层。