Hadoop (2.x系列以后)框架主要由四个模块组成,这些组件共同构成了Hadoop的核心架构,使得Hadoop能够处理大规模数据集的存储和计算需求。
- Hadoop Distributed File System (HDFS):作为 Hadoop 生态系统的主要组件,HDFS 是一个分布式文件系统,有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
- Yet Another Resource Negotiator (YARN):YARN 是一个资源管理平台,负责管理集群中的计算资源并使用它们来调度用户的应用。它在整个 Hadoop 系统上执行调度和资源分配。
- MapReduce:MapReduce 是一个用于大规模数据处理的编程模型。通过使用分布式和并行计算算法,MapReduce 可以沿用处理逻辑,并帮助编写将大型数据集转换为可管理数据集的应用。它一般部署在HDFS之上(当然也可以部署在其他分布式文件系统上,如S3)。
- Hadoop Common:Hadoop Common 包括其他Hadoop 模块使用和共享的库和实用程序。
1. HDFS核心组件
HDFS有三个核心组件,分别是NameNode,secondary NameNode,DataNode。
- NameNode(nn):处理客户端读写请求,存储文件的元数据,如文件名,文件目录结构,生成时间,副本数,文件权限,以及每个文件的块列表和块所在的DataNode等。
- DataNode(dn):存数实际的数据块并执行数据块的读写操作。
- secondary NameNode(2nn):每隔一段时间对NameNode做元数据备份。
2. Yarn核心组件
YARN有四个核心的组件,ResourceManager(资源管理器),NodeManager(节点管理器),ApplicationMaster(任务管理器),container(容器)。
- ResourceManager(rm):负责集群所有资源的监控、分配和管理。
- NodeManager(nm):负责单个节点的维护,一个集群有多个。
- ApplicationMaster(am):负责单个应用程序的调度和协调。
- Container:虚拟的资源容器,封装了任务所需的资源,如内存,CPU等。
3. MapReduce核心组件
MR一个分布式的离线并行计算框架,程序代码,没有对应的部署组件。
4. Hadoop通用模块(Common)
支持其他模块的工具模块(Configuration、RPC、序列化机制、日志操作)