《Hadoop实战第2版》——1.3节Hadoop体系结构

1.3 Hadoop体系结构
如上文所说,HDFS和MapReduce是Hadoop的两大核心。而整个Hadoop的体系结构主要是通过HDFS来实现分布式存储的底层支持的,并且它会通过MapReduce来实现分布式并行任务处理的程序支持。
下面首先介绍HDFS的体系结构。HDFS采用了主从(Master/Slave)结构模型,一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问操作;集群中的DataNode管理存储的数据。HDFS允许用户以文件的形式存储数据。从内部来看,文件被分成若干个数据块,而且这若干个数据块存放在一组DataNode上。NameNode执行文件系统的命名空间操作,比如打开、关闭、重命名文件或目录等,它也负责数据块到具体DataNode的映射。DataNode负责处理文件系统客户端的文件读写请求,并在NameNode的统一调度下进行数据块的创建、删除和复制工作。图1-3所示为HDFS的体系结构。

NameNode和DataNode都可以在普通商用计算机上运行。这些计算机通常运行的是GNU/Linux操作系统。HDFS采用Java语言开发,因此任何支持Java的机器都可以部署NameNode和DataNode。一个典型的部署场景是集群中的一台机器运行一个NameNode实例,其他机器分别运行一个DataNode实例。当然,并不排除一台机器运行多个DataNode实例的情况。集群中单一NameNode的设计大大简化了系统的架构。NameNode是所有HDFS元数据的管理者,用户需要保存的数据不会经过NameNode,而是直接流向存储数据的DataNode。
接下来介绍MapReduce的体系结构。MapReduce是一种并行编程模式,利用这种模式软件开发者可以轻松地编写出分布式并行程序。在Hadoop的体系结构中,MapReduce是一个简单易用的软件框架,基于它可以将任务分发到由上千台商用机器组成的集群上,并以一种可靠容错的方式并行处理大量的数据集,实现Hadoop的并行任务处理功能。MapReduce框架是由一个单独运行在主节点的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前失败的任务;从节点仅负责由主节点指派的任务。当一个Job被提交时,JobTracker接收到提交作业和其配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。
从上面的介绍可以看出,HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现了分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFS在MapReduce任务处理过程中提供了对文件操作和存储等的支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。

时间: 2024-10-30 15:29:37

《Hadoop实战第2版》——1.3节Hadoop体系结构的相关文章

《Hadoop实战第2版》——2.1节在Linux上安装与配置Hadoop

2.1 在Linux上安装与配置Hadoop 在Linux上安装Hadoop之前,需要先安装两个程序: 1)JDK 1.6(或更高版本).Hadoop是用Java编写的程序,Hadoop的编译及MapReduce的运行都需要使用JDK.因此在安装Hadoop前,必须安装JDK 1.6或更高版本. 2)SSH(安全外壳协议),推荐安装OpenSSH.Hadoop需要通过SSH来启动Slave列表中各台主机的守护进程,因此SSH也是必须安装的,即使是安装伪分布式版本(因为Hadoop并没有区分开集群

《Hadoop实战第2版》——1.2节Hadoop项目及其结构

1.2 Hadoop项目及其结构 现在Hadoop已经发展成为包含很多项目的集合.虽然其核心内容是MapReduce和Hadoop分布式文件系统,但与Hadoop相关的Common.Avro.Chukwa.Hive.HBase等项目也是不可或缺的.它们提供了互补性服务或在核心层上提供了更高层的服务.图1-1是Hadoop的项目结构图. 下面将对Hadoop的各个关联项目进行更详细的介绍. 1)Common:Common是为Hadoop其他子项目提供支持的常用工具,它主要包括FileSystem.

《Hadoop实战第2版》——3.4节Hadoop流

3.4 Hadoop流 Hadoop流提供了一个API,允许用户使用任何脚本语言写Map函数或Reduce函数.Hadoop流的关键是,它使用UNIX标准流作为程序与Hadoop之间的接口.因此,任何程序只要可以从标准输入流中读取数据并且可以写入数据到标准输出流,那么就可以通过Hadoop流使用其他语言编写MapReduce程序的Map函数或Reduce函数.举个最简单的例子(本例的运行环境:Ubuntu,Hadoop-0.20.2): bin/hadoop jar contrib/stream

《Hadoop实战第2版》——1.1节什么是Hadoop

1.1 什么是Hadoop 1.1.1 Hadoop概述 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构.HDFS的高容错性.高伸缩性等优点允许用户将Hadoop部署在低廉的硬件上,形成分布式系统:MapReduce分布式编程模型允许用户在不了解分

《Hadoop实战第2版》——1.7节Hadoop集群安全策略

1.7 Hadoop集群安全策略众所周知,Hadoop的优势在于其能够将廉价的普通PC组织成能够高效稳定处理事务的大型集群,企业正是利用这一特点来构架Hadoop集群.获取海量数据的高效处理能力的.但是,Hadoop集群搭建起来后如何保证它安全稳定地运行呢?旧版本的Hadoop中没有完善的安全策略,导致Hadoop集群面临很多风险,例如,用户可以以任何身份访问HDFS或MapReduce集群,可以在Hadoop集群上运行自己的代码来冒充Hadoop集群的服务,任何未被授权的用户都可以访问Data

《Hadoop实战第2版》——1.8节本章小结

1.8 本章小结本章首先介绍了Hadoop分布式计算平台:它是由Apache软件基金会开发的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构.由于Hadoop拥有可计量.成本低.高效.可信等突出特点,基于Hadoop的应用已经遍地开花,尤其是在互联网领域.本章接下来介绍了Hadoop项目及其结构,现在Hadoop已经发展成为一个包含多个子项目的集合,被

《Hadoop实战第2版》——2.6节本章小结

2.6 本章小结本章主要讲解了Hadoop的安装和配置过程.Hadoop的安装过程并不复杂,基本配置也简单明了,其中有几个关键点: Hadoop主要是用Java语言写的,它无法使用一般Linux预装的OpenJDK,因此在安装Hadoop前要先安装JDK(版本要在1.6以上): 作为分布式系统,Hadoop需要通过SSH的方式启动处于slave上的程序,因此必须安装和配置SSH.由此可见,在安装Hadoop前需要安装JDK及SSH.Hadoop在Mac OS X上的安装与Linux雷同,在Win

《Hadoop实战手册》一1.2 使用Hadoop shell命令导入和导出数据到HDFS

1.2 使用Hadoop shell命令导入和导出数据到HDFS HDFS提供了许多shell命令来实现访问文件系统的功能,这些命令都是构建在HDFS FileSystem API之上的.Hadoop自带的shell脚本是通过命令行来执行所有操作的.这个脚本的名称叫做hadoop,通常安装在$HADOOP_BIN目录下,其中$HADOOP_BIN是Hadoopbin文件完整的安装目录,同时有必要将$HADOOP_BIN配置到$PATH环境变量中,这样所有的命令都可以通过hadoop fs -co

《Hadoop实战手册》一第1章 Hadoop分布式文件系统——导入和导出数据

第1章 Hadoop分布式文件系统--导入和导出数据 Hadoop实战手册 本章我们将介绍: 使用Hadoop shell命令导入和导出数据到HDFS 使用distcp实现集群间数据复制 使用Sqoop从MySQL数据库导入数据到HDFS 使用Sqoop从HDFS导出数据到MySQL 配置Sqoop以支持SQL Server 从HDFS导出数据到MongoDB 从MongoDB导入数据到HDFS 使用Pig从HDFS导出数据到MongoDB 在Greenplum外部表中使用HDFS 利用Flum