HDFS和MapReduce是Hadoop的核心,整个Hadoop的体系结构主要是通过HDFS来实现 分布式存储底层支持的,并且它会通过MapReduce来实现分布式并行任务处理的程序支持。
首先介绍下HDFS的体系结构:HDFS采用了主从(master/slave)结构模型,一个HDFS集群是由一个namenode和若干datanode组成。其中namenode作为主服务器,管理文件系统命名空间和客户端对文件的访问操作;集群中的datanode管理存储的数据。HDFS允许用户以文件的形式存储数据。从内部来看,文件被分为若干个数据块,而且这若干个数据块存放在一组datanode上,namenode执行文件系统的命名空间操作,比如打开、关闭、重命名文件或目录等,也负责数据块到具体datanode的映射。datanode负责处理文件系统客户端的文件读写请求,并在namenode的统一调度下进行数据块的创建、删除和复制工作。
MapReduce体系结构:MapReduce是一种并行编程模式,利用这种模式软件开发者可以轻松地写出分布式并行程序。在Hadoop的体系结构中,MapReduce是一个简单易用的软件框架,基于它可以将任务分发到由上千台商用机器组成的集群上,并以一种可靠容错的方式并行处理大量的数据集,实现Hadoop的并行任务处理功能。
MapReduce框架是由一个单独运行在主节点的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控他们的执行情况,并且重新执行之前失败的任务;从节点仅负责由主节点指派的任务。当一个Job被提交时,JobTracker接收到提交作业和其配置信息后,就会将配置信息等分发给从节点,同时调度任务监控TaskTracker的执行。
HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现了分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFS在MapReduce任务处理过程中提供对文件操作和存储的支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成Hadoop分布式集群主要任务。