Hadoop大数据开发案例教程与项目实战(在线实验+在线自测)
上QQ阅读APP看书,第一时间看更新

1.6 Hadoop体系架构

Hadoop 是实现了分布并行处理任务的系统框架,Hadoop 的核心组成是 HDFS 和MapReduce两个子系统,能够自动完成大任务计算和大数据存储的分割工作。随着Hadoop近几年的发展,现在Hadoop已经包括很多项目,可以称为Hadoop的子集。很多Hadoop相关的生态项目也应运而生,例如Common、Yarn、Avro、Chukwa、Hive、Hbase、Zookeeper等。这些生态工具对Hadoop的核心起到了良好的补充作用。

HDFS系统是Hadoop的存储系统,能够实现创建文件、删除文件、移动文件等功能,操作的数据主要是要处理的原始数据以及计算过程中的中间数据,实现高吞吐率的数据读写。MapReduce系统是一个分布式计算框架,主要任务就是能够利用廉价的计算机对海量数据进行分解处理。

1.6.1 HDFS体系结构

HDFS和MapReduce是Hadoop的两大核心。而实际上Hadoop的体系结构主要是通过HDFS来实现对分布式存储的底层支持的,并且它会通过MapReduce来实现对分布式并行任务处理的程序支持。

HDFS的体系结构,采用主从(Master/Slave)结构模型(见图1-3),一个HDFS集群是由一个NameNode若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作。集群中的DataNode管理存储的数据。当文件进行存储时,文件会被分割成若干个数据块,并且这些数据块会被存放在集群中的各个DataNode节点上。NameNode执行文件系统的命名空间操作,比如打开、关闭、重命名文件或目录等,负责数据块到具体DataNode上的映射。DataNode负责处理文件系统客户端的文件读写请求,并在 NameNode 的统一调度下进行数据块的创建、删除和复制工作。NameNode 和 DataNode 都被设计成可以在普通计算机上运行。这些计算机通常运行的是GNU/Linux操作系统。一个典型的部署场景是集群中的一台机器运行一个NameNode实例,其他机器分别运行一个DataNode实例。NameNode是所有HDFS元数据的管理者,用户数据永远不会存储到NameNode上。

图1-3 HDFS的体系结构

1.6.2 MapReduce体系结构

MapReduce是一种并行编程模式,这种模式使得软件开发者可以轻松地编写出分布式并行程序。在 Hadoop 的体系结构中,MapReduce 是一个简单易用的软件框架,基于它可以将任务分发到由上千台商用机器组成的集群上,并以一种高容错的方式并行处理大量的数据集,实现Hadoop的并行任务处理功能。在早期的MapReduce框架中,主要是由一个单独运行在主节点上的JobTracker进程和运行在每个集群从节点上的TaskTracker进程共同组成的(见图1-4)。主节点JobTracker负责调度构成一个作业的所有任务,这些任务分布在不同的从节点TaskTracker上。主节点通过心跳机制(心跳,主从节点的通信时间间隔)监控它们的执行情况,并且重新执行之前失败的任务;从节点仅负责由主节点指派的任务。当一个Job被Client提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。后来MapReduce的体系结构略有变化,实际上原理还是一致的。

图1-4 MapReduce体系结构

也就是说,HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现了分布式文件系统,MapReduce 在集群上实现了分布式计算和任务处理。HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。